私見この質問は その1つ の複製ではないと思います。これらの理由により:
では、さらに引数を(括弧内に)見てみましょう:
最初にFirefox + Video DownloadHelperで、次にVLCで、最後にyoutube-dlプログラムでいくつかのYouTubeビデオをダウンロードしようとしていますが、それらをブロックしているものがあります。
(その他:「youtube-dlを使用して、後でオフラインで見るためにビデオをダウンロードします」、この質問もダウンロードに焦点を当てていますアプリケーションや他のアプリケーションに関係なく、単一のアプリケーション(youtube-dl)でYouTubeをブロックする)
説明画面には、ダウンロードに関する制限はありません。
(これは他の質問では言及されていません。)
例:同じカテゴリ/ライセンスの2つのビデオをダウンロードしようとしています。最初のビデオは正常に動作し、2番目のビデオは例外を返します。
luis@jupiter:~$ youtube-dl "https://www.youtube.com/watch?v=wo6Sq1h2DI4"
[youtube] wo6Sq1h2DI4: Downloading webpage
[youtube] wo6Sq1h2DI4: Downloading video info webpage
[youtube] wo6Sq1h2DI4: Extracting video information
[youtube] wo6Sq1h2DI4: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: SÂNSCRITO - Aula 6 (Consoantes Mudas Dentais) com Jonas Masetti-wo6Sq1h2DI4.f137.mp4
[download] 100% of 142.54MiB in 04:11
[download] Destination: SÂNSCRITO - Aula 6 (Consoantes Mudas Dentais) com Jonas Masetti-wo6Sq1h2DI4.f251.webm
[download] 100% of 8.75MiB in 00:16
[ffmpeg] Merging formats into "SÂNSCRITO - Aula 6 (Consoantes Mudas Dentais) com Jonas Masetti-wo6Sq1h2DI4.mkv"
Deleting original file SÂNSCRITO - Aula 6 (Consoantes Mudas Dentais) com Jonas Masetti-wo6Sq1h2DI4.f137.mp4 (pass -k to keep)
Deleting original file SÂNSCRITO - Aula 6 (Consoantes Mudas Dentais) com Jonas Masetti-wo6Sq1h2DI4.f251.webm (pass -k to keep)
luis@jupiter:~$ youtube-dl "https://www.youtube.com/watch?v=BbbhZl8xqVY"
[youtube] BbbhZl8xqVY: Downloading webpage
[youtube] BbbhZl8xqVY: Downloading video info webpage
[youtube] BbbhZl8xqVY: Extracting video information
[youtube] BbbhZl8xqVY: Downloading js player en_US-vflHuW2fm
ERROR: Signature extraction failed: Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 905, in _decrypt_signature
video_id, player_url, s
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 820, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 883, in _parse_sig_js
initial_function = jsi.extract_function(funcname)
File "/usr/lib/python2.7/dist-packages/youtube_dl/jsinterp.py", line 241, in extract_function
raise ExtractorError('Could not find JS function %r' % funcname)
ExtractorError: Could not find JS function u'Ny'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
(caused by ExtractorError(u"Could not find JS function u'Ny'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.",)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
YouTubeの制限、ビデオのエンコードの問題、Ubuntuの署名の問題ですか?これがYouTubeの制限である場合、これはすべてのYouTubeビデオに対する制限ですか、それとも数年前にアップロードされたビデオではなく、新しくアップロードされたビデオなど、選択的に機能しますか?
他の質問の出力:
ERROR: Unable to extract info section; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type youtube-dl -U to update.
(出力は少し異なりますよね?)
最後に、考慮すべき問題がさらに2つあります:
最初のビデオは、Python仮想環境(python-virtualenv)内でpython pip install youtube-dl
を使用してpython-pipでインストールしたyoutube-dlの最近更新されたバージョンで正常にダウンロードされました。 Python仮想環境をセットアップして使用する方法については、 buntuで仮想python環境をセットアップして使用する方法 を参照してください。
利用可能なビデオ形式を表示するために使用したコマンドは次のとおりです。
youtube-dl -F "https://www.youtube.com/watch?v=wo6Sq1h2DI4"
最初のYouTubeビデオをダウンロードするために使用したコマンドは次のとおりです。
youtube-dl -f 18 "https://www.youtube.com/watch?v=wo6Sq1h2DI4"
2番目のビデオはyoutube-dlを使用してダウンロードできませんでしたが、私はあきらめませんでした。次のコマンドを実行して、youtube-dlを最新バージョンにアップグレードしました。
pip install --upgrade youtube-dl # inside the Python virtual environment
Python仮想環境が自分のユーザーディレクトリ(~/my-Python-virtual-env
)内にインストールされているため、Sudo
を使用する必要はありませんでした。 youtube-dlをアップグレードした後、このコマンドを実行して2番目のYouTubeビデオをダウンロードしました。
youtube-dl -f 18 "https://www.youtube.com/watch?v=BbbhZl8xqVY"
なぜ単純に使用しないのですか
Sudo pip install --upgrade youtube-dl
?
Ubuntuを使用する理由の1つは、Windowsがアプリケーションをインストールする方法の狂気から逃れるためです。可能な限り、デフォルトのUbuntuリポジトリからパッケージをインストールします。この場合、youtube-dlはPythonプログラムであることを知っているので、ファイルシステムを台無しにすることなく、Python仮想環境に最新バージョンのyoutube-dlをローカルにインストールできます。
もう1つの方法は、youtube-dlスナップパッケージをインストールすることです。
Sudo snap install youtube-dl # start with snap run youtube-dl
これ以降、YouTubeのサービスとアプリケーションのアクセス方法にいくつかの変更が加えられたと思います。
本当です。 Googleは3年前よりも頻繁にYouTube動画へのアクセス方法を変更しているため、youtube-dlを最新の状態に保つには、より頻繁に更新する必要があります。 YouTubeの動画は、アップロードされた日付に関連してほとんどブロックされているように見えることを長年にわたって観察してきました。
Youtube-dlを使い始める前に、Video DownloadHelperというFirefox拡張機能を使用してYouTubeビデオをダウンロードしました。私がyoutube-dlを好むようになったのは、これまでに使用したダウンローダーのYouTubeビデオを正常に取得する可能性が最も高いからです。
YouTubeからビデオをダウンロードする機能は、サイトへのアクセスを好みの方法に制限しようとするため、絶え間ない戦いです。 YouTube利用規約から:
ユーザーは、サービス自体のビデオ再生ページ、埋め込みプレーヤー、またはYouTubeが指定する他の明示的に許可された手段以外の技術または手段を介してコンテンツにアクセスしないことに同意します。
youtube-dl
のメーカーは、YouTubeによって行われた変更を常に一致させ、ユーザーを好みのアクセス方法に戻すことを目指しています。これはあなたがあなた自身のダウンロードで衝突したものです。
youtube-dl
のリポジトリバージョンは古くなったバージョン2016.02.22
であり、バトルラインは最新バージョンレポートでそこから先に進んでいます:
andrew@ilium~$ youtube-dl --version
2016.08.10
youtube-dl
を更新するための推奨方法は、youtube-dl
ダウンロードページ から来ており、Ubuntuリポジトリバージョンを削除するためにわずかに変更されています。
Sudo apt-get remove youtube-dl
Sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
Sudo chmod a+rx /usr/local/bin/youtube-dl
この同じダウンロードページには、curlとpipを使用したアップグレードの手順が表示されます。最終結果は同じであるため、どちらを使用してもかまいません。ただし、リポジトリバージョンを削除することは重要です。必要なyoutube-dl
実行可能ファイルは1つだけです。
注:この方法で自分のシステムをアップグレードしてテストすると、問題が完全に解決され、両方のビデオが正常にダウンロードされました。
興味がある場合は、 こちらをご覧ください YouTubeページ(このページにはエラーの原因が表示されます)からアドレスを抽出し、ダウンロードを成功させるために適切な一致を提供するために必要な努力を確認してください。
参照: