Youtubeの動画リストをRSSで受け取る
Youtubeの動画更新をSlackに通知するスクリプトを組毛としていたら、YoutubeのAPIを使うにはGoogle Cloudのde APIキーを発行する必要があるとのこと。これはメンドーだと思いつつも、他に手段がないと思っていたので、最初はそれでやってました。 後日、調べたら、YoutubeのチャネルIDからRSSフィードのURLが生成できることを知りました。これを使えばAPIキーなしで、動画のリストを取得できます。もちろん、APIを使った方が検索条件をいろいろ設定できるのだが、今回は動画更新があれば通知するということをやりたいので、RSSで十分だったりする。 チャネルIDからRSSのURLを作る YoutubeのチャネルIDはURLをみるとわかる。例えば、ブラウザでYoutubeに行ってそのチャネルを開いて、 https://www.youtube.com/channel/UC_ak3ZurSDtT3Kv1RFdrgiA というURLであれば チャネルID: UC_ak3ZurSDtT3Kv1RFdrgiA ということになる。 後はこのチャネルのRSSのURLは以下の通りになる。 RSSのURL => https://www.youtube.com/feeds/videos.xml?channel_id=UC_ak3ZurSDtT3Kv1RFdrgiA Python Beautiful Soupを使って日時とタイトルとURLを抜き出す 後は、スクリプトを書けば良いだけになる。RSSのダウンロードはRequestsを、パースはおなじみのBeautiful Soupを使う。 import requests from bs4 import BeautifulSoup ret = requests.get('https://www.youtube.com/feeds/videos.xml?channel_id=UC_ak3ZurSDtT3Kv1RFdrgiA') soup = BeautifulSoup(ret.text, 'html.parser') # contents: List like [('2014-07-02T00:25:08+00:00', 'New Contents!', 'https://www.youtube.com/watch?v=LmR123'), ...] contents=[] for e in soup.find_all('entry'): date = e.published.get_text() title = e.title.get_text() url = e.link['href'] contents.append( (date, title, url) ) 結果を見てみる。...