Pythonを使用してビデオダウンロード機能を実装するサンプルコード

高洛峰
リリース: 2017-03-16 09:34:56
オリジナル
2614 人が閲覧しました

ここ 1 ~ 2 年でショート ビデオ ビジネスが急成長しており、各ビデオ Web サイトには独自のショート ビデオ コンテンツがあります。大手動画サイトの人気ユーザーが公開した最新動画をダウンロードできるソフトがあれば、視聴が便利になるだけでなく、個人のSNSに著作権フリーの動画を投稿して視聴率を高めることもできればいいですね。

最近 ここ 2 年間でショート ビデオ ビジネスが活況を呈しており、各ビデオ Web サイトには独自のショート ビデオ コンテンツがあります。大手動画サイトの人気ユーザーが公開した最新動画をダウンロードできるソフトがあれば、便利に視聴できるだけでなく、著作権フリーの動画を個人のソーシャルに投稿できたら便利だと思いませんか?あなたの人気を高めるためのネットワーキング サイト。

parker はそのようなプロジェクトです (プロジェクトアドレス: https://github.com/LiuRoy/parker) は、celeryframework を使用してユーザーのビデオリストを定期的にクロールし、you-get を通じて最新のビデオを非同期的にダウンロードします。分散配置を実装するのに非常に便利です。 ページ レイアウト インターフェイス は頻繁に更新 されるため、プログラムの高可用性を確保するために、タイムリーなエラーの検出を容易にするために Statsd 監視が特別に追加されています。

コードアーキテクチャ

Pythonを使用してビデオダウンロード機能を実装するサンプルコード

現在、parker は Bilibili と Miaopai のダウンロードのみを実装しています。フレームワーク図からわかるように、Web サイトの種類ごとに 2 つの非同期インターフェイスを実装する必要があります。 : ユーザーのビデオホームページから公開されたビデオの再生アドレスを解析し、再生アドレスに基づいてビデオをダウンロードします。したがって、Web サイト タイプを追加する場合、元のコードを変更する必要はなく、新しい解析およびダウンロード インターフェイスを追加するだけで済みます。動画のダウンロードが完了した後のその後の操作はまだ実装していません。必要に応じて自由に実装できます。

実行中、celery は設定された高品質のユーザー リストを、非同期実行のために対応する Web サイトの解析インターフェイスに定期的に送信し、最新のビデオ再生アドレスをフィルタリングして、非同期ダウンロードのために対応するダウンロード インターフェイスに渡します。ダウンロードが完了すると、後続の操作が非同期的にダウンロードされます。したがって、スケジュールされたタスクを送信するために celery Beat プロセスを開始する必要があり、比較的大きなビデオの場合、ダウンロードには非常に時間がかかるため、いくつかの非同期タスクを実行する必要があります。タスクリストのサイズに応じた非同期タスク。

プログラムは動作します

このプログラムはubuntuとMacで正常に動作することが確認されています。ローカルWindows下のセロリは正常に起動できないため、Windows環境では動作確認されていません。

依存ライブラリインストール

Pythonのバージョンは3.5です。プロジェクトディレクトリに入ったら、次を実行します:

pip install -rrequirements.txt

データベーステーブルを作成する

でデータベースに 2 つのテーブルが構築されました (SQL: https://github.com/LiuRoy/parker/blob/master/spider/models/tables.sql)

パラメータ設定

設定の下にログが記録されますpath.yaml、params.yaml、および sites.yaml はそれぞれ、ログ設定、実行パラメータ設定、一般的なユーザー設定に対応します。

ログ設定

デバッグモードでは、ログは標準出力ストリームに直接出力されます。リリースモードでは、ログの内容がファイルに出力されるため、出力ログファイルを設定する必要があります。

実行構成

  • モードデバッグデバッグモード、このモードでは、ログは標準出力を指し、リリースモードでは、ログは指定されたファイルに出力されます。 、モニタリングデータがあります。

  • broker_urlは、celeryのBROKER_URLに対応しており、redisまたはrabbitmq

  • mysql_urlデータベースアドレスとして構成できます。2つのテーブルを事前に構築する必要があります

  • download_pathビデオダウンロードパス

  • statsd_address 監視アドレス

  • video_number_per_page ユーザーのビデオ ホームページから毎回解析されるビデオ再生アドレスの数はどれくらいですか? ほとんどのユーザーは毎回少数のビデオを公開するため、非常に小さい値に設定するだけで済みます。最初の実行では、長時間保存されている多数のビデオはダウンロードされません。

  • download_timeout ビデオのダウンロードのタイムアウト

人気のユーザー設定

パーカーは、この設定に基づいてセロリビートスケジューラリストを生成します。

  • 名前ルールは-、パーカーはこれをスケジューラータスク名として使用します

  • url ユーザーのビデオ公開ホームページ

  • タスクに対応するセロリ解析非同期タスク

  • 分 ユーザービデオリストを何分で確認するか

タスクを開始する

プロジェクトディレクトリに入り、次のコマンドを実行してセロリワーカーを開始します


celery -A spider worker
ログイン後にコピー


次のコマンドを実行して、セロリビートのスケジュールされたタスクを開始します


celery -A spider beat
ログイン後にコピー


モニタリング

dockerミラーを強力に使用して、1分でモニタリング環境をセットアップします。後は、実行成功と実行異常のデータを追加するだけで、プログラムが正常に動作しているかどうかを簡単に監視できます。

Pythonを使用してビデオダウンロード機能を実装するサンプルコード


以上がPythonを使用してビデオダウンロード機能を実装するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート