Skip to content

Instantly share code, notes, and snippets.

@Bakudankun
Last active December 21, 2015 17:36
Show Gist options
  • Save Bakudankun/f5ce452cb857039b1a2b to your computer and use it in GitHub Desktop.
Save Bakudankun/f5ce452cb857039b1a2b to your computer and use it in GitHub Desktop.
VOCALONOBISのランキングを取得してニコニコ動画のマイリストに並べるスクリプト
#!/usr/bin/env python
#coding: utf8
userid="XXXXXXXX@XXXXXXXX"
passwd="YYYYYYYY"
mid=ZZZZZZZZ
import sys, re, cgi, urllib, urllib2, cookielib, xml.dom.minidom, time, json
def getToken():
html = urllib2.urlopen("http://www.nicovideo.jp/my/mylist").read()
for line in html.splitlines():
mo = re.match(r'^\s*NicoAPI\.token = "(?P<token>[\d\w-]+)";\s*',line)
if mo:
token = mo.group('token')
break
assert token
return token
def addvideo_tomylist(mid,smid,desc):
cmdurl = "http://www.nicovideo.jp/api/mylist/add"
q = {}
q['group_id'] = mid
q['item_type'] = 0
q['item_id'] = smid
q['description'] = desc
q['token'] = token
cmdurl += "?" + urllib.urlencode(q)
j = json.load( urllib2.urlopen(cmdurl), encoding='utf8')
def clear_mylist(mid):
j = json.load(urllib2.urlopen("http://www.nicovideo.jp/api/mylist/list?group_id=" + str(mid)), encoding='utf8')
id_list = []
for item in j['mylistitem']:
id_list.append(item['item_id'])
cmdurl = "http://www.nicovideo.jp/api/mylist/delete?group_id=%s&token=%s" % ( mid, token )
for item_id in id_list:
cmdurl += "&" + urllib.quote_plus( "id_list[0][]" ) + "=%s" % item_id
k = json.load( urllib2.urlopen(cmdurl), encoding='utf8')
def getRanking():
rss = urllib2.urlopen("http://vocalonobis.com/feed/?type=1&pages=1")
dom = xml.dom.minidom.parse(rss)
rank = []
for url in dom.getElementsByTagName("link"):
rank.append(url.firstChild.data.rsplit('/', 1)[-1])
return rank
#ランキング取得
rank = getRanking()
#ログイン
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
urllib2.install_opener(opener)
urllib2.urlopen("https://secure.nicovideo.jp/secure/login",
urllib.urlencode( {"mail":userid, "password":passwd}) )
#トークン取得
token = getToken()
#マイリストから動画を全削除
clear_mylist(mid)
#マイリストに動画を登録
for i,smid in enumerate(rank):
addvideo_tomylist(mid, smid, str(i+1).zfill(3) )
time.sleep(0.5)
@Bakudankun
Copy link
Author

タイトルの通り、VOCALONOBISRSSからランキングを取得してニコニコ動画のマイリストに並べるスクリプト。
実際に動かして作ったマイリストはこれ
python 2.6以上3未満向け。
3-5行目にログインIDとパスワードと利用するマイリストIDを指定する。
コードは7割方ニコニコのマイリストAPIの使い方 - lolloo-htnの日記から引っ張ってきました。感謝。
なおご覧のとおり例外処理を一切していないのでご利用は自己責任にて。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment