Ich möchte täglich einen Podcast herunterladen. Es hat die Form einer MP3-Datei, so dass die Erweiterung der Zieldatei immer dieselbe ist. Der erste Teil des Dateinamens ändert sich auch nicht - nennen wir es ProgName -. Ein anderes Segment des Dateinamens ändert sich auf vorhersehbare Weise; es ist das heutige Datum in der Form 01-01-1999. Aber der mittlere Teil des Dateinamens ändert sich ziemlich unvorhersehbar: Er besteht aus einer Folge von 8 scheinbar zufälligen ganzen Zahlen. Die Endung des Dateinamens, d. H. Der Teil vor der Erweiterung, ändert sich auch nicht - sagen wir es ist "-full". Der Name einer Beispieldatei für den 1. Januar 1999 würde dann wie folgt aussehen: ProgName-01-01-1999--full.mp3. Die Datei für den nächsten Tag, den 2. Januar, würde ProgName-01-02-1999-23871640-full.mp3 heißen. Und so weiter.wget oder curl-Datei mit einer Zeichenfolge von 8 zufälligen Ganzzahlen
Die Dateien werden über http verfügbar gemacht, und ich kann sie mit wget herunterladen, sobald ich den vollständigen Pfad gefunden habe, indem ich zur Webseite navigiere. Aber ich versuche das zu automatisieren und hoffe auf einen Cron-Job, den ich zu einer bestimmten Stunde jeden Tag ausführen kann, zu einer Zeit, in der ich sicher bin, dass die neueste Episode verfügbar sein wird. Als Beispiel
wget http://my.desiredurl.here/downloads/ProgName-01-01-1999--full.mp3
lädt die Datei erfolgreich ProgName-01-01-199--full.mp3 auf meinem Computer (nicht credentialed Website). Aber bis ich einen Weg finden kann (vielleicht mithilfe von Platzhaltern oder geschweiften Klammern?), Um dies zu automatisieren, muss ich den Download manuell durchführen. Also würde ich gerne um Hilfe bitten.
Ich habe etwas über Brace-Erweiterung gelesen, bin aber auf einer ausreichend rudimentären Ebene mit Bash, dass ich irgendwie rate, wie das funktionieren könnte. Könnte ich
erwartenwget http://my.desiredurl.here/downloads/ProgName-01-01-1999-{00000000..99999999}-full.mp3
zu arbeiten? Ist das überhaupt der optimale Weg, um so etwas zu tun? Ich denke, ich habe es erstaunt, wie man die Eingabe des Datumsteils des Dateinamens automatisiert, bin aber momentan in Bezug auf die Ganzzahl-Zeichenfolge ratlos. Eingabe wird geschätzt.
PS Ich habe eine ganze Menge über dieses Problem gegoogelt, bevor ich hier gepostet habe. Die meisten wget-Lösungen, die ich durchlief, beinhalteten globbing und rekursives Herunterladen, was wirklich nicht das ist, was ich brauche. Es gibt eine Reihe von .mp3-Dateien auf der Zielseite, aber ich brauche nur eine davon. Ich brauche eine Möglichkeit, alle außer der Zieldatei, die das heutige Datum enthält, herauszufiltern. Curl ist auch auf meiner Maschine und könnte dafür verwendet werden, obwohl mein Fokus auf wget liegt, mit dem ich vertrauter bin.
HTML-Seite scrappen, URL extrahieren (HTML mit einem DOM-Tool parsen), URL herunterladen, ???, Profit –
Sie möchten absolut nicht 100.000.000 Anfragen senden (was Ihre geschweifte Erweiterung tun würde, wenn sie es tut) gearbeitet, was aus Gründen, die mit ARG_MAX und ähnlichem zusammenhängen, nicht funktioniert). Du wirst nicht innerhalb eines Tages fertig sein, * und * die Leute, die den Server betreiben, werden dich bemerken und verbieten. –
... also, was Sie tun müssen, ist die tatsächliche URL zu finden. Es wird irgendwo veröffentlicht werden. Und, äh, wget hat * wirklich gute * Tools zum Filtern, wenn man einen rekursiven Download macht, also gibt es nichts Hartes oder gar nichts Unbekanntes beim Filtern nach dem aktuellen Datum. –