ユーチューブショーツ自動ダウンロード - 簡単なコードで一度に終わらせる!

最近、YouTubeのショートパンツ、本当にホットでしょう? スクロール一回するだけで、時間が経つのを知らずに、いくつかのものをずっと見てしまいます。 ところが、私が直接YouTubeにアップロードした動画を管理次元で直接ダウンロードしようとすると、手作業で一つ一つクリックしてダウンロードするには、あまりにも面倒でしょう?

유튜브 쇼츠 자동 다운로드, 출처: Asoso's K-pop Vault
( ユーチューブショーツ自動ダウンロード、出典: 浅草のK-pop Vault )

それで、今日は知人のチャンネルにあるYouTubeショーツの自動ダウンロード機能を実行する簡単なPythonコーディングを用意しました!初心者でも簡単にできるように一行ずつ親切に説明します。

1.準備物: YouTube APIとyt-dlpを設定する

まず、ユーチューブショーツの自動ダウンロードのための YouTube APIと yt-dlpが必要です。YouTube API キーは Google Cloud Consoleで発行することができます。 yt-dlpは、YouTubeなど複数のサイトの動画をダウンロードするのにとても便利なツールです。YouTube APIキーの確保は YouTubeリスト抽出:APIとPythonで自動化する方法 ポストをぜひご覧ください!

インストールコマンド

VSコード などのIDEプログラム端末で yt-dlp インストールのためのコマンドを以下のように実行します。

pip install yt-dlp
유튜브 쇼츠 자동 다운로드를 위한 패키지 설치 - VS code 터미널 화면
( ユーチューブショーツ自動ダウンロードのためのパッケージのインストール - VS codeターミナル画面 )

2.ユーチューブショーツの自動ダウンロードをPythonでコーディングする

유튜브 쇼츠 자동 다운로드
( ユーチューブショーツの自動ダウンロードPythonコーディングプロセスの概要 )

基本的な準備ができたので、Pythonコーディングを始めましょう!下記のスクリプト(コード)でYouTubeショーツを自動的にダウンロードすることができます。 各動画のタイトルを基準にファイル名を保存し、年齢制限があるショーツもうまくダウンロードすることができます。

from googleapiclient.discovery import build from googleapiclient.discovery
import yt_dlp
import re

# APIキー入力
API_KEY = 'ここに_API_key_input'

# YouTube APIビルド設定
youtube = build('youtube', 'v3', developerKey=API_KEY)

# ショーツリストとID取得関数を定義します。
def get_shorts_titles_and_ids(channel_id, max_results=100):
    shorts_info = [].
    next_page_token = None

    while len(shorts_info) < max_results:
        request = youtube.search().list(
            part='snippet'、
            channelId=channel_id、
            maxResults=min(50, max_results - len(shorts_info))、
            type='video'、
            videoDuration='short'、
            pageToken=next_page_token
        )
        response = request.execute()

        for item in response['items']['items']:
            title = item['snippet']['title']: title = item['snippet']['title'].
            video_id = item['id']['videoId']: video_id = item['id']['videoId'].
            shorts_info.append((title, video_id))

        next_page_token = response.get('nextPageToken')
        もしnext_page_tokenでなければ
            break

    return shorts_info[:max_results].

# 動画ダウンロード関数
def download_shorts(shorts_info):
    for idx, (title, video_id) in enumerate(shorts_info, 1):
        url = f"https://www.youtube.com/watch?v={video_id}"
        を試してみてください:
            sanitized_title = re.sub(r'[\\/*?:"|]', "", title)
            filename = f"{idx}.{sanitized_title}.mp4"

            ydl_opts = {.
                'format': 'best[ext=mp4]'、
                'outtmpl':ファイル名、
                'noplaylist':True、
            }

            yt_dlp.YoutubeDL(ydl_opts)をydl:
                print(f"Downloading: {filename}")
                ydl.download([url])
                print(f"ダウンロード中: {filename}")

        except Exception as e:
            print(f"ダウンロードに失敗しました {title}: {e}")

# チャンネルIDを入力して実行
channel_id = 'ここに_チャンネル_ID_入力'
shorts_info = get_shorts_titles_and_ids(channel_id)
download_shorts(shorts_info)

3.コード行ごとの説明 - YouTubeショーツ自動ダウンロードのすべて

それでは、Pythonのコーディング履歴を1行ずつ見て、どのように動作するのか見てみましょう!

  • API_KEYはYouTube APIキーを入力する場所です。Google Cloud Consoleで発行されたキーを使用してください。
  • youtube = build('youtube', 'v3', developerKey=API_KEY): YouTube APIに接続する手順です。
  • get_shorts_titles_and_ids 関数です:
    • channel_id: ダウンロードするYouTubeチャンネルのIDを指定します。
    • max_results:インポートするショーツの最大数を指定します。デフォルトは100個に設定されています。
    • next_page_token: 複数ページのショーツをインポートするために nextPageTokenを使用します。
    • video_id, タイトル: 各ショート動画のIDとタイトルを抽出し、リストに追加します。
  • download_shorts 関数です:
    • yt_dlp.YoutubeDL(ydl_opts) as ydl: yt-dlp ライブラリでショート動画をダウンロードします。
    • ydl_opts 設定: mp4 形式でダウンロードします、 outtmplでファイル名を設定します。

このコードを実行すると、指定したYouTubeチャンネルからショートパンツが自動的にダウンロードされます。ファイル名はショーツのタイトルを基準に保存されるので、好きなように簡単に探すことができます。

4.FAQ-よくある質問

Q1.動画のダウンロードができないときはどうすればいいですか?

まず、API_KEYとchannel_idが正しく設定されていることを確認してください。 そしてyt-dlpが最新バージョンであることを確認し、必要に応じてターミナルでpip install --upgrade yt-dlpでアップデートしてください。

Q2.ユーチューブショーツ以外の一般動画もダウンロードできますか?

はい、可能です。 get_shorts_titles_and_ids関数でvideoDuration='short'オプションを削除すると、チャンネルにアップロードされたすべての動画を取得してダウンロードすることができます。

Q3.特定の解像度や画質でのみダウンロードしたい場合はどうすればいいですか?

ydl_optsの'format'オプションを修正して希望の解像度を指定することができます。例えば、'format': 'best[height<=720]'のように設定すると、720p以下の解像度でのみダウンロードします。

Q4.動画タイトルの代わりにカスタムファイル名で保存できますか?

はい、filename変数を変更して好きなファイル名に設定することができます。例えば、"{idx}.CustomName.mp4"形式でファイル名を指定すると、ショートパンツごとに固有のカスタムファイル名で保存されます。

Q5.年齢制限のある動画はどうやってダウンロードできますか?

yt-dlpは、年齢制限のある動画もほとんど迂回してダウンロードすることができます。 ただし、一部の動画は追加認証が必要な場合があります。その場合は、yt-dlpのドキュメントで詳細な設定方法をご覧ください。

Q6.一度に多くのショーツをダウンロードしたい場合はどうすればいいですか?

基本的にmax_resultsパラメータを調整して、インポートするショーツの数を増やすことができます。 ただし、YouTube APIのリクエスト制限を考慮して、最大500個までダウンロードすることをお勧めします。

Q7.ダウンロード速度を上げる方法はありますか?

yt-dlpは基本的に最適化された速度で動画をダウンロードしますが、ネットワーク環境によって速度が異なる場合があります。ダウンロード速度が遅い場合は、他のネットワークに切り替えるか、インターネット接続の状態を確認してください。

Q8.このコードでプレイリストの動画もダウンロードできますか?

現在のコードでは、特定のチャンネルのショートだけをダウンロードするように設定されています。プレイリストをダウンロードするには、channelIdの代わりにplaylistIdを指定してyt-dlpのプレイリストオプションを活用します。

Q9.ファイルが重複してダウンロードされたり、上書きされるリスクはありますか?

コードで各動画の固有番号をファイル名に追加するため、ファイルが重複する可能性はほとんどありません。 ただし、タイトルが同じ場合がありますので、「{idx}.{sanitized_title}.mp4"のように一意の番号を追加する方法を維持してください。

Q10.コード実行時に「Bad Request」エラーが発生します。理由は何ですか?

'Bad Request'エラーは、APIリクエストに問題がある場合や、YouTube側のポリシー変更が原因で発生する可能性があります。この場合、API設定を再確認するか、yt-dlpをアップデートしてから再試行してください。

#用語解説

YouTube API: YouTubeが提供するプログラミングインターフェースで、開発者がYouTubeの機能を自分のアプリケーションに統合できるようにするツールです[1]。

yt-dlp: YouTubeなど様々なウェブサイトから動画をダウンロードできるようにするコマンドラインプログラムです。

Google Cloud Console: Googleが提供するウェブベースのインターフェースで、開発者がGoogle Cloudプロジェクトとリソースを管理できるプラットフォームです。

ピップ: Pythonパッケージをインストールして管理するツールです。

IDE統合開発環境(Integrated Development Environment)の略で、コード作成、デバッグ、実行など開発に必要なツールを一つのプログラムで提供するソフトウェアです。

チャンネルID: YouTubeで各チャンネルを一意に識別する文字列です。

APIキー: アプリケーションがAPIを使用する際に認証に必要な固有の識別子です。

機能: 特定のタスクを実行するコードブロックで、再利用が可能で、プログラムの構造を改善するのに役立ちます。

例外処理: プログラム実行中に発生する可能性のあるエラーを管理するプログラミング手法です。

解像度のことです:ディスプレイや画像の鮮明さを示す指標で、通常は横×縦ピクセル数で表されます(例:1920×1080)。

類似の投稿