ホームページ >バックエンド開発 >Python チュートリアル >Pythonを使用してビデオダウンロード機能を実装するサンプルコード
ここ 1 ~ 2 年でショート ビデオ ビジネスが急成長しており、各ビデオ Web サイトには独自のショート ビデオ コンテンツがあります。大手動画サイトの人気ユーザーが公開した最新動画をダウンロードできるソフトがあれば、視聴が便利になるだけでなく、個人のSNSに著作権フリーの動画を投稿して視聴率を高めることもできればいいですね。
最近 ここ 2 年間でショート ビデオ ビジネスが活況を呈しており、各ビデオ Web サイトには独自のショート ビデオ コンテンツがあります。大手動画サイトの人気ユーザーが公開した最新動画をダウンロードできるソフトがあれば、便利に視聴できるだけでなく、著作権フリーの動画を個人のソーシャルに投稿できたら便利だと思いませんか?あなたの人気を高めるためのネットワーキング サイト。
parker はそのようなプロジェクトです (プロジェクトアドレス: https://github.com/LiuRoy/parker) は、celeryframework を使用してユーザーのビデオリストを定期的にクロールし、you-get を通じて最新のビデオを非同期的にダウンロードします。分散配置を実装するのに非常に便利です。 ページ レイアウト と インターフェイス は頻繁に更新 されるため、プログラムの高可用性を確保するために、タイムリーなエラーの検出を容易にするために Statsd 監視が特別に追加されています。
コードアーキテクチャ
現在、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を使用してビデオダウンロード機能を実装するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。