高质量直播源获取-python

第一步:
http://live.readyidu.com/getTypeList 获得分类列表

第二步: 将上一步获得的数据中的 id 传入第二个网络请求中 :
http://live.readyidu.com/getNewChannelListByTypeId?typeId=200 例如 200 就是上边获得的中央频道的id

第三步:上一步获取结果中,比如说 CCTV1 下有很多个源,每个源里都包涵:r, f, i, m 4个值,i 就是我们要用到的 id

http://live.readyidu.com/getSourceById?id=5181 例如 5181 就是一个id,使用GET请求这个地址,但是要注意,再模拟的时候需要在头部加上一对:
platform = ios

这样我们模拟请求就可以正确的取到源了。

{
"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='

    # 请求源类型列表
    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'])
        # 获得这个分类下的节目列表
        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:
            # 获得每个源的请求地址
            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 = {  # 定义一个map,相当于定义case:func()
                    1: "极速",
                    2: "流畅",
                    3: "一般",
                    4: "一般"
                }
                if 'data' in sourceResp:
                    print("\t\t", swicher.get(source['m']), sourceResp['data'])

来自:http://bbs.cnsat.net/thread-249654-1-1.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2018年的这趟疗休养差点让丽丢了性命 中午吃饭的时间,在食堂丽拿着手机跟我说,你看你看,就是我们这趟旅行,都过去...
    金声说今事阅读 231评论 0 0
  • 说媒 2014-04-02 20:18 今天上班路上偶遇美的妈妈,她一个劲地夸奖她的女婿。说她的女婿会挣钱体贴家人...
    81d1aa263da清风阅读 260评论 0 0
  • 一天就是一生,一年就是一辈子 每个黎明即起的清晨,我就幸福的歌唱;每当看见太阳从东方灿烂升起,我黑黑的脸就眉飞色扬...
    一枚冰儿阅读 262评论 0 0
  • 大城市生活不易,节奏很快,而且不知不觉间还会耗费很多精力。 上班辛苦,晚上到家也晚;为了补偿,就想多玩一会儿,难免...
    计然阅读 838评论 0 1