PythonからGoogle Music Betaを叩く
まだ途中。とりあえずログインから情報を取得するまで。
PyAmazonCloudDriveみたいにライブラリ化したいけど、そこまでの馬力がない。。。
#!/usr/bin/env python import sys,re import urllib,urllib2,cookielib import xml.dom.minidom if len(sys.argv)!=3: sys.stderr.write("%s EMAIL PASSWD\n"%sys.argv[0]) sys.exit(2) _,email,passwd=sys.argv #print email,passwd urls=[ "http://music.google.com/", "http://music.google.com/music/listen", "http://music.google.com/music/services/loadalltracks?u=0&xt=%s", ] cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) res=opener.open(urls[0]) body=re.sub(r"\s{2,}"," ",res.read()) form=re.search("<form.*?</form>",re.sub(r"\r|\n"," ",body)).group() inputs="\n".join(re.findall("<input .*?/>",form)) dom=xml.dom.minidom.parseString( re.match("<form.*?>",form).group()+inputs+"</form>") urls.append(dom.getElementsByTagName("form")[0].getAttribute("action")) params={} for tag in dom.getElementsByTagName("input"): params[tag.getAttribute("name")]=tag.getAttribute("value") params["Email"]=email params["Passwd"]=passwd #print params res = opener.open(urls[-1],urllib.urlencode(params)) #print res.code #print res.read() res = opener.open(urls[1]) #print res.code xt_cookie=cj._cookies["music.google.com"]["/music"]["xt"] #print xt_cookie xt=xt_cookie.value #print xt res = opener.open(urls[2]%xt,urllib.urlencode({"json":"{}"})) #print res.code print res.read()
使い方
administrator@CF-T4 ~ $ ./test1_googlemusic.py ./test1_googlemusic.py EMAIL PASSWD administrator@CF-T4 ~ $ ./test1_googlemusic.py someone@gmail.com YourPassword