python获取百度fm内容生成lst文件

呃,不加字不行。。
# -*- 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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值