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

T8Force

Benutzer
Mitglied seit
10. Apr 2017
Beiträge
54
Punkte für Reaktionen
0
Punkte
6
Keine Ahnung von DLCadd - noch nie gehört. JDownload funktioniert tadellos auf der Synology und wird genauso bedient wie auf dem PC - herunterladen - entpacken - verschieben - rar löschen... etc. pp.
Die Einrichtung ist simple - musst nur Java und JDownloader aus dem Paketzentrum installieren. Einrichtung kennst Du dann ja schon. Plugin für Browser gibts auch.

Gibt es dazu irgendwo eine Anleitung? Im Paketzentrum ist Jdownloader jedenfalls nicht aufgeführt.
 

Orihalcon

Benutzer
Mitglied seit
09. Apr 2017
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Ich bin zwar ungern der Leichenfledderer aber ich muss den Thread hier doch wieder ausbuddeln, da ich das Tool vom lieben blubberblah nutze und nun vor einem Problem stehe.
Jahrelang hat es mit Links von SO super funktioniert und war auch zuverlässig.
Jetzt musste man ja leider umsteigen und ich versuche nun Links von rapidgator.net zu übertragen.
Das Decrypten funktioniert soweit super, nur das hinzufügen zur Download Station klappt nicht mit diesem Hoster.

Die einzige Fehlermeldung die ich dann immer bekomme lautet: "No links to add!"
Mit Links von uploaded funktionierts ohne Probleme, ich verstehe nicht wo das problem liegt.
Links kann ich manuell in die Download Station einfügen. Es hängt irgendwo im Script nur keine Ahnung wo.
Hat jemand dafür eine Idee? Tritt wohl ausschließlich beim genannten Hoster auf, andere funktionieren Problemlos.

Danke im Voraus für die Mühen.
 
Zuletzt bearbeitet:

noyse

Benutzer
Mitglied seit
09. Jan 2012
Beiträge
59
Punkte für Reaktionen
2
Punkte
8
@Orihalcon
Das problem ist der filenamescraper in der config.inc.php . der funktioniert nur mit uploaded/share-online

$filenameScraper = array(
'uploaded' => array('uploaded.to', "|<a .*id="filename".*>(.*)</a>|"),
'shareonline' => array('Share-Online', '|var fn="([A-Za-z0-9\.\-\+]*)";|')
);

Damit kann der downloadstation kein dateiname übermittelt werden
 

Orihalcon

Benutzer
Mitglied seit
09. Apr 2017
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
@noyse

Oh, doch etwas Komplizierter wie mir scheint, ich hab es schon versucht mit dem Umbenennen der arrays, dachte auch mehr das sei eher so Kosmetischer Natur wenn ich statt Shareonline rapidgator rein schreibe.
Verdammt.

Leider ist Webscripting auch nicht so ganz meine Baustelle :(
Da hat nicht zufällig jemand mit schon Erfahrung gemacht und ein entsprechendes Array zur Hand, oder?

So im Beispiel ist der Link bei rapidgator ja aufgebaut (ohne Unterstriche):

ht_tp_s://rapid_gator.net/file/[hexadezimalfolge]/Datei-Name-20XX-.partXX.rar.html

Im Netz hab ich schon bisschen nun weiter herumgesucht und habe diese Seite dabei entdeckt https://regexr.com/ und nachdem ich mir da mal was zusammengebastelt habe, müsste das regex pattern so aussehen:

$filenameScraper = array(
'rapidgator' => array('rapidgator.net', 'https://rapidgator.net/file/([a-f0-9])*/([a-zA-Z0-9\-\.]*)')

Zumindest auf der Seite wurde angezeigt, dass dieses Pattern die Links auflösen würde.
Scheinbar aber reicht das noch nicht, ich habe es bereits ausgetestet und es hat leider nicht zum gewünschten Erfolg geführt.

Mittlerweile habe ich es auf dieses Pattern heruntergebrochen [a-zA-Z0-9\-\.\:\/]* leider ohne nennenswerten Erfolg.
Ich bin durch, ich bin zu blöd dafür und find es einfach nicht. ~.~
 
Zuletzt bearbeitet:

noyse

Benutzer
Mitglied seit
09. Jan 2012
Beiträge
59
Punkte für Reaktionen
2
Punkte
8
@Orihalcon
sogehts bei mir

config.inc.php +18

IST:
PHP:
$filenameScraper = array(
    'uploaded' => array('uploaded.to', "|<a .*id=\"filename\".*>(.*)</a>|"),
    'shareonline' => array('Share-Online', '|var fn=\"([A-Za-z0-9\.\-\+]*)\";|')
);

SOLL
PHP:
$filenameScraper = array(
    'uploaded' => array('uploaded.to', "|<a .*id=\"filename\".*>(.*)</a>|"),
    'Rapidgator' => array('Rapidgator.net', '|<a .*download*/(.*)>')
);


lib.inc.php +341

IST:
PHP:
class LinkParser
{
    public static function parseLinkStr($linkStr, array &$linkArr, array &$filenameArr) {
        $linkStr = explode("\n", $linkStr);
        foreach ($linkStr as $link) {
            $link = trim($link);
            // try to find "URL [FILENAME]"
            $found = preg_match("|(http:\/\/.*).*\[(.*)\]|", $link, $matches);
            if (!$found) {
                // if not found try to find "URL"
                $found = preg_match("|(http:\/\/.*)|", $link, $matches);
            }
            if ($found) {
                if (count($matches) == 2) {  // only links e.g.: http://foo.to/sg11ds5
                    $linkArr[] = trim($matches[1]);
                } else if (count($matches) == 3) { // links and filenames e.g.: http://foo.to/sg11ds5 [my-archive-01.rar]
                    $linkArr[] = trim($matches[1]);
                    $filenameArr[] = trim($matches[2]);
                }
            }
        }
    }
}


SOLL

PHP:
class LinkParser
{
    public static function parseLinkStr($linkStr, array &$linkArr, array &$filenameArr) {
        $linkStr = explode("\n", $linkStr);
        foreach ($linkStr as $link) {
            $link = trim($link);
            // try to find "URL [FILENAME]"
            $found = preg_match("|(http?s:\/\/.*).*\[(.*)\]|", $link, $matches);
            if (!$found) {
                // if not found try to find "URL"
                $found = preg_match("|(http?s:\/\/.*)|", $link, $matches);
            }
            if ($found) {
                if (count($matches) == 2) {  // only links e.g.: http://foo.to/sg11ds5
                    $linkArr[] = trim($matches[1]);
                } else if (count($matches) == 3) { // links and filenames e.g.: http://foo.to/sg11ds5 [my-archive-01.rar]
                    $linkArr[] = trim($matches[1]);
                    $filenameArr[] = trim($matches[2]);
                }
            }
        }
    }
}
 
Zuletzt bearbeitet:

noyse

Benutzer
Mitglied seit
09. Jan 2012
Beiträge
59
Punkte für Reaktionen
2
Punkte
8
@synfor

na gut dann hab ich das auch noch korrigiert ;) war aber nicht die aufgabenstellung ;)
 

Orihalcon

Benutzer
Mitglied seit
09. Apr 2017
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
@noyse

Vielen lieben Dank!
Das funktioniert 1A.

Ich mit meinen nicht vorhandenen Programmierkenntnissen hätte das niemals hinbekommen.
Ich zum Beispiel habe null Ahnung, warum der regex pattern '|<a .*download*/(.*)>' lauten muss. Wär ich selbst im Leben nach dem Tod nicht drauf gekommen.

Das einzige, was ich von deinen Änderungen verstehe ist diese OR-Anweisung http?s, dass war's dann aber leider auch schon. :D

Auf jeden Fall nochmal ein ganz herzliches Danke für deine Mühen und diese Lösung. :)

Ich wünsche dir und all deinen lieben alles gute und das ihr alle Gesund bleibt. :)

Damit verabschiede ich mich dann mal wieder von diesem Beitrag.

Macht's gut Leute. *wink*
 

noyse

Benutzer
Mitglied seit
09. Jan 2012
Beiträge
59
Punkte für Reaktionen
2
Punkte
8
@Orihalcon
das hat etwas gedauert bis ich das gerafft hatte dass es um das Pattern geht woran auf der rapidgator webseite der download Link erkannt wird.
Ich bin da auch kein Fachmann :p
schön wenns funktioniert
 

Orihalcon

Benutzer
Mitglied seit
09. Apr 2017
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Mal was neues aus der Welt der Dinge, die passieren, man aber nicht weiß wieso, ist vermutlich eher ein AVM Forum Thema aber vielleicht hat es ja hier auch schonmal jemand gehabt oder wird es haben und da hab ich auch gleich noch den Workarount weiter unten:

Ich hab neulich bei meiner Fritz 7590 eine Ads Seite in meine Blacklist eingetragen und diese über das vorinstallierte Standardprofil auf alle Netzwerkgeräte angewandt, damit die nicht mehr aufgerufen wird.
Beispiel: domain.com (Es funktioniert mit jedem x-Beliebigen Eintrag)

Beim Ausführen des Decrypters krieg ich witzigerweise dann folgende Rückmeldung:

FRITZ!Box

Die Internetseite ist gesperrt.

Die Internetseite ist gesperrt.
Der Internetfilter in der FRITZ!Box ist aktiviert. Die gewünschte Seite darf auf Grund der Filtereinstellungen nicht angezeigt werden.

Url: http://dcrypt.it/decrypt/paste
Grund: document.write(getReason("3", "access to URL not allowed"));

[responseHeader] => HTTP/1.1 404 Not Found
Pragma: no-cache
Connection: close
Content-type: text/html; charset=utf-8
Content-Length: 5515

Es ist verwirrend, dass dcrypt.it angeblich durch meine Fritze gesperrt wird, obwohl die Seite nicht in der Blacklist steht und ich mit jedem anderen Gerät im gleichen Netzwerk und Profil Zugriff auf die Seite habe.
Jetzt ist natürlich die Frage, wo spinnt's, an der Scriptabfrage oder an der Fritze?
Kann mir grundsätzlich beides nicht Sinnvoll erklären.

Aber egal, da ich mit dem Server eh nie auf die geblockte Seite kommen werde, hab ich für diese nun ein anderes Profil der Fritze eingetragen, damit die Blacklist da nicht zwischen grätscht.
Trotzdem wär das echt mal interessant zu wissen, ob das bei wem anderes ebenfalls passiert und falls ja, woran es wohl liegt.

Zu viel Herzblut muss wie gesagt nicht reingesteckt werden, da ich das Problem mit dem anderen Profil umgehen konnte, interessant wäre es aber bestimmt trotzdem warum die Abfrage in die Blacklist der Fritzbox rennt, obwohl in keiner Zeile die geblockte Domain.com auftaucht. Es funktioniert wie gesagt mit jedem x-beliebigen Eintrag, google.com, synology-forum.de etc. egal was in der Blacklist steht, das Script wird erfolgreich blockiert. :confused:

Schon seltsam sowas.
 

Orihalcon

Benutzer
Mitglied seit
09. Apr 2017
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Mit dem Code von @noyse lief ich bisher super, danke nochmal dafür.
Mittlerweile bin ich auf einen Fehler gestoßen den ich durch Webrecherche selbst lösen konnte.

Problem war, das Links die http waren, nicht mehr hinzugefügt worden sind, es gingen nur noch https links.

Habe herausgefunden, dass im Code für den LinkParser das ? an der falschen Stelle, statt http?s muss es https? heißen.

Quelle die mich auf die Lösung brachte: https://stackoverflow.com/questions/44093760/preg-match-regex-to-make-http-and-https-optional

lib.inc.php +341

IST

PHP:
class LinkParser
{
    public static function parseLinkStr($linkStr, array &$linkArr, array &$filenameArr) {
        $linkStr = explode("\n", $linkStr);
        foreach ($linkStr as $link) {
            $link = trim($link);
            // try to find "URL [FILENAME]"
            $found = preg_match("|(http?s:\/\/.*).*\[(.*)\]|", $link, $matches);
            if (!$found) {
                // if not found try to find "URL"
                $found = preg_match("|(http?s:\/\/.*)|", $link, $matches);
            }
            if ($found) {
                if (count($matches) == 2) {  // only links e.g.: http://foo.to/sg11ds5
                    $linkArr[] = trim($matches[1]);
                } else if (count($matches) == 3) { // links and filenames e.g.: http://foo.to/sg11ds5 [my-archive-01.rar]
                    $linkArr[] = trim($matches[1]);
                    $filenameArr[] = trim($matches[2]);
                }
            }
        }
    }
}

SOLL

PHP:
class LinkParser
{
    public static function parseLinkStr($linkStr, array &$linkArr, array &$filenameArr) {
        $linkStr = explode("\n", $linkStr);
        foreach ($linkStr as $link) {
            $link = trim($link);
            // try to find "URL [FILENAME]"
            $found = preg_match("|(https?:\/\/.*).*\[(.*)\]|", $link, $matches);
            if (!$found) {
                // if not found try to find "URL"
                $found = preg_match("|(https?:\/\/.*)|", $link, $matches);
            }
            if ($found) {
                if (count($matches) == 2) {  // only links e.g.: http://foo.to/sg11ds5
                    $linkArr[] = trim($matches[1]);
                } else if (count($matches) == 3) { // links and filenames e.g.: http://foo.to/sg11ds5 [my-archive-01.rar]
                    $linkArr[] = trim($matches[1]);
                    $filenameArr[] = trim($matches[2]);
                }
            }
        }
    }
}
 

misux

Benutzer
Mitglied seit
29. Feb 2008
Beiträge
310
Punkte für Reaktionen
13
Punkte
18
Hey, wo habt ihr überhaupt den jdownloader für die synology her? oder gibt es den nicht mehr?
 

Benie

Benutzer
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
5.610
Punkte für Reaktionen
1.847
Punkte
234

misux

Benutzer
Mitglied seit
29. Feb 2008
Beiträge
310
Punkte für Reaktionen
13
Punkte
18
klappt nicht... beide links geben mir leider keinen Eintrag im paketzentrom...
 

Benie

Benutzer
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
5.610
Punkte für Reaktionen
1.847
Punkte
234

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
13.452
Punkte für Reaktionen
4.611
Punkte
499
Wenn es die DS hergibt, würd ich lieber auf Docker als auf die native Installation setzen...
 

noyse

Benutzer
Mitglied seit
09. Jan 2012
Beiträge
59
Punkte für Reaktionen
2
Punkte
8
Ich benutze ihn immer noch nativ auf ner ds716+||. Keine Probleme bisher. Docker kenn ich mich nicht aus 😜
 

Benie

Benutzer
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
5.610
Punkte für Reaktionen
1.847
Punkte
234


 

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