ニコニコ動画ランキングから「ゆっくり実況プレイ」タグが含まれる動画を抽出する
ニコニコ動画 ゲーム・デイリー・ランキング 100 件から、特定タグ(ゆっくり実況プレイ)を含む動画だけを抽出します。
使用する RSS フィード: http://www.nicovideo.jp/ranking/fav/daily/game?rss=2.0
使用するニコニコ動画 API:getthumbinfo
このスクリプトは BeautifulSoup モジュールを使用します。 また、正規表現パターンは前回の記事で扱ったものを使用します。
#!/usr/bin/env python # -*- coding: utf-8 -*- # # main.py # import urllib2 import re import time from BeautifulSoup import BeautifulStoneSoup # for XML # # main() -> parse_feed(url) -> contains_tag(url) の順に実行 # search_tag = u'ゆっくり実況プレイ' # |search_tag| を含む動画なら True を返す def contains_tag(url): result = urllib2.urlopen(url) soup = BeautifulStoneSoup(result.read()) for tag in soup.find('tags', domain='jp').findAll('tag'): # タグに「ゆっくり実況プレイ」が含まれるなら、ranking に追加 if tag.string == search_tag: return True return False # RSS フィードから |search_tag| を含む動画 ID を取得し、リストを返す def parse_feed(url): try: result = urllib2.urlopen(url) soup = BeautifulStoneSoup(result.read()) yukkuri_ranking = [] for item in soup('item'): # <item> ~ </item> link = item.link.string # <link> ~ </link> # print link matched = re.compile('s[mo]\d+').search(link) if not matched: continue sm = matched.group() # 'sm000' or 'so000' or 'nm000' thumbinfo_url = 'http://ext.nicovideo.jp/api/getthumbinfo/' + sm # Search tag if (contains_tag(thumbinfo_url)): yukkuri_ranking.append(sm) # Print '[sm15396022] 第20位:【minecraft】底なしの世界17【クリーパーmod】' print '[%s] %s' % (sm, item.title.string) time.sleep(0.1) # Sleep 0.1 sec except Exception, e: print e return yukkuri_ranking def main(): url = 'http://www.nicovideo.jp/ranking/fav/daily/game?rss=2.0' parse_feed(url) if __name__ == '__main__': main()
短時間に連続して getthumbinfo を取得すると HTTP Error 503: Service Unavailable になるので注意。
取得された結果は以下のようになる。
[sm15401142] 第4位:初めてのマインクラフト 25Blocks Dark side's power! [sm15389560] 第8位:【Minecraft】 方向音痴のマインクラフト Season2 Part16 【ゆっくり実況】 [sm15396022] 第17位:【minecraft】底なしの世界17【クリーパーmod】 [sm15395867] 第19位:【Minecraft】The Spider King:サブタイトルが思いつかない【Part3】 [sm15381610] 第32位:【ゆっくり実況】デッドライジング2-幼女と変態紳士とゾンビ達-05 [sm15371980] 第47位:ゆっくり撃つバイオハザードDC【ゆっくり実況プレイ】 2 [sm15391204] 第55位:ゆっくりが吉野家の店長を目指すようです 6杯目 [sm15402232] 第66位:ゆっくり提督が行く R-TYPE TACTICSⅡ 18章-Operation BITTER CHOCOLATE- [sm15377429] 第72位:【ゆっくり実況】絶体絶命都市2を道を外したゆっくり実況。【part23】終 [sm15343730] 第77位:【minecraft】この浮遊した世界で【ゆっくり実況】part17 [sm15355845] 第82位:【ゆっくり実況】縛って巨人を日本一にするpart3【パワプロ14決】 [sm15378705] 第90位:大航海時代Ⅳ【ゆっくり実況プレイPart13】 [sm15332856] 第98位:【パワプロ14決】新潟ゆっくりベイスターズpart11
このアルゴリズムを利用して作っているのが『ゆっくり実況プレイを見る日記』です。