yt-dlpでYouTube等の動画や音源をダウンロードする一方で特にconda/anacondaとpyenv、venvなど他のPython仮想環境を併用、混在していたり、切り替えたことがある場合、yt-dlpの音源ダウンロード時のエラーに起因する場合もあるよという話。
例えば、[Sign in to confirm you’re not a bot. Use --cookies-from-browser or --cookies for the authentication.]とか、[The current session may have the SSAP (server-side ads) experiment which interferes with yt-dlp.]とか。
近年、Pythonでは、基本、ユーザーごとや用途ごとなどに仮想環境を作る方向性になっており、conda/anaconda、pyenv、venvなど複数の方法で仮想化できますよね。
自身は、その内、他の仮想環境を押しのけてでもデフォルトになろうとするかのようなcondaに、特にconda base環境にハマることが何度かありました。
今回ハマったのが、自作スマートスピーカーの中で使っているスクリプト内のyt-dlpでのYouTube音源のダウンロードで、その際のエラーが冒頭例示の「ボットでないことの確認としてサインインしろ」ついては、「--cookies-from-browser や --cookies使ってみろ」とか、「yt-dlpと干渉してるけどサーバサイド広告みたいなのやってんじゃね?」的なワーニングやエラーでした。
気づいてみれば、原因は、スクリプト内のyt-dlpのpython仮想環境(venv)のパスが、マシン起動中のPython仮想環境(conda base)と違ったことで、これを(今回自身のケースでは、conda baseとして)一致させてみると、先の警告やエラーは解消、通常通り、ダウンロード及び楽曲再生できるようになりました。
この自作スマートスピーカーは、専用機の他にも複数のPCにも実装していて、今回エラーとなったのは、唯一、venvではなく、condaがデフォルトとなって(しまって)いて昨年3月に買って同4月頃からメインマシンとしているUbuntuマシンのみ、当該スクリプトは複数マシンで使いまわしており、Ubuntuマシンでもうっかり、yt-dlpのパスがconda baseに修正することなく、venvのパスのままだった次第。
メインマシンについては、既に1年ちょい使い続けていて今回のエラーに遭遇したのが数日前なのでマシンとyt-dlpで想定するPython仮想環境が異なることでyt-dlpのダウンロードエラーになるようになったのは、極々最近と考えて良さそうです。
自作スマートスピーカー機能はマシン起動時に自動起動、現時点では、各マシンにおいて「前回起動から7日経過していたらプレイリストをダウンロード」としているので約12ヶ月なら月4週と仮定しても48週、が、今回のダウンロードエラーは、プレイリストで起きることはなく、音源のダウンロード時なのでメインマシンを起動しつつ、スマートスピーカー機能で、まして数ある音源の中から、YouTube音源を再生した時に限られます。
また、自作スマートスピーカー機能は複数台に実装しており、とは言え、実際、何らかの音楽を再生するのは、一時的な検証を除き、実質専用機とメインマシンの2台のみで頻度としては専用機の方が圧倒的に多く、同時に再生させることはない、自作スマートスピーカーでの音源再生は機能のごくごく一部、更に再生できる音源も多岐にわたり、YouTube音源はその内の、これまた極一部であり、メインであるUbuntuマシンはほぼ毎日起動させている一方、そのマシンで毎日YouTube音源を聴くということはあり得ません。
とは言え、メインマシンでYouTube音源を聴いたのが年1回とか5回とか極々少ないということもあり得ないほどには聴いている自覚はあり、ダウンロードでき、再生できていたようには思うんですよね。
そんな中、検索すると同様のエラーはもっと以前からあったようですが、自身の場合、今まで何の問題もなく再生できていたのに突如、当該エラーに見舞われたので、やはり、これに起因するようなチェックが入ったのは?最近なのではないかと思った次第。
何れにせよ、[--cookies-from-browser]、[--cookies]で解消した人はともかく、それでもダメだった人は、特にconda/anacondaとか、複数のPython仮想環境を切り替えたり、併用したりしていて、パス自体は存在するけどアクティベートされていないとかでマシンのPython仮想環境とyt-dlpパスに齟齬があったりしていないか、確認してみる価値はあるかも。