ダーク/ライト切り替え

【python】Youtube動画を自分のパソコンにダウンロードして保存する方法

投稿日2021-11-24

Picture of the logo


目次

目次を読み込み中...

プログラム言語pythonにはYouTubeサイトから動画をダウンロードするライブラリがありますので、今回はそれを紹介しようと思います。

※動画のダウンロードは自己責任にてお願い致します。悪用厳禁。万一発生したいかなる損害につきましても当方では一切責を負いかねます。また、youtube側の仕様はコロコロ変わります。現在の方法では将来使えなくなるかもしれません。

# 忙しい人のために

とりあえずすぐ動くものだけ欲しいって人はコチラからwindows版exeファイルがダウンロード出来ます。

# 事前準備

# 用意するもの

  • ・ GUI環境があるOS(winかmacなど)
  • ・ python 3.6以上
  • ・ pytube
  • ・ pyinstaller(windowsの人は任意で)

# 環境構築

pythonはすでにインストールされていて、実行できる状態になっている前提で話しを進めます。また、dockerなどの仮想環境上では上手く動かない場合があります。

まず、上記コマンドでpytubeをインストールしましょう。windowsの方で実行形式に変換したい人はpyinstallerも。

# まずはダウンロード部分を作ってみる

最低限これだけでもダウンロード出来ます。

と実行してinputのところに動画のurlをコピペしてやれば、これだけのコードでダウンロードされ、実行したpythonファイルと同じディレクトリにmp4形式で保存されます。わざわざ低解像度のものをダウンロードする意味は無いと思うので、最高解像度が自動で選ばれるようにしています。

作り込むのが面倒な人はこれでも十分使えます。でもこれじゃ味気ないので、プログラミング未経験者でもGUIで簡単に操作出来るようにダイアログボックスなどのGUI部分を実装しましょう。

dialog

# GUI部分も実装する

# GUI実装にはtkinterモジュールを使う

pythonに標準でインストールされているので、pipインストールの必要はありません。プログラム上でimportするだけです。

上記画像のダイアログボックスはこのようにして作られています。コマンド一つで簡単に作られてるわけではなく、結構面倒くさいです。

各命令の意味は見ればだいたい理解可能かと思いますので細かくは割愛します。画面サイズや説明文などは自由に変更しても全く問題ありません。

唯一注意すべきなのは、一番下の決定ボタンの部分、

という書き方をしないとボタンイベントの関数に引数を渡せないので(command=関数名(引数)ではエラーになる)注意が必要です。引数が必要ない関数ならcommand=functionのように表記できます。

# ボタンが押された時の処理を書く

ボタンイベント時の関数をbtnClickとすると、このようになります。

最初に作ったものに名前を付けて保存を付け加えただけです。お馴染みのダイアログボックスが出てきます。

saveas

# 出来上がったものは

このようになりました。サイズや表示位置など気に入らない人は自由に変更してみて下さい。

# 実行形式exeファイルにしてみる(windowsのみ)

これらのpythonファイルを実行するときにはターミナルから

のように実行しなければなりません。毎回では面倒くさいのでデスクトップ画面からダブルクリックで実行できるようにしてみたいと思います。

実行形式への変換にはpyinstallerを使います。まだインストールしていない人は

でインストールできます。インストールしたら変換したいpythonファイルがあるディレクトリで

と実行しましょう。youtube.pyの部分は自分のファイル名で置き換えてください。変換が完了すると、distとbuildという2つのディレクトリが出来ます。このうちdistディレクトリの中に実行形式のファイルが保存されています。

exefile

macにも似たようなものがあるかもしれませんが知らないのでwindowsのみの紹介になります。






関連記事

【備忘録】2023年版Djangoのstatic保存先をAWS S3にする

blog

Djangoの静的ファイルをS3に保存する手順。2023年1月にAWSに仕様変更が入り、追加の手続きが必要になったので、個人的備忘録を兼ねて書き残しておきます。

Django Restを使って管理しているブログにアクセスカウンタを秒で設置する【初心者】

blog

ブログのバックエンドにDjango Restを使い、ページビューのたびに1ずつ増えるカウンタを作る方法を備忘録も兼ねて書き残しておきます。

【初心者】Pythonで大量の文字列の重複チェックをする方法【備忘録】

blog

Pythonで文字列の配列、リストから重複の有無をチェックする簡単な方法を紹介します

【python】2枚の画像の違いを検出する方法【初心者】

blog

個人的に2つの画像を比較して違いを見分けるアプリが欲しかったので作ってみました。同様のものは既に多数あるかと思いますが初心者でも簡単に作れるので紹介します。

【Python】英語から日本語への翻訳と音声出力【初心者】

blog

Pythonを利用した英語翻訳と日本語読み上げを簡単に実装する方法を紹介します。

Django4にdjango-dbbackupでAWS S3を保存先にしたらハマったので・・・

blog

djangoフレームワークでデータベースのバックアップにdjango-dbbackupを使う人は多いと思いますが、Djangoバージョン4などの比較的新しいバージョンにdjango-dbbackupやbotoをインストールした場合、そのままでは動かない可能性が高いので解決法を書き残しておきます。

Django Rest FrameworkでTaggitによるフィルタリングを最速で実装する

blog

このブログサイトにも利用しています。Django Restに特化した解説が見つからなかったので備忘録も兼ねて書き残しておきます。

Djangoフレームワークで国別アクセス制限を実装する方法

blog

サーバーを運用していると、特定の国からのアクセスを制限したいと思うことはありませんか?例えば、セキュリティの理由や、ビジネスの対象地域を限定したい場合などです。Djangoを使っている場合、簡単に特定の国からのアクセスを制限できる方法があります。この記事では、Djangoで国別アクセス制限を実装する方法を紹介します。

【Python】最強のパスワードの作り方わかったw【超初心者向け】

blog

pythonの標準モジュールでUUIDというモジュールを使うと簡単に強度な乱数を生成できます。32桁の16進数とそれを4つの-(ハイフン)で区切られた合計36文字の文字列をランダムで生成します。これだけで2^128とおりのパターンがあるので一意の固有の識別番号と言っても過言ではないでしょう。今回はそれを2つ並べます。

Unityで端末情報、IPアドレスを取得する方法

blog

Unityにて端末固有情報などをC#コードから取得する方法をまとめました。


スポンサーリンク

このサイトをシェアする