運営しているチャンネルなど特定チャンネルの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や業務効率化の受託開発を行なっております。
ご興味をお持ちいただけましたらお気軽にご連絡ください。
Comments