呃,不加字不行。。
# -*- coding: cp936 -*-
import urllib2
import json
import os
import time
def channells():
html = urllib2.urlopen('http://fm.baidu.com').read()
start = html.find("{", html.find("rawChannelList"))
end = html.find(";", start)
listjson = html[start:end].strip() #获取rawChannelList部分
data = json.loads(listjson)
clist = []
for item in data['channel_list']:
clist.append(item['channel_id']) #获取channel_id
for name in clist:
songls(name)
def songls(clist): #获取channellist
temp = 'http://fm.baidu.com/dev/api/?tn=playlist&format=json&id=' + clist
# curl.append(temp)
songid(temp,clist) #更改换歌曲风格
def songid(i,name): #打开clist,并读取songid, 仅读取了curl列表里的第一个,可以更改
sid = []
name = name
idhtml = urllib2.urlopen(i).read()
iddata = json.loads(idhtml)
for iditem in iddata['list']:
sid.append(iditem['id'])
surl(sid,name)
def surl(sid,name): #生成并保存songid链接
surl = []
name = name
for j in sid:
temp = 'http://music.baidu.com/data/music/fmlink?type=mp3&rate=320&songIds=' + str(j)
surl.append(temp)
songl(surl,name)
def songl(surl,name): #查找songlink歌曲真实链接,然后print出来或者mplayer等流媒体播放器边下边播
sl = []
name =name
for i in surl:
slhtml = urllib2.urlopen(i).read()
sldata = json.loads(slhtml)
for item in sldata['data']['songList']:
sl.append(item['songLink'])
write(sl,name)
def write(sl,name):
# print sl
f = file( '%s.lst' %name ,'w' )
for i in sl:
f.write('%s\n' %i)
f.close()
if __name__ == '__main__':
channells()