はじめに
Twitterを辞め、YOUTUBEアプリの通知では要らないものがたくさんくるため実際にYouTubeを開く以外で確認することが困難になっていたので作成しようとしました。
1 Youtube APIの取得
Google Cloud ConsoleでYouTube Data API v3を生成し取得
2 discord BOTの作成
Discord Developer PortalでBOTを作成し使用するチャンネルに招待してください
参考:
3 ライブラリのインストール
pip install discord.py google-api-python-client
4 コード
チャンネルIDはYOUTUBE URLの末尾から取得できます。
@YOUTUBEみたいになっている場合は変換サイトやプログラムでIDを取得してください。
ディスコードチャンネルIDはサーバーではなく、チャンネルを右クリックしてください。
code
import discord
from discord.ext import tasks
from googleapiclient.discovery import build
import os
# API keys
YOUTUBE_API_KEY = 'YOUR_YOUTUBE_API_KEY'
DISCORD_TOKEN = 'YOUR_DISCORD_BOT_TOKEN'
CHANNEL_ID = 'DISCORD_CHANNEL_ID' # 使用するディスコードチャンネルで右クリックするとコピーできます
YOUTUBE_CHANNEL_ID = 'YOUTUBE_CHANNEL_ID' # チャンネルIDはYOUTUBE URLの末尾です。@何々ではありません。変換する必要があります
# Initialize YouTube API
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
# Initialize Discord bot
intents = discord.Intents.default()
client = discord.Client(intents=intents)
# Save the latest video ID to avoid duplicate notifications
latest_video_id = None
@tasks.loop(minutes=60) # Check every 60 minutes
async def check_new_videos():
global latest_video_id
try:
# Fetch the latest video from the YouTube channel
response = youtube.search().list(
part="snippet",
channelId=YOUTUBE_CHANNEL_ID,
order="date",
maxResults=1,
type="video"
).execute()
video_id = response['items'][0]['id']['videoId']
video_title = response['items'][0]['snippet']['title']
video_url = f"https://www.youtube.com/watch?v={video_id}"
# Check if new video
if video_id != latest_video_id:
# Send a message to Discord
channel = client.get_channel(int(CHANNEL_ID))
await channel.send(f"新しい動画が公開されました: **{video_title}**\n{video_url}")
latest_video_id = video_id
except Exception as e:
print(f"エラーが発生しました: {e}")
@client.event
async def on_ready():
print(f'Logged in as {client.user}')
check_new_videos.start()
# Run the bot
client.run(DISCORD_TOKEN)
5 結果
毎日投稿されている方が確認しやすいのでジャルジャルさんの動画を取得しました。
実際にdiscordにメッセージが送信されているのが確認できました。
6 最後に
X(旧Twitter )を願掛けのために辞めたのでディスコードで通知を受け取れるのは便利です。