top of page
Search

特定チャンネルのYouTube動画URLリストを月毎などで区切ってまとめてダウンロードする方法

運営しているチャンネルなど特定チャンネルのyoutube動画URLリストをまとめてダウンロードしたかったのですが、UI上に機能がなく、ChatGPTに聞いてコードを書きました。


誰かの役に立つかもしれないのでこちらに載せておきます。


Google colabで動くコードになっています。


YouTube Data APIを用います。keyの取得方法は以下がわかりやすかったです。



以下コードです。


# 以下の値をあなたのAPIキー、チャンネルID、年、月に置き換えてください
api_key = 'GCPで取得したAPIキー'
channel_id = '特定のチャンネルID'
year = 2024  # 調整してください
month = 4    # 調整してください
filename = f"{year}-{month}_videos.csv"

import csv
import requests
from datetime import datetime
from google.colab import files

def get_videos(api_key, channel_id, year, month):
    base_url = "https://www.googleapis.com/youtube/v3/search"
    # 指定月の初日と最終日を計算
    start_date = datetime(year, month, 1).isoformat() + 'Z'
    if month == 12:
        end_date = datetime(year + 1, 1, 1).isoformat() + 'Z'
    else:
        end_date = datetime(year, month + 1, 1).isoformat() + 'Z'

    params = {
        'part': 'snippet',
        'channelId': channel_id,
        'maxResults': 50,
        'order': 'date',
        'type': 'video',
        'publishedAfter': start_date,
        'publishedBefore': end_date,
        'key': api_key
    }

    videos = []
    while True:
        response = requests.get(base_url, params=params)
        data = response.json()
        items = data.get('items', [])
        for item in items:
            video_title = item['snippet']['title']
            video_id = item['id']['videoId']
            video_id = item['id']['videoId']
            video_url = f"https://www.youtube.com/watch?v={video_id}"
            videos.append((video_title, video_url))
        
        if 'nextPageToken' in data:
            params['pageToken'] = data['nextPageToken']
        else:
            break

    return videos

# CSVファイルに保存する関数
def save_to_csv(videos, filename):
    with open(filename, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['Title', 'URL'])
        for video in videos:
            writer.writerow(video)
    return filename

videos = get_videos(api_key, channel_id, year, month)
saved_file = save_to_csv(videos, filename)

# ファイルのダウンロード
files.download(saved_file)

少しでも参考になれば幸いです。



インダストリアル・ドリーム株式会社について


国内で初めて独自LLMを取り入れたwebサービスである創作支援アプリAI BunChoを開発・運営しています。

以前ねとらぼ様にご掲載いただきました。


また、生成AIに関するPoCや業務効率化の受託開発を行なっております。

ご興味をお持ちいただけましたらお気軽にご連絡ください



167 views0 comments

Recent Posts

See All

Comentarios


bottom of page