見出し画像

yt-dlpをPythonから実行する

yt-dlpはyoutubeなどのサイトから動画をダウンロードしてくれるcliツールです。今まではyoutube-dlが有名だったと思いますが現在開発が活発でなくダウンロード速度も低下してきました。yt-dlpはyoutube-dlを改良した代替と考えると良いと思います。

実はこのyt-dlpはターミナルからコマンドとして実行するだけでなくプログラミング言語から呼び出して実行することができます。今回はPythonで埋め込むことを考えて参考にするべき箇所を紹介します。
そして自分自身Pythonからyt-dlpを実行するcliを作成したのでその時に感じたことを書いていきたいと思います。

参考箇所

yt-dlpのgitリポジトリにかなり詳しく書いているので必要な情報に対してそのURLを載せておきます。リポジトリのREADME自体が長いので簡単にまとめておきます。

インストール方法

まずインストール方法です。Pythonで実行するだけなら仮想環境上でpipを用いてインストールするのがおすすめです。一方でそのまま使いたいならbrewが良い気がします。またffmpegのインストールも忘れずに!

Pythonでの実行方法

ここのembedding yt-dlpと言う欄に書いてあります。一応コピペも置いておきます。このまま実行することができます。

from yt_dlp import YoutubeDL

ydl_opts = {'format''bestaudio'}
with YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])

ydl_optsと言う箇所があると思うのですがオプションを表しています。ここのオプションを変更することによって挙動を変えることができます。

利用可能なオプション

オプションがあるのはわかったがどのようなものがあるのかと言う時に参考になります。基本的にyt-dlpをcliとして使った時と同じオプションが使えると思いますが一部使えないものや挙動が微妙に変わるものがあると感じました。


正直なところこれくらいの参考URLがあれば大体Pythonで何を書くべきかわかると思います。

使ってみて感じたこと

実際にyt-dlpをPythonから実行してcliを作ってみました。その時に感じたことがいくつかあるので書いておきます。

微妙に挙動が変わる

利用可能なオプションの箇所に書いたのですが同じオプションでも微妙に挙動が変わるような気がします。(そこで困ってます)

利用可能オプションの説明に書いてあることと挙動が違っていれば一度cliで実行してみて挙動を確認してみると良いと思います。ただこればかりは仕方ないような気もします。

速度は早い

youtube-dlと比べた感じ確かにパフォーマンスは改善されているように思います。10分の動画が5秒でとまではいきませんが特に遅すぎるほどにはならないです。(どれくらいかかるか忘れました)

正直Pythonで実行する必要ないかも

オプションの挙動が変わったりオプションの型がなかったりで正直操作するプログラミング言語としてPythonにこだわる必要はない気がします。それこそGoからコマンドを実行するのでも大丈夫な気がします。例としてGoならos/execパッケージを使えば実行できます。(この場合yt-dlpはグローバルにインストールする必要があります。)

ちなみにPython以外の言語から操作する場合にはcliのオプションをそのまま文字列として実行すれば良いです。

参考までに!

まとめ

cliの実行自体は特に複雑なものではなくそれこそわからないことは参考URLにしたがって調べれば大体作りたいものは作れると思います!


この記事が気に入ったらサポートをしてみませんか?