YouTube動画/音声のダウンロード(Python)
プログラムを作成した理由
テレワークで仕事をする際は
「作業用BGM」をyoutubeで流しているのですが、
ついつい
登録チャンネルやショート動画等を見ていたりと脱線してしまう事が多いです
※私イチオシのオススメの作業用BGM
普段から集中して仕事するには
「何かと脱線しがちなyoutubeをまず開かない」が一番ですが、作業用BGMは流したい…
という事で、
【お気に入りの動画(音声)を事前にダウンロード】する為に作成致しました!(変換サイトを調べましたが、ウィルスに感染しそうなサイトばかりでした…)
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | from pathlib import Path from yt_dlp import YoutubeDL import os import sys # 自作モジュール from get_file_content import get_TxtFile_Content from open_folder import open_folder MP3_FORMAT = 'bestaudio[ext=mp3]/bestaudio[ext=m4a]/bestaudio' # 音声のみDL参考:https://teratail.com/questions/90191 MP4_FORMAT = 'best' # 参考:https://self-development.info/%E3%80%90python%E3%80%91youtube%E3%81%AE%E5%8B%95%E7%94%BB%E3%82%92%E9%AB%98%E9%80%9F%E3%81%AB%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/ def youtube_dl(youtube_url, format_name, dl_fold_pass): # DLフォーマット設定 if format_name == "MP3": ydl_opts = {'format': MP3_FORMAT} elif format_name == "MP4": ydl_opts = {'format': MP4_FORMAT} else: print("想定外のフォーマットが指定されました") sys.exit() # 作業ディレクトリ変更(DLフォルダ変更の為) os.chdir(dl_fold_pass) with YoutubeDL(ydl_opts) as ydl: try: # DL開始 result = ydl.download([youtube_url]) # DL結果(0:成功) if result == 0: print("変換完了") # 18禁、メンバーシップ限定等でダウンロード失敗した場合 except Exception as e: print("DLに失敗しました") # 実行ファイル名 FileName = os.path.basename(__file__) # 実行 print("「" + FileName + "」実行開始") # コマンドライン引数取得 args = sys.argv # コマンドライン実行ではない場合、異常終了 if len(args) == 1: # エラーログ記載 print('正しいフローで実行して下さい') # 処理終了 sys.exit() # コマンドライン引数取得 FORMAT_NAME = args[1] youtube_url_list = get_TxtFile_Content("youtube_url.txt", encod = "shift_jis") youtube_url_list = youtube_url_list.split("\n") # 格納フォルダ作成 ※「C:\Users\○○\Desktop\youtube_dl」 DL_FOLD_PASS = os.path.expanduser('~/Desktop') + "\\" + os.path.splitext(FileName)[0] # 作成フォルダが既に存在していてもOKとする(エラーで止めない) Path(DL_FOLD_PASS).mkdir(exist_ok=True) # 動画URLループ for YOUTUBE_URL in youtube_url_list: # 変換内容事前確認 print("youtube_url:", YOUTUBE_URL , "\nフォーマット:" , FORMAT_NAME) print() # 実行 youtube_dl(YOUTUBE_URL, FORMAT_NAME, DL_FOLD_PASS) # ダウンロードフォルダを開く open_folder(DL_FOLD_PASS) # 完了メッセージ print("実行完了致しました!") |
導入&実行方法
注意点
下記等の動画はダウンロード出来ないのでご了承下さい。
- 有料チャンネル
- メンバー限定
- 年齢制限(R-18)
※「一般ユーザーが閲覧可能な動画」のみダウンロード可能なものと思われます。
Python環境が無い方へ
Python環境が無い端末では、上記Pythonコードを実行出来ないですが、
windows端末なら実行可能な環境を用意致しました!
「気になって記事見に来たけどPython動かした事無いし諦めよう…」
と思われた方は下記にて導入&実行してみて下さい!
導入&実行方法
1、下記リンクから「【実行フォルダ】youtube_dl.zip」を好きなフォルダにダウンロード&解凍する
※セキュリティソフトにダウンロードがブロック(削除)される場合は、
セキュリティソフトを閉じてからダウンロードして下さい。
2、「youtube_url.txt」を開き、ダウンロードしたい動画URLをコピペして上書き保存して閉じる
2、
動画をダウンロードしたい場合は「【MP4】youtube_dl_実行.cmd」をダブルクリックする
音声をダウンロードしたい場合は「【MP3】youtube_dl_実行.cmd」をダブルクリックする
※セキュリティソフトにブロックされる場合は、
セキュリティソフトを閉じてから実行して下さい。
3、黒い実行画面が閉じるまで待機する
4、デスクトップに「youtube_dl」フォルダが作成&表示されたら完了!
感想
動画/音声ダウンロード、変換は
下記いずれかだと思っておりましたが、
- 怪しげな無料サイト
- 安全だが有料サービス
今回のコードで「安全な無料システム」を実現する事が出来ました
※ダウンロードしてしまえば、広告も表示されないのが地味に嬉しい点です
「Pythonで出来る事」がまた一つ増えて嬉しい限りです
編集履歴
2022/06/25 新規作成
2022/08/18 オススメ記事タグを追加