GoogleのYouTube Data API v3を使って、
Discordのメッセージから検索結果を取得するまでの手順。

Gemパッケージのインストール

YouTube Data API v3の利用に必要なのでインストールする。
gem install google-api-client

APIキーを取得する

この辺りを参考にAPIキーを取得してメモしておく。
知っておきたい!YouTube APIの始め方
YouTube Data APIを有効にするのも忘れないように。

使ってみる

動画のタイトルとIDを取得するためのプログラム。

# ytsearch.rb

require 'google/apis/youtube_v3'

GOOGLE_API_KEY = 'ここにAPIキーを入れる'

def ytsearch(query)
    service = Google::Apis::YoutubeV3::YouTubeService.new
    # APIキーを設定
    service.key = GOOGLE_API_KEY
    # 取得する検索結果のオプションを指定
    option = {
        # 検索ワードの指定
        q: query,
        # 検索対象のタイプの指定(video, channel, playlistが使える)
        type: 'video',
        # 返される検索結果の最大数を指定
        max_results: 1,
    }

    # 検索結果を取得
    results = service.list_searches(:snippet, option)

    # タイトル, IDを出力
    title = results.items[0].snippet.title
    id = results.items[0].id.video_id
    return [title, id]
end

複数のデータを取得したい時は、
max_resultsを5などに設定してから

res = Array.new

results.items.each do |item|
    title = item.snippet.title
    id = item.id.video_id
    res << [title, id]
end

return res

みたいにするといいんじゃないでしょうか。

他のパラメータ等についてはここに載ってます。
YouTube Data API (v3)

Botに組み込む

とりあえず出力できるようにする。

# main.rb

require 'discordrb'
require './ytsearch.rb'

TOKEN = 'TOKEN'
CLIENT_ID = 'CLIENT_ID'

bot = Discordrb::Commands::CommandBot.new token: TOKEN,
client_id: CLIENT_ID, prefix: '!'

# 検索コマンド
bot.command(:search) do |event, query|
    result = ytsearch(query)
    # 結果を出力
    event.respond(result[0])
    event.respond(result[1])
end

bot.run

テスト結果

出力結果

以上、discordrbでYouTube検索をする方法でした。

広告