この記事は著作権法違反を助長するものではありません(実際にダウンロードする際は自己責任でお願いします)
##pytube
pythonでyoutube動画をダウンロードするには、pytubeというモジュールを使います
pytubeはpipコマンドで入ります
$ python -m pip install pytube
エラーが出た場合はこちらのコマンドを試してみてください
$ python -m pip3 install pytube3
##使い方
from pytube import YouTube
url = #YouTube動画のURL
for y in YouTube(url).streams.all():
print(y)
YouTube(url).streams.all()だけだとリストが返ってきて見ずらいのでfor文で見やすくします。
これを実行するとitagと動画の保存形式が出てくると思います
pytubeではこのitagで保存形式を指定します
from pytube import YouTube
url = #YouTube動画のURL
YouTube(url).streams.get_by_itag("itag").download("保存先ディレクトリ(フルパス)"):
上記のプログラムでダウンロードできます
また、download()は何も指定しないと自動的にカレントディレクトリに保存されます。
##ソースコード
from pytube import YouTube
url = input("urlを指定してください")
for y in YouTube(url).streams.all():
print(y)
itag = input("itagを入力してください")
YouTube(url).streams.get_by_itag(int(itag)).download()
print("ダウンロードが終了しました")
itagは数値でないといけないのですが、input()で代入すると文字として扱われてしまうので、int()で数値に変換します
from pytube import YouTube
from timeout_decorator import timeout, TimeoutError
@timeout(300)
def download(url, itag):
YouTube(url).streams.get_by_itag(int(itag)).download()
def set():
url = input("urlを指定してください")
for y in YouTube(url).streams.all():
print(y)
itag = input("itagを入力してください")
return url, itag
def startdownload(url, itag):
try:
download(url, itag)
print("ダウンロードが終了しました")
except TimeoutError:
print("タイムアウトしました")
def main():
url, itag = set()
startdownload(url, itag)
if __name__ == "__main__":
main()
pytubeにはタイムアウトがない(多分)ので、timeout_decoratorでタイムアウトを設定してあげます(上記コードでは5分)
タイムアウトが付いてると処理が少し遅くなるそうなので、もうちょっと長めに設定してもいいかもしれません
timeout_decoratorもpipで入ります
$ python -m pip install timeout_decorator
def文の前に付くアットマーク(@)の文はデコレーターという意味を持ちます
まあデコレーターのことは下記サイトを見てもらえれば分かりやすいと思います
##テキストファイルからURLを取得する場合
from pytube import YouTube
with open("ファイルパス", "r") as file:
url = file.read().split("\n")
for d in url:
for y in YouTube(d).streams.all():
print(y)
itag = input("itagを入力してください")
YouTube(d).streams.get_by_itag(int(itag)).download()
print("ダウンロードが終了しました")
read()でテキストファイルを読み込み、split("\n")で改行で区切りリスト化、それをfor文で回すとできます。
##終わり
いかがでしたでしょうか?
pytubeは便利なモジュールですが、冒頭でも述べたように、実際に使う際は自己責任でお願いします。
##参考