Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion

Verwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion

高洛峰
高洛峰Original
2017-03-16 09:34:562605Durchsuche

Das Kurzvideogeschäft boomte in den letzten ein oder zwei Jahren und jede Video-Website verfügt über ihre eigenen, einzigartigen Kurzvideoinhalte. Es wäre großartig, wenn es ein Programm gäbe, mit dem Sie die neuesten Videos herunterladen könnten, die von beliebten Benutzern großer Video-Websites veröffentlicht wurden. Das wäre nicht nur bequem anzusehen, sondern Sie könnten auch urheberrechtsfreie Videos auf persönlichen Social-Networking-Sites veröffentlichen, um Ihre Reichweite zu steigern Beliebtheit

Das Kurzvideogeschäft boomte in den letzten ein oder zwei Jahren und jede Video-Website verfügt über ihren eigenen, einzigartigen Kurzvideoinhalt. Wäre es nicht schön, wenn es ein solches Programm gäbe, mit dem Sie die neuesten Videos, die von beliebten Benutzern großer Video-Websites veröffentlicht wurden, nicht nur bequem ansehen, sondern auch urheberrechtsfreie Videos in persönlichen sozialen Netzwerken veröffentlichen könnten? Networking-Sites, um Ihre Popularität zu steigern?

Parker ist ein solches Projekt (Projektadresse: https://github.com/LiuRoy/parker). Es nutzt das CeleryFramework, um regelmäßig Benutzervideolisten zu crawlen und die neuesten Veröffentlichungen zusammenzustellen Durch den asynchronen Download kann eine verteilte Bereitstellung problemlos erreicht werden. Da das Seitenlayout und die Schnittstelle jeder Website häufig aktualisiert werden, um die hohe Verfügbarkeit des Programms sicherzustellen, wurde speziell eine Statsd-Überwachung hinzugefügt, um die rechtzeitige Erkennung zu erleichtern Fehler.

CodeArchitektur

Verwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion

Derzeit in Parker Es werden nur Downloads von Bilibili und Miaopai implementiert. Wie aus dem Rahmendiagramm ersichtlich ist, müssen für jeden Website-Typ zwei asynchrone Schnittstellen implementiert werden: Parsen der Wiedergabeadresse des veröffentlichten Videos von der Video-Homepage des Benutzers und Herunterladen des Videos auf der Wiedergabeadresse. Daher müssen Sie beim Hinzufügen eines Website-Typs nicht den ursprünglichen Code ändern, sondern lediglich eine neue Analyse- und Download-Schnittstelle hinzufügen. Ich habe die nachfolgenden Vorgänge nach Abschluss des Video-Downloads nicht implementiert. Sie können sie entsprechend Ihren eigenen Anforderungen implementieren.

Beim Ausführen sendet Sellery regelmäßig die konfigurierte hochwertige Benutzerliste zur asynchronen Ausführung an die Parsing-Schnittstelle der entsprechenden Website, filtert die neueste Videowiedergabeadresse heraus und übergibt sie an die entsprechende Download-Schnittstelle Asynchrones Herunterladen. Rufen Sie nach Abschluss nachfolgende Vorgänge asynchron auf. Daher ist es erforderlich, einen Sellerie-Beat-Prozess zum Senden geplanter Aufgaben und mehrere asynchrone Sellerie-Aufgaben zum Durchführen von Parsing- und Download-Vorgängen zu starten. Bei relativ großen Videos wird empfohlen, die Anzahl angemessen zuzuweisen asynchrone Aufgaben entsprechend der Größe der Aufgabenliste.

Das Programm läuft

Es wurde überprüft, dass dieses Programm unter Ubuntu und Mac normal ausgeführt werden kann, da Sellerie unter lokalen Windows Es kann nicht normal gestartet werden und wurde daher nicht in der Windows-Umgebung überprüft.

Abhängige BibliothekInstallation

Die Python-Version ist 3.5. Führen Sie nach Eingabe des Projektverzeichnisses Folgendes aus:

pip install -r require.txt

Datenbank erstellenTabelle

Erstellen Sie sie im Datenbank im Voraus Zwei Tabellen (SQL: https://github.com/LiuRoy/parker/blob/master/spider/models/tables.sql)

Parameterkonfiguration

Logging.yaml, params.yaml und sites.yaml unter dem Konfigurationspfad entsprechen der Protokollkonfiguration, der Konfiguration laufender Parameter bzw. der Konfiguration beliebter Benutzer.

Protokollkonfiguration

Im Debug-Modus wird das Protokoll direkt in den Standard-Ausgabestream ausgegeben. Im Release-Modus wird der Protokollinhalt ausgegeben Daher muss die Ausgabeprotokolldatei konfiguriert werden.

Konfiguration ausführen

  • Modus DebugDebug-Modus, auf diesen Modus verweist das Protokoll die Standardausgabe, und es gibt keine Überwachungsdaten; im Freigabemodus wird das Protokoll in die angegebene Datei ausgegeben, und es sind Überwachungsdaten vorhanden.

  • broker_url entspricht der BROKER_URL von Celery, die als redis oder Rabbitmq

  • mysql _url Datenbankadresse, zwei Tabellen müssen im Voraus erstellt werden

  • download_path Video-Downloadpfad

  • statsd_address Überwachungsadresse

  • video_number_per_page Wie viele Videowiedergabeadressen werden jedes Mal von der Video-Homepage des Benutzers geparst? Da die meisten Benutzer jedes Mal eine kleine Anzahl von Videos veröffentlichen, muss dieser nur auf einen sehr kleinen Wert eingestellt werden. Beim ersten Durchlauf wird ein großer Teil der langjährigen Videos nicht heruntergeladen.

  • download_timeout Timeout für Video-Download

Beliebte Benutzerkonfiguration

Basierend auf dieser Konfiguration erstellt Parker eine Liste von Sellerie-Beat-Planern.

  • Namensregel ist -, Parker verwendet dies als Planer-Aufgabennamen

  • URL-Benutzer Video-Homepage veröffentlichen

  • Aufgabe entspricht der asynchronen Sellerie-Parsing-Aufgabe

  • Minute, wie viele Minuten zum Überprüfen der Benutzervideoliste

Starten Sie die Aufgabe

Geben Sie das Projektverzeichnis ein und führen Sie den folgenden Befehl aus, um den Selleriearbeiter zu starten


celery -A spider worker


Führen Sie den folgenden Befehl aus, um die geplante Aufgabe „Sellerie schlagen“ zu starten


celery -A spider beat


Überwachung

Verwenden Sie unbedingt ein Docker-Image, um die Überwachungsumgebung in einer Minute zu konfigurieren. Danach müssen Sie nur noch die Daten zur erfolgreichen Ausführung und zur abnormalen Ausführung hinzufügen und können problemlos überwachen, ob das Programm normal ausgeführt wird.

Verwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion


Das obige ist der detaillierte Inhalt vonVerwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn