PyLoad

Aus Synology Wiki
Wechseln zu: Navigation, Suche
Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden
Diese Seite ist unvollständig oder wird noch erstellt.

Notizen: Hier sind drei Installationsarten beschrieben: Das SPK, über IPKG, und manuell; außerdem sind die beiden letzteren auch noch zusammengewurschelt. Außerdem ist nicht klar, ob der Reconnect-Teil auch bei SPK-Installation nötig ist; wenn ja, sollte er vom IPKG-Zweig getrennt werden. --EL Duderino 23:20, 4. Feb. 2014 (CET)

pyLoad ist ein Download-Manager für One-Click-Hoster, DLC Container, Videoseiten und HTTP/FTP Links.

pyLoad über das Paketzentrum installieren

PyLoad kann auch als 3rd-Party-App ohne IPKG installiert werden. Die Installation erfolgt über die Paketquelle http://spk.unzureichende.info/ im Paketzentrum ab DSM 3.2.

Für folgende Modelle gibt es derzeit (Stand: Jänner 2014) vorgefertigte SPK Pakete:

Familie Paket Reihe Architektur DiskStation RackStation Beitrag im Forum
PowerPC MPC85xx

PowerCUICC III

x08 ppc854x DS408 DS508 RS408(RP) pyLoad 0.4.9 .spk (mpc85xx)
x09 ppc853x DS109+ DS209+(II) DS409+ DS509+ RS409(RP)+
x10 DS110+ DS210+ DS410
QorIQ x13 qoriq DS213+ DS413 pyLoad 0.4.9 .spk (qoriq)
ARM Kirkwood x09 88f6281 DS109 DS209 DS409 DS409slim RS409 pyLoad 0.4.9 .spk (armv5tejl)
x10 DS110j DS410j DS210j
x11 88f628x

88fr131

DS111 DS211j DS211 DS211+ DS411 DS411j DS411slim RS411
x12 DS112+ DS112j DS112 DS212j DS212 DS212+ RS212 RS812
x13 88f6282 DS213air DS213 DS413j
Armada x13 armada370

armadaxp

DS213j pyLoad 0.4.9 .spk (armv7l)
x14 DS114 DS214se DS214 DS214+ DS414 RS214
x86 x86 x10 x86 DS710+ DS1010+ RS810(RP)+ pyLoad 0.4.9 .spk (x86)
x11 x86

bromolow

cedarview

DS411+(II) DS1511+ DS2411+ DS3611xs RS2211(RP)+ RS3411(RP)xs
x12 DS412+ DS712+ DS1512+ DS1812+ DS3612xs RS812(RP)+ RS2212(RP)+ RS3412(RP)xs
x13 DS1513+ DS1813+ DS713+ DS2413+ RS3413xs+ RS10613xs+
x14 evansport

cedarview

DS214play RS814(RP)+ RS3614xs+


Debugging

pyLoad Sources: /var/packages/pyload/target/pyload/

pyLoad Config: /var/packages/pyload/target/var/config/

pyLoad Log: /var/packages/pyload/target/var/config/Logs/log.txt


Manueller Start als root:

/var/packages/pyload/scripts/start-stop-status stop # optional, falls nicht im Paketzentrum angehalten
. /var/packages/pyload/target/bin/import-environment 
su pyload -s /bin/sh -c 'python /var/packages/pyload/target/pyload/pyLoadCore.py --help'

Admin Passwort zurücksetzen:

NEWPASSWORD="newexamplepassword"
. /var/packages/pyload/target/bin/import-environment
PWDSALT=$(</dev/urandom tr -dc 0-9 | dd bs=5 count=1) 2>/dev/null
PWDHASH=`echo -n "${PWDSALT}${NEWPASSWORD}" | openssl dgst -sha1 | cut -d\  -f2`
sqlite3 /var/packages/pyload/target/var/config/files.db "UPDATE users SET password=\"${PWDSALT}${PWDHASH}\" WHERE name=\"admin\";"
unset NEWPASSWORD PWDSALT PWDHASH

Oder pyLoadCore.py -u manuell aufrufen, siehe manueller Start.

pyLoad Installation mit IPKG

Vorbereitung:

  • Zugriff auf das NAS per Kommandozeile muss aktiviert sein
  • IPKG muss installiert sein, am besten mit der erweiterten Startup/Shutdown Variante


Die nötigen Installationsschritte sind einem Beitrag im englischen QNAP-Forum entnommen.

Zugriff auf das NAS per Kommandozeile

Benötigte Tools installieren

ipkg install screen nano wget unzip unrar psmisc

Python und Abhängigkeiten installieren

ipkg install python py25-crypto py25-curl libcurl py25-openssl py25-django py25-pil tesseract-ocr tesseract-ocr-lang-eng ossp-js

pyLoad herunterladen

0.4.9 ist die aktuelle Version (Stand 16.01.2014)

cd /opt
wget http://get.pyload.org/get/src/0.4.9/
unzip pyload-src-v0.4.9.zip
rm pyload-src-v0.4.9.zip
cd pyload/

Anmerkung: Mitlerweile steht Pyload auch als ipkg Packet bereit die Installation sieht dann wie folgt aus:

pyLoad wird unter /opt installiert, bitte prüfe zuerst ob das auch dein IPKG Installationspfad ist.

ipkg install wget tesseract-ocr tesseract-ocr-lang-eng ossp-js unrar
wget http://get.pyload.org/static/pyload-v0.4.9-noarch.ipk
ipkg install pyload-v0.4.9-noarch.ipk
pyLoadCore -s [Für das Setup, kopiere nicht diese Nachricht in Klammern!] 

Konfiguration

Das Konfigurationsverzeichnis (hier werden auch die Downloads gespeichert) sollte geändert werden, z.B. /volume1/pyload

cd module/config/
echo "/volume1/pyload" >> configdir

pyLoad ausführbar machen

chmod +x /opt/pyload/pyLoadCore.py

pyLoad starten

python /opt/pyload/pyLoadCore.py

Beim ersten Aufruf erscheint der Konfigurations-Assistent, die Einrichtung ist relativ selbsterklärend und gut beschrieben.

Eine möglichkeit PyLoad starten zu lassen ist mit screen pyLoad im Hintergrund laufen lassen

screen -dmS python /opt/pyload/pyLoadCore.py

Dies verhindert den Abbruch des Programms beim Beenden der Kommandozeile


Reconnect

Um Pyload effektiv nutzen zu können, ist ein automatischer reconnect sinnvoll.

Dazu wird eine Datei namens reconnect.sh erstellt, welche am besten mit unter /volume1/@optware/pyload/ abgespeichert wird. In der Weboberfläche unter Einstellungen/General/Reconnect unter Method den gesamten Pfad zur Datei also /volume1/@optware/pyload/reconnect.sh eintragen.

Die reconnect.sh am besten unter vi erstellen, da beim Erstellen unter Windows meist zusätzliche Steuerzeichen erstellt werden, die das Skript nutzlos machen. Unter Windows funktioniert das Erstellen allerdings auch mit dem Programm Notepad++. Es muss darauf geachtet werden, dass die reconnect.sh in der usermask (siehe: chmod, ls -l) als für den pyload-User ausführbar markiert ist. Ansonsten wird das Skript nicht gestartet.

Da es für die Vielzahl von Routern unterschiedliche Verfahren gibt, einen Reconnect zu erzwingen, dient dieses hier nur als Beispiel. Es wäre schön, wenn noch mehr User ihre reconnect.sh posten würden um eine bessere Übersicht zu erreichen.

Code für die reconnect.sh für einen:

T-Com Speedport 500 V
wget --delete-after http://192.168.2.1/cgi-bin/disconnect.exe
sleep 5
wget --delete-after http://192.168.2.1/cgi-bin/connect.exe
sleep 5
AVM Fritz.Box via UPNP
#!/opt/bin
curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination" -d "
<?xml version='1.0' encoding='utf-8'?> 
<s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
<s:Body> <u:ForceTermination xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> 
</s:Body> </s:Envelope>"
Telekom Speedport W723V Typ A (Huawei)

Kommentierter Quelltext: http://pastebin.com/ujbd1ksd

#!/bin/sh
password="YOURPASSWORD"
curl --location --cookie-jar "SessionID.txt" --data "Username=admin&Password=$password" https://speedport.ip/index/login.cgi &> /dev/null
SIDCOOKIE=$( grep "SessionID" SessionID.txt | awk '{printf "%s,%s",$6,$7}' )
curl --location --cookie "SessionID.txt" --data "x.EnabledForInternet=0" https://speedport.ip/auth/setcfg.cgi?x=InternetGatewayDevice.WANDevice.1.WANCommonInterfaceConfig&cookie=$SIDCOOKIE &> /dev/null
curl --location --cookie "SessionID.txt" --data "x.EnabledForInternet=1" https://speedport.ip/auth/setcfg.cgi?x=InternetGatewayDevice.WANDevice.1.WANCommonInterfaceConfig&cookie=$SIDCOOKIE &> /dev/null
curl --location --cookie "SessionID.txt" --data "" https://speedport.ip/auth/logout.cgi?cookie=$SIDCOOKIE &> /dev/null
rm SessionID.txt


Telekom Speedport W723V Typ B (Arcadyan)

Kommentierter Quelltext: http://pastebin.com/Yi49dcgc

#!/bin/sh
password="YOURPASSWORD"
curl --user-agent "Mozilla/4.0" --location --cookie-jar "/volume1/pyload/SessionID.txt" --data "pws=$password"  --data "login_pwd=2" \
--referer "https://speedport.ip/hcti_start_passwort.stm" --insecure  "https://speedport.ip/cgi-bin/login.cgi" &> /dev/null
sleep 1
curl --user-agent "Mozilla/4.0" --location --cookie-jar "/volume1/pyload/SessionID.txt" --insecure \
 "https://speedport.ip/cgi-bin/disconnect.exe" &> /dev/null
sleep 3
curl --user-agent "Mozilla/4.0" --location --cookie-jar "/volume1/pyload/SessionID.txt" --insecure \
 "https://speedport.ip/cgi-bin/connect.exe" &> /dev/null
curl --location --insecure --cookie "/volume1/pyload/SessionID.txt" "https://speedport.ip/cgi-bin/logout.cgi" &> /dev/null
sleep 10
rm /volume1/pyload/SessionID.txt
Prüfung des Netzwerkes vor dem Reconnect

Damit andere Rechner im Netzwerk durch den Reconnect nicht gestört werden (unterbrochene Downloads, ...) ist es vorteilhaft, vor dem Neuverbinden zu Überprüfen, ob andere Rechner aktiv sind. Hierzu wird folgender Quelltext an den Anfang der reconnect.sh gestellt:

#!/bin/sh
NOW=$(date +"%Y-%m-%d %H:%M")
LOGFILE="/volume1/pyload/logs/reconnect.log"
iplist_active=$(nmap -sP 192.168.2.0/24 > /dev/null 2>&1 && arp -an | grep -v incomplete | awk '{print$2}' | sed -e s,\(,, | sed -e s,\),,)
ip_count=$(echo "$iplist_active" | wc -l)
if [ $ip_count -gt 1 ]
then
	echo -e "$NOW There are $ip_count active network devices:\n$iplist_active\nDo not reconnect. Wait 1 minute." >> $LOGFILE 2>&1
	sleep 60
	exit
else
	echo "$NOW only $ip_count active network devices:\niplist_active\nContinue reconnect attempt." >> $LOGFILE 2>&1
fi

Mit nmap wird geprüft, ob das Netzwerk verbunden ist. Bei Erfolg wird mit arp die IP-Adresse aller Netzwerkteilnehmer abgefragt. Mit grep werden nicht aktive IP-Adressen aussortiert. Mit awk und sed wird die Ausgabe so bearbeitet, dass nur noch eine Liste mit IP-Adressen übrig bleibt. Im Beispiel wird der Neustart durchgeführt, wenn mehr als ein Gerät an ist (Der Router zählt als eins, die DiskStation wird nicht mitgezählt). Damit die Befehle arp und nmap ausgeführt werden können, müssen vorher Verknüpfungen auf die ausführbaren Dateien im Pyload-Bin-Ordner (z.B. /volume1/@appstore/pyload/bin) erstellt werden:

  • Verkn. mit Name "arp" auf /bin/busybox
  • Verkn. mit Name "nmap" auf /opt/bin/nmap

Zur Installation von nmap siehe Nmap. Das Erstellen der Verknüpfungen erfolgt bspw. unter Windows mit dem Programm WinSCP (Anmeldung als root mit Übertragungsprotokoll SCP in der DiskStation). Der Nachteil dieser Methode ist, dass das Warten der reconnect.sh dazu führt, dass pyload während der Wartezeit nicht reagiert.

Update

Vor dem Update einer bestehenden Installation muss pyload beendet werden:
/etc/init.d/S99pyload stop

Dann kann man zur Sicherheit die alte Version kopieren, zum Beispiel:

cp -R /opt/pyload /opt/pyload.048
cp -R /volume1/pyload /volume1/pyload.048

Als nächstes wird die neue Version geholt und einfach drüber installiert:

cd /opt
wget http://get.pyload.org/get/src/0.4.9/
unzip pyload-src-v0.4.9.zip [bei Nachfrage 'overwrite all' auswählen]
Fertig! Jetzt kann die neue Version gestartet werden:
/etc/init.d/S99pyload start

Automatisches Startup/Shutdown

Um dafür zu sorgen, dass beim Startup und Shutdown der DS PyLoad automatisch gestartet und gestoppt wird, sollte IPKG in der erweiterten Variante ohne Mount Bind und mit erneuertem Startup/Shutdown Script installiert worden sein. Vor der weiteren Konfiguration für das Start / Stop Script, sollte dafür gesorgt werden, daß PaLoad nicht mehr gestartet ist.

Danach legt man nachfolgendes Script unter /opt/etc/init.d/S99pyload ab. Ausführbar machen mit chmod +x /opt/etc/init.d/S99pyload nicht vergessen! Jetzt wird getestet, ob sich PyLoad mittels /opt/etc/init.d/S99pyload start sauber starten lässt. Sobald PyLoad sauber gestart werden kann, testet man auch gleich noch mittels /opt/etc/init.d/S99pyload stop, ob PyLoad auch wieder sauber beendet wird. Nach dem Stop darf per ps | grep python kein Prozess mehr sichtbar sein.

#!/bin/sh
#
# Start / Stop Script for PyLoad http://localhost:8000
#
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="PyLoad"
DAEMON="python /opt/pyload/pyLoadCore.py --daemon"
#Fuer startup debugging:
#DAEMON="screen -dmS python /opt/pyload/pyLoadCore.py"
DAEMON_OPTS=""
INSTALL_DIR=/opt/
UPDATE_SOURCE=https://bitbucket.org/spoob/pyload/get/tip.zip
#
#
start() {
       echo "Starting Service: $NAME"
       $DAEMON $DAEMON_OPTS | awk '{print $3}' >/var/run/pyload.pid
}
#
stop() {
       kill `cat /var/run/pyload.pid`
}
#
update() {
       stop
       sleep 5
       cd $INSTALL_DIR
       wget --no-check-certificate $UPDATE_SOURCE
       unzip tip.zip
       rm tip.zip
       rsync -avH --update /opt/spoob-pyload-*/ /opt/pyload/
       rm -rf /opt/spoob-pyload-*
       start
}
#
case "$1" in
       start)
               start
               ;;
       stop)
               stop
               ;;
       update)
               update
               ;;
       restart)
               stop
               sleep 4
               start
               ;;
       *)
               echo "Usage: $0 (start|stop|restart|update)"
               exit 1
               ;;
esac
#
# End

Wenn das Script aktiv ist, sollte man nicht vergessen, dass das Script die PID des PyLoad Prozesses speichert, um anhand dieser PID beim Stoppen den PyLoad Prozess zu beenden. Wenn jetzt also jemand "von Hand" die PyLoad Prozesse Stopt und Startet, dann kann das Script nicht mehr sauber funktionieren. Daher, ab sofort am besten nur noch das Pyload Start/Stop Script für das Starten und Stoppen von PyLoad verwenden. Für Tests, wird am besten das Script mit "stop" aufgerufen, dann getestet und alle PyLoad Prozesse wieder beendet, um dann mit dem Script und dem "start" Parameter alles wieder sauber zu starten.

Warum ist das Stoppen von PyLoad beim Shutdown so wichtig? Weil ansonsten die DS nicht sauber heruntergefahren werden kann, bzw. unter umständen sogar hängen bleibt und sich nicht abschalten kann. Wer also beim abschliessenden Test feststellen sollte, daß die DS nicht sauber herunterfährt, der hat etwas falsch gemacht und sollte noch mal sorgfälltig alle Schritte prüfen und niemals vergessen jeden Schritt auch noch einmal zu testen.

Ein alternatives Startup-Script mit Update (Debug, Logfileausgabe und besserer stop/restart-Funktionalität) -Funktion findet ihr unter http://pastebin.com/J9mdXURL Es ist SEHR zu empfehlen sich das Script auf PASTEBIN anzusehen, da dieses deutlich vollständiger ist und liebevoll gepflegt wird, wie das rudimentäre Script hier auf dem Wiki.

Für ein Update einfach im Verzeichnis /opt/etc/init.d/ "S99pyload update" eingeben.

Debugging/Fehlersuche

Ist leider nicht ganz so einfach. Daher sollte immer vor dem Einsatz der Start / Stop Skripte sichergestellt sein, dass PyLoad auch auf der Kommandozeile einwandfrei läuft. Ansonsten muss man sich mit "echo" Befehlen und der Umleitung in ein Logfile behelfen, welche man so plaziert, dass man erahnen kann, was die Scripte gerade getan haben.

Noch eine Alternative ist doch noch einmal Screen zum Start von PyLoad zu nutzen und nach dem Start der DS sich in Screen einzuklinken, um wenigstens ein paar (Fehler)Meldungen mitzubekommen. PyLoad selbst hat auch noch einen Debug Switch -d welcher weiterhelfen könnte. Die Schwierigkeit liegt aber immer darin, dass man die Debug Meldungen ja beim Reboot erst mal nicht zu sehen bekommt und diese daher in eine Datei umleiten müsste, um überhaupt etwas zu sehen bekommen.

Wenn man die Startup Methode mit dem "screen" auskommentiert und damit die DS neu startet, kann man sich nach dem Neustart der DS in die screen Session einklinken und hat damit zumindest die letzten Meldungen auf dem Bildschirm. Nicht vergessen, dass man den screen nach dem Debuggen auch wieder abschaltet, sonst kann es wieder sein, dass die DS beim Herunterfahren hängen bleibt.

Links im Firefox mit FlashGot an pyLoad senden

FlashGot unterstützt (ab der aktuellen Version 1.5.5.96) pyLoad vollständig.

Siehe: https://addons.mozilla.org/de/firefox/addon/flashgot/versions/?page=1#version-1.5.5.96

Tutorial: http://code.google.com/p/flashgot-pgoeri/wiki/HowToSetupFlashGotForPyLoad

Info zu den Settings:

Address:

=http://<<IP-Adresse der DiskStation>>:9666/flashgot
Kein "/" am Ende, besser die IP nehmen

Autostart Downloads:

Aktivieren, sonst bleiben die Downloads im Collector, bis du sie da startest


→ Artikel im Flashgot Forum

Click'n'load im Webbrowser

Der Klick auf die Click'N'Load-Buttons sendet Links als POST-Anfrage an localhost:9666, wo sie von JDownloader/PyLoad ausgelesen werden. Um die Links stattdessen an die NAS zu senden muss eine Weiterleitung eingerichtet werden. Dazu muss auf Windows-PCs folgender Befehl ausgeführt werden (<nasip> mit der IP-Adresse der NAS ersetzen):

netsh interface portproxy add v4tov4 listenport=9666 connectaddress=<nasip> connectport=9666 listenaddress=127.0.0.1

Unter Windows kann die Weiterleitung mit folgendem Befehl wieder gelöscht werden:

netsh interface portproxy delete v4tov4 listenport=9666 listenaddress=127.0.0.1


Unter Linux (auf dem PC, nicht in der NAS) mit diesem Befehl einrichten:

ssh -L 127.0.0.1:9666:<nasip>:9666 -N <nasip>

Weblinks