VideoDownloader はyt-dlp
Python ライブラリに基づいて開発されたビデオ ダウンロード プログラムです。
yt-dlp は、数千の Web サイトをサポートする機能豊富なコマンドラインのオーディオ/ビデオ ダウンローダーです。このプロジェクトは、現在は廃止されている youtube-dlc をベースにした youtube-dl のフォークです。
yt-dlp は基本的にすべての一般的なビデオ Web サイトをサポートしており、非常に強力な機能と豊富なパラメーターを備えたコマンドライン プログラムです。このプロジェクトは、yt-dlp (yt_dlp) の Python ライブラリに基づいて開発されており、tkinter ライブラリを使用してビデオ ダウンロード用の GUI アプリケーションを構築するため、コマンド ラインで長いコマンドを入力する必要がなく、簡単なダウンロード エクスペリエンスが得られます。 。
デフォルトでは Windows 環境が使用されます。私は pycharm+Anaconda を使用します。
Python>=3.8
ffmpeg は、ダウンロード後にオーディオとビデオを自動的に結合するために使用されます。これは、Python ライブラリではなく、ffmpeg のバイナリ実行可能ファイルであることに注意してください。D D:ffmpegbin
など。
(1) このプロジェクトをクローンします
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) プロジェクト用に新しい conda 仮想環境を作成します。例:
conda create -n videodownload python=3.12
(3) pip を使用して yt_dlp ライブラリをインストールします。
conda はビデオダウンロードをアクティブ化します pip インストール yt-dlp
Linux では、Ubuntu24.04 を例として、vim を使用して編集し、Python venv 仮想環境を使用します (conda も使用できます)。
(1) プロジェクトをローカルにクローンする
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Python venvをインストールする
apt インストール python3.12-venv
(3) 仮想環境の作成
python3 -m venv ダウンローダー
(4) 仮想環境の起動
ソースダウンローダー/bin/activate
(5) 関連ライブラリのインストール
pip インストール yt-dlp sudo apt install python3-tk pip install prettytable# パッケージ化には、pip install pyinstaller を使用します
(6) main.py に実行権限を与える
sudo chmod 775 main.py
(7) 実行(パスに注意してください)
python3 main.py
可能な変更: ブラウザから Cookie ファイルを取得するために使用する場合は、パスの変更が必要になる場合があり、デフォルトの保存場所も変更する必要がある場合があります。
Windows:
pyinstaller ライブラリをインストールします。
pip インストール pyinstaller
パッケージ化コマンドの例では、各パスに注意してください。次のコードは main.py が配置されているディレクトリで実行されます。
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=ダウンローダー main.py
Ubuntu:
簡単な例:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
MacOS:
ビデオリストの処理とダウンロードを追加します。
複数のダウンロード タスクを同時に実行します。
より多くのカスタムパラメータをサポートします。
...
pypi には yt_dlp に関する特別なリファレンス マニュアルはありません。yt-dlp コマンド ライン プログラムの利用可能なパラメータは github と pypi の両方に書かれていますが、 YoutubeDL.py
の特定の実装を読むと、利用可能なパラメータと意味を取得できます。 。
yt_dlp.YoutubeDL(download_opts)
メソッドでサポートされるパラメータは主に次のとおりです。
YoutubeDL オブジェクトは、オブジェクト コンストラクターが引数で飽和しないように、代わりにオプションの辞書を受け取ります。これらのオプションは、InfoExtractors が使用するダウンローダーとしても使用できます。が追加されるので、これは「相互登録」です。 利用可能なオプション: username: 認証用のユーザー名。password: 認証用のパスワード。videopassword: のパスワード。ビデオへのアクセス.ap_mso: Adobe Pass の複数システムのオペレーター識別子.ap_username: 複数システムのオペレーターのアカウント ユーザー名.ap_password: 複数システムのオペレーター アカウントのパスワード.usenetrc: 代わりに netrc を使用して認証します。netrc_location: デフォルトは netrc ファイルの場所です。 ~/.netrc.netrc_cmd: シェル コマンドを使用して資格情報を取得します。verbose: 追加情報を stdout.quit に出力します。メッセージを stdout.no_warnings に出力しません。 warnings.forceprint には何も出力しません。標準出力に出力するテンプレートのリストにマップされたキーを持つ辞書。許可されるキーは、video または utils.POSTPROCESS_WHEN 内の項目です。互換性を保つため、単一のリストも受け入れられます。 : (テンプレート、ファイル名) を含むタプルのリストにマップされた WHEN (forceprint と同じ) キーを持つ dict です。forcejson: info_dict を強制的に出力します。 JSON.dump_single_json: プレイリスト全体 (またはビデオ) の info_dict を単一の JSON 行として強制的に出力します。force_write_download_archive: 「skip_download」または「simulate」に関係なく、ダウンロード アーカイブを強制的に書き込みます。simulate: 未設定の場合、ビデオ ファイルをダウンロードしません (または None)、listsubtitles、listformats、または list_thumbnails が使用されている場合のみシミュレートしますformat: ビデオ形式コードを参照してください。詳細については、「SELECTION」を参照してください。関数を渡すこともできます。この関数は引数として「ctx」を受け取り、ダウンロードするフォーマットを返します。実装については「build_format_selector」を参照してくださいallow_unplayable_formats: 再生できないフォーマットの抽出とダウンロードを許可します。ignore_no_formats_error: 「いいえ」を無視します。ビデオ形式」エラー。ビデオが実際にダウンロードできない場合でも、メタデータを抽出するのに役立ちます (実験的)format_sort: Aビデオ形式を並べ替えるフィールドのリスト。詳細については、「形式の並べ替え」を参照してください。format_sort_force: 指定された format_sort を強制します。詳細については、「形式の並べ替え」を参照してください。prefer_free_formats: 非フリー コンテナのビデオ形式を優先するかどうか。同じ品質のもの。allow_multiple_video_streams: 複数のビデオ ストリームを 1 つのファイルにマージできるようにするallow_multiple_audio_streams: 複数のオーディオ ストリームを 1 つのファイルにマージできるようにする単一のファイルcheck_formats 形式がダウンロード可能かどうかをテストするかどうか。True (すべてチェックする)、False (何もチェックしない)、または 'selected' (選択された形式をチェック)、または None (エクストラクターによって要求された場合のみチェック) paths: 許可されるキーは、'home' 'temp' および OUTTMPL_TYPES (utils/_utils.py 内)outtmpl のキーです。 : 出力名のテンプレートの辞書。許可されるキーは「default」と OUTTMPL_TYPES (utils/_utils.py 内) のキーです。 youtube-dl では、単一の文字列も使用できますouttmpl_na_placeholder: 使用できないメタ フィールドのプレースホルダー。restrictfilenames: ファイル名に「&」とスペースを許可しないstrim_file_name: ファイル名の長さを制限します (拡張子は除く)windowsfilenames: ファイル名を強制的に Windows と互換性のあるものにするignoreerrors : ダウンロード/後処理エラーで停止しません。ダウンロード エラーのみを無視する場合は「only_download」を指定できます。 CLI の場合は「only_download」、API の場合は Falseskip_playlist_after_errors: プレイリストの残りの部分がスキップされるまで許容される失敗の数allowed_extractors: allowedoverwrites であるエクストラクター名と照合する正規表現のリスト: True の場合はすべてのビデオおよびメタデータ ファイルを上書きし、ビデオ以外のファイルのみを上書きします。 None の場合はファイル、False の場合はファイルを上書きしませんplaylist_items: ダウンロードするプレイリストの特定のインデックス。playlistrandom: ダウンロードプレイリスト アイテムをランダムな順序で並べます。lazy_playlist: プレイリスト エントリを受信したときに処理します。matchtitle: 一致するタイトルのみをダウンロードします。rejecttitle: 一致するタイトルのダウンロードを拒否します。logger: メッセージをログに記録します。Logger インスタンス。logtostderr: 代わりにすべてを stderr に出力します。 stdout.consoletitle: コンソール ウィンドウのタイトルバーに進行状況を表示します。writedescription: ビデオの説明を .description ファイルに書き込みますwriteinfojson: ビデオの説明を .description ファイルに書き込みます.info.json fileclean_infojson: infojsongetcomments から内部メタデータを削除します。writeinfojson も指定されていない限り、ビデオ コメントを抽出します。writeannotations: ビデオの注釈を .annotations.xml ファイルに書き込みますwritethumbnail: サムネイル画像をファイルに書き込みますallow_playlist_files: 「write*」を使用するときに、プレイリストの説明、infojson などをディスクにも書き込むかどうかoptionswrite_all_thumbnails: すべてのサムネイル形式をファイルに書き込みますwritelink: 現在のプラットフォームに応じてインターネット ショートカット ファイルを書き込みます (.url/.webloc/.desktop)writeurllink: Windows インターネット ショートカット ファイルを書き込みます (.url)writewebloclink: macOS インターネット ショートカット ファイルを書き込みます(.webloc)writedesktoplink: Linux インターネット ショートカット ファイルを書き込みます (.desktop)writesubtitles: ビデオの字幕をファイルに書き込みますwriteautomaticsub:自動生成された字幕をファイルに書き込みますlistsubtitles: video で利用可能なすべての字幕をリストしますsubtitlesformat: 字幕の形式コードsubtitleslangs: ダウンロードする字幕の言語のリスト (正規表現も可) リストには、すべてを参照する「all」が含まれる場合があります。利用可能な字幕には、要求された言語から除外するために「-」を付けることができます。例: ['all', '-live_chat']keepvideo:後処理後にビデオ ファイルを保持しますdaterange: utils.DateRange オブジェクト。upload_date が範囲内にある場合にのみダウンロードします。skip_download: ビデオの実際のダウンロードをスキップします。 filecachedir: ファイル システム内のキャッシュ ファイルの場所。False を指定すると、ファイル システム キャッシュが無効になります。 .noplaylist: 疑わしい場合は、プレイリストの代わりに 1 つのビデオをダウンロードします。age_limit: ユーザーの年齢を表す整数。指定された年齢に不適切なビデオは次のとおりです。 Skiped.min_views: