XML Feed herunterladen

k0ntr

Commodore
Registriert
Okt. 2007
Beiträge
4.231
Hallo Leute

Hoffentlich bin ich hier richtig. Ich habe einen Kunden von dem ich Bilder und Videos erhalte. Das sind über 1000 Dateien. Es gibt verschiedene Objekte als Beispiel: Objekt 1A, oder Objekt 1B usw. Das sind insgesamt ca 200 Objekte (sagen wir 200 Ordner mit über 1000 Bilder).

Ich erhalte vom Kunden ein XML Feed, da ist eine Textdatei mit verschiedenen Links die direkt zu den Bildern und Videos führt. Auf Anfrage ob ich FTP Zugriff bekomme, wurde mir abgelehnt.

Mit jdownloader2 kann ich diese Links von Hand einfügen und herunterladen, jedoch ist das ziemlich umständlich bei über 1000 Dateien.

Gibt es eine Möglichkeit diese Bilder und Videos anders zu herunterladen?
 
Kleines Skript in irgendeiner Programmiersprache deiner Wahl sollte das in wenigen Minuten erledigen. Ein fertiges Programm für so einen Anwendungsfall kenne ich jetzt aber auch nicht.

Wenn du die Ordnerstruktur nicht behalten musst, kannst du mit einem Editor wie Notepad++ einfach durch Suchen & Ersetzen alles löschen, was kein Link ist, und dann hast du eine Datei nur noch mit Links - iirc, sollte jDownloader mit sowas klarkommen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Der Lord
Habe es aus Interesse mal nachgestellt.. mit wget -r kommt man hier leider nicht weit, auch der jDownloader (der übrigens bei mir nicht vom Defender angezählt wird) weigert sich die Links aus der XML-Datei zu extrahieren. Möglicherweise gibt es hierfür aber eine passende Erweiterung.

Damit das Projekt nicht wieder zwei Jahre auf Eis liegen bleibt: eine beispielhafte Umsetzung in Powershell könnte so aussehen:

PowerShell:
$xml_file = './test.xml'
$xml_search = '/rss/channel/item/link'
Select-Xml -Path $xml_file -XPath $xml_search | ForEach-Object {
    $url = $_.Node.InnerXML
    $filename = $url.Split("/")[-1]
    Write-Host "URL: $url - Filename: $filename"
    Invoke-WebRequest -Uri $url -OutFile "./$filename"
}

XML:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Test</title>
        <link>http://domain.tld/</link>
        <description>Test Desc</description>
        <category>Test</category>
        <copyright>Bla</copyright>
        <language>de-de</language>
        <item>
            <title>Test Nr 1-1</title>
            <link>http://domain.tld/test1-1.dummy</link>
            <description>Desc 1</description>
        </item>
        <item>
            <title>Test Nr 1-2</title>
            <link>http://domain.tld/test1-2.dummy</link>
            <description>Desc 2</description>
        </item>
    </channel>
    <channel>
        <title>Test 2</title>
        <link>http://domain.tld/</link>
        <description>Test Desc 2</description>
        <category>Test</category>
        <copyright>Bla</copyright>
        <language>de-de</language>
        <item>
            <title>Test Nr 2-1</title>
            <link>http://domain.tld/test2-1.dummy</link>
            <description>Desc 1</description>
        </item>
    </channel>
</rss>

Das wäre meine Quick-And-Dirty Umsetzung und kann definitiv noch optimiert werden - zumindest funzt es :)
Der Pfad zum Download ($xml_search) muss natürlich entsprechend der bereitgestellten XML-Datei angepasst werden.
 
Fombu schrieb:
jDownloader extrahiert auch Links aus Text. Es würde schon reichen den ganzen XML(-Feed) einmal in die Zwischenablage zu nehmen.

btw: arbeitest du da seit 2 Jahren dran und bis noch nicht weiter?
https://www.computerbase.de/forum/threads/xml-feed.1901034/

Ich konnte damals die links einfach per copy paste in jdownloader einfügen und habe es so heruntergeladet... dauert etwas, aber so konnte ich es lösen.
 
k0ntr schrieb:
aber so konnte ich es lösen
Und wieso dann das neue Thema, wenn es augenscheinlich dasselbe Problem ist, wofür jedoch bereits eine Lösung vorhanden war/ist? Oder klappte das nur damals und jetzt nicht mehr? (zumindest mein kurzer Test diesbezüglich war nicht erfolgreich)
Ich steh' aufm Schlauch...
Edit: ach du meinst du hast die Links einzeln in jDownloader kopiert? Ja okay, das kann nicht die Lösung sein. :D
 
Der Lord schrieb:
Und wieso dann das neue Thema, wenn es augenscheinlich dasselbe Problem ist, wofür jedoch bereits eine Lösung vorhanden war/ist? Oder klappte das nur damals und jetzt nicht mehr? (zumindest mein kurzer Test diesbezüglich war nicht erfolgreich)
Ich steh' aufm Schlauch...
Edit: ach du meinst du hast die Links einzeln in jDownloader kopiert? Ja okay, das kann nicht die Lösung sein. :D
Jap genau... hab da auch keine Lust 1000 Links zu kopieren :D
 
Na dann siehe oben, mit einem kleinen Script kann man das wunderbar automatisieren.
In dem Beispiel lädt das Script die Dateien direkt herunter.

Man könnte es aber auch leicht abwandeln und nur eine Linkliste für JD generieren lassen und diese dann in JD einfügen, wäre auch ne Idee. z.B:

PowerShell:
$xml_file = './test.xml'
$xml_search = '/rss/channel/item/link'
$output = "./linklist.txt"
Select-Xml -Path $xml_file -XPath $xml_search | ForEach-Object {
    $_.Node.InnerXML | Out-File -FilePath $output -Append
}
 
Der Lord schrieb:
weigert sich die Links aus der XML-Datei zu extrahieren.

  • dein Beispiel xmlText in die Zwischenablage
  • jDownloader auf Linksammler -> Neue Links hinzufügen
  • Ergebnis (ohne einen weiteren Klick) siehe Bild

Ist es aber ein wiederkehrender Task, dann ist eher der Script von Der Lord empfehlenswert.
 

Anhänge

  • jdxml.JPG
    jdxml.JPG
    61,6 KB · Aufrufe: 139
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Der Lord
Hatte ich versucht, die Liste blieb leer..seltsam. Lag evtl an meiner uralten Version von JD, nutze ich kaum noch und wollte das Update für den Test nicht abwarten. :D

Na dann haben wir doch die einfachste Lösung. :)
 
Zurück
Oben