LoginSignup
0
4

More than 3 years have passed since last update.

pythonモジュールとしてyoutube_dlを使う.appendix) ニコニコ動画 HTTP 403 error

Last updated at Posted at 2020-05-05

インストール

anaconda

ref) https://anaconda.org/conda-forge/youtube-dl

conda install -c conda-forge youtube-dl

pip(未検証)

ref) https://github.com/ytdl-org/youtube-dl/blob/master/README.md

sudo -H pip install --upgrade youtube-dl

import

import youtube_dl as ydl

動画DL

動画DLにはydl.main()メソッドとydl._real_main()メソッドがある.
ソースを見ればわかるが,前者は後者のラッパーで,追加で例外処理を行う.後述の理由からここでは後者のメソッドを使う.
引数には色々指定できるが(本家git参照),オプション指定子とその実態との間にスペースを入れるとそのスペースも実態に含まれるので注意.

myURL = "https://www.nicovideo.jp/watch/so23335421" #保存したい動画のURL
myOUT = "-oout.mp4" #出力動画ファイル名指定

def main():
    try:
        ydl._real_main([myURL, myOUT])
    except ydl.DownloadError:
        main()

main()

4分以上のニコニコ動画をDLするとき,ydl.DownloadErrorクラスのエラーが出るのだが(実態はurlibのエラーで,執筆時点のyoutube-dlではこのエラーを回避できないように思われる[参考]),実はメソッドを繰り返せば続きからDLでき,DLが完了すれば当然エラーが出なくなる.よってydl._real_main()がydl.DownloadErrorを吐き続ける間は再帰的にydl._real_main()を実行させ続けることでエラーを見ずに済むようになる.

備考

youtube_dlモジュールはsys.exitを多用しているので,jupyter notebookできちんと動そうとしたり,他のプログラムと組み合わせて動かしたいならソースを変えなければならないかも?tryブロックで呼べばなんとかなるかも

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4