はじめに
今回は、APIでできることを紹介していこうと思います。
ここでいうAPIとは、インターネットに繋がっていればいつでも呼び出せる機能のようなもののことを言います。
企業や個人が公開してるものを紹介していく予定です。
ニコニコ
ニコニコ動画でマイリスト作成とマイリスト登録する方法
こちらのページを参考に、ニコニコ動画でマイリスト作成とマイリスト登録するものを書いてみました。
#!/usr/bin/env python
#coding: utf8
import sys, re, cgi, urllib, urllib2, cookielib, xml.dom.minidom, time, netrc
import json
#netrc
netrc = netrc.netrc()
userid,a,passwd = netrc.authenticators("nicovideo")
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 mylist_create(name):
cmdurl = "http://www.nicovideo.jp/api/mylistgroup/add"
q = {}
q['name'] = name.encode("utf8")
q['description'] = ""
q['public'] = 0
q['default_sort'] = 0
q['icon_id'] = 0
q['token'] = token
cmdurl += "?" + urllib.urlencode(q)
j = json.load( urllib2.urlopen(cmdurl), encoding='utf8')
return j['id']
def addvideo_tomylist(mid,smids):
for smid in smids:
cmdurl = "http://www.nicovideo.jp/api/mylist/add"
q = {}
q['group_id'] = mid
q['item_type'] = 0
q['item_id'] = smid
q['description'] = u""
q['token'] = token
cmdurl += "?" + urllib.urlencode(q)
j = json.load( urllib2.urlopen(cmdurl), encoding='utf8')
time.sleep(0.5)
#ログイン
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()
#argv
myn = sys.argv[1]
argvs = sys.argv[2:]
#マイリストの作成と動画の登録
mid = mylist_create(myn)
addvideo_tomylist(mid, argvs )
使い方は、簡単で、ファイルに実行権限を与えます。そして、URLを渡した上で実行します。
$ chmod +x nico_mylist_add.py
$ ./nico_mylist_add.py mylistname sm9 sm1097445 sm1715919
変更点は、①ログイン情報はnetrc
から取得するのと、②マイリストの名前及び、URLは引数から取得するのです。
ログイン情報はnetrc
から取得する
netrc
は以下のようになっています。
$ cat ~/.netrc
#############################
machine nicovideo
login sample@gmail.com
password pass123
#############################
処理としては、以下の通りです。
#!/usr/bin/env python
import netrc
netrc = netrc.netrc()
l, a, p = netrccfg.authenticators("nicovideo")
print "My Login = %s" % (l)
print "My Password = %s" % (p)
print "My Account= %s" % (a)
マイリストの名前及び、URLは引数から取得する
#!/usr/bin/env python
import sys
mylistname = sys.argv[1]
argvs = sys.argv[2:]
print mylistname
print argvs
ニコニコ動画で既存マイリストにマイリスト登録する方法
例えば、既存のマイリストにURLを登録するには、以下の様な変更を加えます。
まずは、addvideo_tomylist
を変更します。xxxx
の部分にはgroup_id
を入れます。
ここで、group_id
を取得するには、http://www.nicovideo.jp/api/mylistgroup/list
を使います。たぶん…。
参考:
http://efcl.info/wiki/niconicoapi/
def addvideo_tomylist(smids):
for smid in smids:
cmdurl = "http://www.nicovideo.jp/api/mylist/add"
q = {}
q['group_id'] = xxxxxxxx
q['item_type'] = 0
q['item_id'] = smid
q['description'] = u""
q['token'] = token
cmdurl += "?" + urllib.urlencode(q)
j = json.load( urllib2.urlopen(cmdurl), encoding='utf8')
time.sleep(0.5)
あと、引数には、マイリストの名前を渡す必要がなくなりましたので、その部分を変更します。
#argv
#myn = sys.argv[1]
argvs = sys.argv[1:]
Google+
Google+のAPIを使って、ユーザー情報を取得してみます。
Google Cloud Consoleにて、プロジェクトを作成し、使用するAPIを有効にしていきます。
まず、ブラウザで以下のURLにアクセスし、Authorization code
を取得します。
https://accounts.google.com/o/oauth2/auth?client_id=[クライアント ID]&redirect_uri=[リダイレクト URI]&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.me&response_type=code
なお、[]
は含みません。注意してください。
Authorization code
は、ページURLの code=
以下の部分です。
$ curl -d client_id=[YOUR Client Id] -d client_secret=[YOUR Client Secret] -d redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback -d grant_type=authorization_code -d code=[YOUR Authorization code] https://accounts.google.com/o/oauth2/token
access_token
などが発行されるので、その値を使って、ユーザ情報を取得できます。こちらのページがとても参考になります。
$ curl -H "Authorization: OAuth [YOUR Access_token]" https://www.googleapis.com/plus/v1/people/me
なお、access_token
は、一定期間で失効しますので、Google APIを使ったアプリを作る場合は、refresh_token
を使うとよいでしょう。
参考:
http://mba-hack.blogspot.jp/2013/12/google-api.html
参考
https://github.com/sorah/niconico