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) ) 結果を見てみる。...

February 19, 2022

PythonでExifをいじる

exifreadというライブラリが有名らいし.githubにもあるし,pipでも入る. EXIF付きのファイルをopenして,process関数に渡すと,EXIFに含まれるtag, keyをパースしてくれる. これを利用して,flickrから落としてた写真のファイル名のプレフィックスに日時を入れてソートするためにコーディングした. import exifread import sys import os ''' Inserting taken-date-time at the beggining of base filename. ''' def getTakenDateTime(filename): with open(filename) as f: tags = exifread.process_file(f) for tag in tags.keys(): if 'DateTimeOriginal' in tag: #print 'key=%s, val=%s' % ( tag, tags[tag] ) datetime='%s' % tags[tag] datetime=datetime.replace(':', '') datetime=datetime.replace(' ', '_') return datetime if __name__ == '__main__': for i in sys.argv[1:]: basename = os.path.basename(i) dirname = os.path.dirname(i) datetime = getTakenDateTime(i) src = i dst = '%s/%s_%s' % (dirname, datetime, basename ) print basename, dst os....

August 27, 2015