サンプルコードを動かしたい
昨日詰まっていたapiキーの取得方法を見つけた。
キーワード検索はできた。
月ノ美兎「それゆけ!学級委員長」MV 【#帰れない百物語】100個怖い話するまで帰れない2020【月ノ美兎/にじさんじ】 ★初心者歓迎★月ノ美兎ちゃん限定なりきりチャット★Free Chat★ 月ノ美兎・爆誕SP2020【ヨーロッパ企画実況・Wiki閲覧・凸待ち】 輪!Moon!dass!cry! / coverd by JK組(月ノ美兎・樋口楓・静凛) 【#にじ宇宙人狼】疑い合い、はじめました【Among US/月ノ美兎】 【クイズにじオネア】最初からいた奴が解けないわけなくない!?【にじさんじ/月ノ美兎】 「夢で見た月ノ美兎」の目撃情報をお伝えします 10分で分かる月ノ美兎【にじさんじ公式】 【にじさんじ】フェミノ美兎まとめ【月ノ美兎】 月ノ美兎の夢を見たいリスナーが狂気すぎるwwww【にじさんじ/切り抜き】 【マイクラ肝試し2020】 JK組・屋台お廻り編【にじさんじ / 月ノ美兎視点】 【新髪型お披露目】念願のポニーテール!!!!【にじさんじ/月ノ美兎】 【マイクラ肝試し2020…?】 JK組タイムスリップで肝試し編【にじさんじ / 月ノ美兎視点】 つきのみと没カット集 【マイクラ肝試し2020】 JK組・肝試し編【にじさんじ / 月ノ美兎視点】 【キャラリレー】月ノ美兎、声真似生主への第一歩【Fall Guys】 月ノ美兎の百物語史上最も怖かった話 一期生でご飯行った話、かえみとに挟まる?ハジキ[にじさんじ切り抜き/樋口楓/月ノ美兎/静凛/渋谷ハジメ/勇気ちひろ/モイラ様/鈴谷アキ/える] にじさんじオーディションの思い出を語る月ノ美兎 次元を超えてくる月ノ美兎っぽい人 (#にじ宇宙人狼)で無双する椎名唯華【にじさんじ/夜見れな/不破湊/本間ひまわり/月ノ美兎】 シャニマスのSSRアニメ演出に大興奮する月ノ美兎【にじさんじ切り抜き/月ノ美兎】 チュルリラ・チュルリラ・ダッダッダ!/和田たけあき(くらげP) coverd by 月ノ美兎
ちなみにソースコードはこんな感じになった。
#!/usr/bin/python from apiclient.discovery import build from apiclient.errors import HttpError from oauth2client.tools import argparser DEVELOPER_KEY = "API_KEY" YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" def youtube_search(options): youtube = build( YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY ) search_response = youtube.search().list( q=options.q, part="id,snippet", maxResults=options.max_results ).execute() videos = [] for search_result in search_response.get("items", []): if search_result["id"]["kind"] == "youtube#video": videos.append("%s" % search_result["snippet"]["title"]) for data in videos: print(data) if __name__ == "__main__": argparser.add_argument("--q", help="Search term", default="月ノ美兎") argparser.add_argument("--max-results", help="Max results", default=25) args = argparser.parse_args() try: youtube_search(args) except HttpError as e: print("An HTTP error %d occurred:¥n%s" % (e.resp.status, e.content))
チャンネルID指定もできるみたい。
検索処理
search_response = youtube.search().list( # q=options.q, channelId=options.channel_id, part="id,snippet", maxResults=options.max_results, ).execute()
channelIDパラメータ
# channelIDパラメータ argparser.add_argument("--channel-id", help="Channel ID", default="UCCzUftO8KOVkV4wQG1vkUvg")
youtubeのurlを仕様を理解できたのでvideoIdと組み合わせるとこんなかんじ。
【マインクラフト】👹ホロ鯖わからせ鬼ごっこinハロウィン洋館👹【ホロライブ/宝鐘マリン】->(https://www.youtube.com/watch?v=QX8qG9qWKfc) 【はいしんよてい💘】【ホロライブ/宝鐘マリン】->(https://www.youtube.com/watch?v=LQontk074pY) 【パスパルトゥー】ゲーム内で描いた絵が売れる💰神絵師の真価が試される・・・🖌【ホロライブ/宝鐘マリン】->(https://www.youtube.com/watch?v=7HGA-3Z3YMo) 【東方紅魔郷EX】🔥フランちゃんを倒しつつ雑談できるのか?🔥(できない)【ホロライブ/宝鐘マリン】->(https://www.youtube.com/watch?v=Ja6emp5Y9NY) 【パスパルトゥー】一発書きイラスト得意ウーマン❣今回はハッピーエンドを目指す✨【ホロライブ/宝鐘マリン】->(https://www.youtube.com/watch?v=K8i8VDL9o48) 【#ホロファン座談会】5人でマシュマロいただくぜw【ホロライブ三期生】->(https://www.youtube.com/watch?v=5hAK7ZwLhew) 【Keep Talking and Nobody Explodes】ぺこマリ探偵団、爆弾解除の謎!【ホロライブ/宝鐘マリン/兎田ぺこら】->(https://www.youtube.com/watch?v=YX5GcFjkDSo) 【絵と雑談】7月突入!!7月といえばぁ~~~?!?!【ホロライブ/宝鐘マリン】->(https://www.youtube.com/watch?v=qRY7Yj2cv0I)
検索ロジック
for search_result in search_response.get("items", []): if search_result["id"]["kind"] == "youtube#video": videos_titles.append("%s->(https://www.youtube.com/watch?v=%s)" % (search_result["snippet"]["title"], search_result["id"]["videoId"]))
ある程度操作がわかってきたので簡易的なツールでも作ってみようと思う。
作業用bgmとしてcitypopを聞くのが好きなのでcitypopプレイリストもどきでも作ろうと思う。
検索パラメータ
# 検索パラメータ argparser.add_argument("--q", help="Search term", default="CITYPOP")
タイトルとurlを取得してデータフレームに追加する。
for search_result in search_response.get("items", []): if search_result["id"]["kind"] == "youtube#video": videos_titles.append("%s" % search_result["snippet"]["title"]) videos_url.append("https://www.youtube.com/watch?v=%s" % search_result["id"]["videoId"]) df = pd.DataFrame(index=[], columns=[]) df["title"] = videos_titles df["url"] = videos_url
データフレーム内のtitleとurlを引っ張りfor文で回してwebbrowser.openでブラウザを開く。
for title, url in zip(df['title'], df['url']): print(test_color.Color.PURPLE + ("Now Playing is [%s] ♫♫" % title) + test_color.Color.END) webbrowser.open(url, new=1) print(test_color.Color.RED + ("Press enter to listen to the next song!") + test_color.Color.END) get_key = input()
不格好ではあるがこれで形にはなった。