DLC Link-Extraktion / auto Link-Hinzufügen zur Download Station

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,

ich habe mal ein paar PHP-Scripte gebastelt, welches die Links aus einem DLC-Container extrahiert und diese über die Synology Web-API automatisch zur Download Station hinzufügt. Die Download Station scheint das hinzufügen von DLC-Containern ja nicht zu unterstützen. Für die Link-Extraktion verwende ich http://linkdecrypter.com/ . Das scheint recht zuverlässig zu funktionieren, zumindest solange wie die ihr derzeitiges Request-/Responseformat beibehalten. Mir war wichtig, dass die Funktionalität erstmal mit standard PHP umgesetzt wird und habe deshalb auf CURL oder dergleichen verzichtet. Die Requests werden via file_get_contents() und streamwrappern abgesetzt. Momentan ist der Aufruf der Synology Web-API nur über HTTP implementiert, HTTPS funktioniert NICHT.

Installation:
  • Die Scripte in einen PHP-Enabled Webspace legen. Das kann auf der Diskstation selbst, oder aber auch auf einer anderen Maschine sein.
  • In der Datei config.inc.php die Konstanten DS_API_ENDPOINT / DS_API_USER / DS_API_PASSWD anpassen
  • DS_API_ENDPOINT - URL unter der die Synology Web-API erreichbar ist. Werden die Scripte auf der DS gehostet kann der Hostname 'localhost' bleiben. Liegen die Scripte auf einer anderen Maschine muss der hostname der von der DS sein.​
  • DS_API_USER - Der user mit dem man die Synology Web-API aufruft​
  • DS_API_PASSWD - Das zugehörige Passwort​

Funktion:
  • Aufruf der index.php
  • Hier nun den Link zum DLC-Container eingeben und Formular abschicken
  • Jetzt sollte eine Textarea erscheinen, in der alle Links aus dem DLC-Container gelistet sind. Die Links können noch editiert werden wenn gewünscht - dann mit das Formular abschicken um die Links zur Download Station hinzuzufügen.
  • Nun sollte die Response der beiden Web-API Aufrufe erscheinen (2 mal 'success' => true)
  • Wenn alles gefunkt hat sollten die Links in der Download Station erscheinen.

Das Ganze wurde auf einer DS214 mit DSM 4.3 getestet.
Bitte beachtet, dass ihr die Scripte auf eigene Gefahr einsetzt und dass ich für keinerlei Schäden die möglicherweise verursacht werden verantwortlich bin!

Ich hoffe der eine oder andere kann damit was anfangen!

Cheers
 

Anhänge

  • dlc-add.zip
    2,6 KB · Aufrufe: 1.257

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
...entweder ich bin blind oder man kann seine posts wirklich nicht editieren?!

Ich hab das erste Formular nun erweitert, dass man hier direkt den DLC Inhalt angeben bzw. das DLC-File uploaden kann.
Cheers

Anhang anzeigen dlc-add-2.zip
 

xelebrate

Benutzer
Mitglied seit
04. Jul 2012
Beiträge
17
Punkte für Reaktionen
0
Punkte
1
Vielen Dank,

deine Scripte funktionieren auf meiner DS212 einwandfrei! :)
 

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
Freut mich wenn du damit was anfangen kannst!
 

Al_Capone

Benutzer
Mitglied seit
21. Nov 2013
Beiträge
15
Punkte für Reaktionen
0
Punkte
0
Hi blubberblah,

tausend Dank, dein Script ist genau das was ich gesucht habe! Läuft auf meiner DS214 1A.
Habe mal ein Hintergrund hinzugefügt (Matrix) sowie Schriftfarbe angepasst, zu mehr aufhübschen hatte ich keine Zeit...

Script ist im Anhang.

Gruß
AL
 

Anhänge

  • dlc-add-2.5.zip
    408,5 KB · Aufrufe: 871

Tengo

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
167
Punkte für Reaktionen
1
Punkte
24
Also mal ehrlich ... wenn es das ist, was ich vermute, dann ein ganz fettes DANKE. Muss das am Wochenende mal in Ruhe testen ...

Momentan rennen pyload und DownloadStation bei mir Kopf-an-Kopf ... warum?

Ich arbeite zu 99% im Moment mit DLC's. Entweder mit Container-Datei oder über Click&Load ...

pyload kann das, aber die Konfiguration für absolute Linux, PHP, DSM-Noobs wie mich ist echt Try&Error

Download-Station erschließt sich mir rein optisch besser, aber kriegt das mit den DLC's nur über 5 Ecken hin ... *seufz*

Mal sehen, wer gewinnt ...
 

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
@AL
Sehr cool, erhöht den Geek-Faktor ungemein ;-)

@Tengo
Checks mal aus, vielleicht kommste damit ja zurecht.
 

Tengo

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
167
Punkte für Reaktionen
1
Punkte
24
Hmm, erster herber "Rückschlag".

Archive entpacken, config-Einträge anpassen (mit Editor) soweit kein Problem. Nur weiß ich zwei Dinge nicht ... die PHP-Enable-Umgebung ...

Scenario1: Ich schmeiß die Dateien in einen Ordner der DiskStation ... muss ich dann sicher PHP runterladen und konfigurieren etc.?! Hab mich damit noch nie beschäftigt. Oder einfach nur das PHP-Paket installieren und die index.php per Verknüpfung auf der DSM-Oberfläche starten? Oder wie muss ich mir das vorstellen? Und dann bleibt "localhost" drinnen, weil sich die Dateien ja schon auf dem "Adressort" befinden und die Scripte sorgen dafür, dass die Links aus dem Container in der DownloadStation landen. Richtig?

Scenario2: "Irgendein anderer Webspace" ... könnte ich also auch auf meinen WebSpace vom Homepage-Anbieter packen, wenn da PHP an ist, richtig? Dann aber muss halt die IP der DiskStation rein, also am besten meine DDNS-Adresse? Und welcher Port, der 5000er des DSM oder der 5005er des WebDav? Oder ganz falsch?

Oder meintest du mit Scenario2, dass das auch einfach mein PC sein kann. Aber wie geht das dann mit PHP?
 
Zuletzt bearbeitet:

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
Hi Tengo,

Scenario 1 geht schon mal den richtigen Weg. Im DSM unter "Systemsteuerung - Webdienste" die Webstation aktivieren. Dort dann einen "virtuellen Host" (z.B. dlcadd) anlegen. Nun die Scripte nach web/dlcadd kopieren (der Ordner web sollte nun in der File Station vorhanden sein). wenn du jetzt im Browser <hostname-oder IP-der-diskstation>/dlcadd/index.php aufrufst, sollte das Formular erscheinen.

Scenario 2 ist auch denkbar, wenn dein Webspace aber ausserhalb deines lokalen Netzes liegt muss man halt das Routing der Diskstation so konfigurieren damit man von aussen rein kommt um die Web-API aufzurufen

blubb
 

Tengo

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
167
Punkte für Reaktionen
1
Punkte
24
Hallo blubberblah,

bin jetzt deutlich weiter. Hab deine Anweisungen befolgt und der Aufruf klappt (und ab damit in die Symbolleiste :)) JUHU!

Aber zwei Dinge sind noch zu klären:

1. Maximale Anzahl an gleichzeitigen Download-Links, die übertragen werden können ... (ich hatte einen DLC mit ca 140 Links versucht, da kam dann ne Meldung von wegen URL-Pfad zu lang)

2. Irgendetwas stimmt noch nicht, denn bei der Testübertragung eines Links aus einem DLC kam dann diese Meldung
Fatal error: Uncaught exception 'RuntimeException' with message 'failed issuing request. Response is stdClass::__set_state(array( 'error' => stdClass::__set_state(array( 'code' => 105, )), 'success' => false, ))' in /volume1/web/dlcadd/index.php:90 Stack trace: #0 {main} thrown in /volume1/web/dlcadd/index.php on line 90
Muss ich noch den Port 5000 in meinem Router freischalten? Eigentlich nicht oder? Wenn ich das richtig verstanden habe, dann wird ja vom PC auf die Diskstation innerhalb meines LAN's übertragen, richtig?
 

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
1. Maximale Anzahl an gleichzeitigen Download-Links, die übertragen werden können ... (ich hatte einen DLC mit ca 140 Links versucht, da kam dann ne Meldung von wegen URL-Pfad zu lang)
GET-Requests sind auf eine bestimmte Anzahl Zeichen limitiert, möglicherweise wurde das Überschritten. Ich könnte versuchen eine POST-Request daraus zu machen, mal sehen ob die Web-API damit klarkommt. Als Workaround kann man eine grössere Anzahl von Links aufsplitten und nacheinander durch mehere Aufrufe adden.
2. Irgendetwas stimmt noch nicht, denn bei der Testübertragung eines Links aus einem DLC kam dann diese Meldung
Fatal error: Uncaught exception 'RuntimeException' with message 'failed issuing request. Response is stdClass::__set_state(array( 'error' => stdClass::__set_state(array( 'code' => 105, )), 'success' => false, ))' in /volume1/web/dlcadd/index.php:90 Stack trace: #0 {main} thrown in /volume1/web/dlcadd/index.php on line 90
Mhh, 105 ist laut Doku "The logged in session does not have permission" - den Fehler hatte ich jetzt noch nie. Kommt der immer? Hattest du schon erfolgreich Links zur DS geadded?
Muss ich noch den Port 5000 in meinem Router freischalten? Eigentlich nicht oder? Wenn ich das richtig verstanden habe, dann wird ja vom PC auf die Diskstation innerhalb meines LAN's übertragen, richtig?
Ja, richtig. Am Router musst du nichts konfigurieren wenn du die Scripte innerhalb deines LANs aufrufst.

Wenn ich am WE Zeit habe schau ich mir den Punkt 1 mal an.

blubb

PS: Ich kann meine Posts immer noch nicht editieren wo ist der Knopf :eek:
 

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
Hier mal eine aktuelle Version Anhang anzeigen dlc-add-2.2.zip

- Nun sollte es auch möglich sein mehrere (längere) Links zu DS zu adden, habe von GET nach POST umgestellt
- Möglichkeit ein Passwort fürs Entpacken zu setzen

Cheers,
blubb
 
Zuletzt bearbeitet:

Al_Capone

Benutzer
Mitglied seit
21. Nov 2013
Beiträge
15
Punkte für Reaktionen
0
Punkte
0
Hey blubberblah,

danke für das Update, längere DLC Links scheinen nun zu funzen. ;-)

Danke & Gruß
AL
 

Tengo

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
167
Punkte für Reaktionen
1
Punkte
24
Daumen hoch, der lange 140-Link-DLC wurde scheinbar sauber angenommen ... aber die andere Meldung ist immer noch da, lautet nun wie folgt:
REQUEST: ... Array ( ) SYNO.API.Auth Response:
stdClass::__set_state(array( 'data' => stdClass::__set_state(array( 'sid' => 'bc8TnyqCQ9a.A', )), 'success' => true, ))

REQUEST: http://localhost:5000/webapi/DownloadStation/task.cgi Array ( [0] => Content-Length: 7815 [1] => Content-Type: application/x-www-form-urlencoded ) Fatal error: Uncaught exception 'RuntimeException' with message 'failed issuing request. Response is stdClass::__set_state(array( 'error' => stdClass::__set_state(array( 'code' => 105, )), 'success' => false, ))' in /volume1/web/dlcadd/lib.inc.php:139 Stack trace: #0 /volume1/web/dlcadd/index.php(78): SynoWebApi->addLinks('http://www.shar...') #1 {main} thrown in /volume1/web/dlcadd/lib.inc.php on line 139

Oder hab ich da irgendwie ne Nutzersperre bei der Download-Station drinnen? :mad:
 

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
Ich hab das Ganze nur mit einem uploaded.net Premium-Account getestet, da scheint das ja zu funken. Weiss jemand ob die Download Station logfiles schreibt und wenn ja, wo die liegen?
 

Dan97

Benutzer
Mitglied seit
14. Okt 2008
Beiträge
159
Punkte für Reaktionen
0
Punkte
16
Danke, das funktioniert ja wunderbar! :)

Jetzt fehlt nur noch, dass Click'n'Load auch noch geht.
 

Tengo

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
167
Punkte für Reaktionen
1
Punkte
24
Upps, hab ich da was überlesen?

Das nutze ich gar nicht, sondern ich habe das 1.0er von Kendo am laufen. Ich dachte, dein Plugin wäre für genau dieses entwickelt worden. Na dann werd ich mal das Original anwerfen...
 

Tengo

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
167
Punkte für Reaktionen
1
Punkte
24
Hallo blubberbla,

bitte nicht hauen, aber ich habe den Fehler gefunden. Nachdem auch der Synology-ShareOnline-Account nicht funzte, hab ich nochmal meine Zugangsdaten geändert und jetzt einen Admin-Account eingetragen. Passt mir zwar nicht, aber nun funzt es. Irgendetwas muss ich also beim Einrichten des anderen Accounts in Bezug auf die DowladStation übersehen haben. :mad:

Morgen teste ich das ganze mal mit der Geschichte von Kendo, sollte doch aber auch klappen, wenn ich das richtig verstanden habe.

Auf jeden Fall erstmal ein riesiges DANKE.

Das jetzt noch so wie bei pyload in den Browser eingebunden und die DownloadStation liegt wieder vorne. :D
 

blubberblah

Benutzer
Mitglied seit
03. Nov 2013
Beiträge
59
Punkte für Reaktionen
0
Punkte
6
Hi Tengo,
freut mich, daß es jetzt funktioniert! Ich muß ehrlich gesagt zugeben, daß ich das Ganze auch nur mit meinem Admin account ausprobiert hab.Durchaus möglich, daß es mit nicht-admin Usern Probleme mit der Authentifizierung gibt.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat