第一步:
http://live.readyidu.com/getTypeList 獲得分類列表
第二步: 將上一步獲得的數(shù)據(jù)中的 id 傳入第二個(gè)網(wǎng)絡(luò)請(qǐng)求中 :
http://live.readyidu.com/getNewChannelListByTypeId?typeId=200 例如 200 就是上邊獲得的中央頻道的id
第三步:上一步獲取結(jié)果中,比如說 CCTV1 下有很多個(gè)源,每個(gè)源里都包涵:r, f, i, m 4個(gè)值,i 就是我們要用到的 id
http://live.readyidu.com/getSourceById?id=5181 例如 5181 就是一個(gè)id,使用GET請(qǐng)求這個(gè)地址,但是要注意,再模擬的時(shí)候需要在頭部加上一對(duì):
platform = ios
這樣我們模擬請(qǐng)求就可以正確的取到源了。
{
"code": 200,
"data": "http://livestream.readyidu.com/live/cctv2.m3u8?v=cbmu7y5b",
"errorMessage": "",
"errorCode": 200,
"message": ""
}
# coding:utf-8
import sys, json
from urllib import parse
import http.client
if __name__ == '__main__':
sourceTypeAPI = 'http://live.readyidu.com/getTypeList'
sourceChannelListAPI = 'http://live.readyidu.com/getNewChannelListByTypeId?typeId='
sourceIdAPI = 'http://live.readyidu.com/getSourceById?id='
# 請(qǐng)求源類型列表
conn = http.client.HTTPConnection('live.readyidu.com')
header = {"platform": "ios"}
conn.request(method="GET", url=sourceTypeAPI)
response = conn.getresponse()
res = response.read()
resp = json.loads(res)
typeArray=resp['data']
for item in typeArray:
print(item['type'], "id:", item['id'])
# 獲得這個(gè)分類下的節(jié)目列表
typeSourceURL=sourceChannelListAPI + str(item['id'])
conn.request(method="GET", url=typeSourceURL)
sourceChannelResp = json.loads(conn.getresponse().read())
channelArray=sourceChannelResp['data']['channels']
for channel in channelArray:
# 獲得每個(gè)源的請(qǐng)求地址
print("\t頻道名:", channel['c'])
sourceArray=channel['o']
for source in sourceArray:
# 獲得具體源
sourceIdAPIURL = sourceIdAPI + str(source['i'])
conn.request(method="GET", url=sourceIdAPIURL, headers=header)
sourceResp = json.loads(conn.getresponse().read())
swicher = { # 定義一個(gè)map,相當(dāng)于定義case:func()
1: "極速",
2: "流暢",
3: "一般",
4: "一般"
}
if 'data' in sourceResp:
print("\t\t", swicher.get(source['m']), sourceResp['data'])