Symfoware

Symfowareについての考察blog

Python YouTubeの動画をダウンロード(pytube,Pafy)

PythonでYouTubeの動画をダウンロードする方法を調べたところ、
pytubeとPafyというライブラリが有名なようです。

両方触ってみます。




pytube



こちらを参考にしました。
PythonでYouTubeの動画を自動的に検索ダウンロードする

ソースはこちら。
https://github.com/NFicano/pytube

easy_installでインストールしました。


# easy_install pytube




サンプルはこのようになります。


  1. # -*- coding:utf-8 -*-
  2. from pytube import YouTube
  3. yt = YouTube('https://www.youtube.com/watch?v=0E00Zuayv9Q')
  4. # ダウンロードできる形式を表示
  5. for video in yt.get_videos():
  6.     print video
  7. print '-' * 10
  8. # ファイル名を表示
  9. print(yt.filename)
  10. print '-' * 10
  11. # ダウンロードしたい形式を選択
  12. video = yt.get('mp4', '720p')
  13. # ダウンロードするファイル名を指定
  14. yt.set_filename('download_pytube')
  15. # ダウンロード実行
  16. video.download('./')




実行結果


# python sample.py
<Video: MPEG-4 Visual (.3gp) - 144p - Simple>
<Video: MPEG-4 Visual (.3gp) - 240p - Simple>
<Video: H.264 (.mp4) - 360p - Baseline>
<Video: H.264 (.mp4) - 720p - High>
<Video: VP8 (.webm) - 360p - N/A>
----------
PPAP(Pen-Pineapple-Apple-Pen Official)ペンパイナッポーアッポーペン/PIKOTARO(ピコ太郎)
----------




set_filenameでファイル名を指定していない場合は、元のファイル名
(yt.filenameで取得できた名称)で保存されました。



プログラムを記載しなくても、pytubeというコマンドに引数を指定することで
動画のダウンロードが行えます。


-e 動画形式[mp4]
-r 動画サイズ[720p]
-f ファイル名[down.mp4]
-p ダウンロードフォルダ[./Download]




mp4,720p,ファイル名down.mp4でダウンロードする場合はこんな感じになります。
※ファイルの拡張子は自動的に付与されるようです。


# pytube -e mp4 -r 720p -f down https://www.youtube.com/watch?v=0E00Zuayv9Q








Pafy



こちらを参考にしました。
pythonでyoutubeをナニするPafyがすごくべんり

ソースはこちら。
https://github.com/mps-youtube/pafy

easy_install でインストールしました。


# easy_install pafy




インストール後、importすると警告が表示されました。


>>> import pafy
WARNING:root:pafy: youtube-dl not found; falling back to internal backend.
This is not as well maintained as the youtube-dl backend.
To hide this message, set the environmental variable PAFY_BACKEND to "internal".




youtube-dlも合わせてインストールしておきました。


# easy_install youtube-dl





pytubeと同様のコードはこちら。


  1. # -*- coding:utf-8 -*-
  2. import pafy
  3. video = pafy.new('https://www.youtube.com/watch?v=0E00Zuayv9Q')
  4. # ダウンロードできる形式を表示
  5. for s in video.streams:
  6.     #print(s.resolution, s.extension, s.get_filesize(), s.url)
  7.     print(s.resolution, s.extension)
  8. print '-' * 10
  9. # ファイル名を表示
  10. print(video.title)
  11. print '-' * 10
  12. # 指定した形式で、一番高画質なものを選択
  13. best = video.getbest(preftype="mp4")
  14. print(best.resolution, best.extension)
  15. # ダウンロード
  16. best.download(filepath="./")




pytubeと同様、ytdlコマンドで操作が可能です。

とにかく一番よい画質の動画をダウンロードしたい場合


# ytdl -b "https://www.youtube.com/watch?v=0E00Zuayv9Q"





形式を指定してダウンロードしたい場合は一旦ストリームの情報を取得
※引数はyoutbueのURLのvパラメーター


# ytdl 0E00Zuayv9Q
Stream Type    Format Quality         Size            
------ ----    ------ -------         ----            
1     normal 3gp    [176x144]        0 MB        
2     normal 3gp    [320x180]        1 MB        
3     normal webm [640x360]        5 MB        
4     normal mp4    [640x360]        4 MB        
5     normal mp4    [1280x720]     10 MB        
6     audio m4a    [128k]         1 MB




ストリームの番号を指定してダウンロードします。
以下の指定で、4番(640x360のmp4)をダウンロード。


# ytdl -n4 0E00Zuayv9Q





【参考URL】

PythonでYouTubeの動画を自動的に検索ダウンロードする

https://github.com/NFicano/pytube

pythonでyoutubeをナニするPafyがすごくべんり

https://github.com/mps-youtube/pafy


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/01/23(月) 23:55:46|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<avconv(ffmpeg)でmp4の動画ファイルからjpg形式で画像を取り出す | ホーム | MariaDB 10.0で絵文字の寿司ビール問題に対応する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1953-41c9cd1c
この記事にトラックバックする(FC2ブログユーザー)