#! /usr/bin/env python3 ''' import time import hashlib import random import sys import subprocess ''' import re import requests import argparse def get_api(url): #r = requests.get('http://www.huya.com/{}'.format(room_id)) r = requests.get(url) channel = re.search(r'"channel":"(\d+)"*,', r.text).group(1) sid = re.search(r'"sid":"(\d+)"*,', r.text).group(1) if channel == '0' or sid == '0': print('Offline') raise Exception('Offline') _hex = '0000009E10032C3C4C56066C6976657569660D6765744C6976696E67496E666F7D0000750800010604745265711D0000680A0A0300000000000000001620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2600361777656226323031377633322E313131302E33266875796146005C0B1300000000{}2300000000{}3300000000000000000B8C980CA80C' hex_content = _hex.format( format(int(channel), 'X').zfill(8), format(int(sid), 'X').zfill(8) ) r = requests.post('http://cdn.wup.huya.com/', data = bytearray.fromhex(hex_content)) if channel not in r.text: print('Offline') raise Exception('Offline') vid = re.search(r'%s-%s[^f]+'%(channel, sid), r.text).group(0) wsSecret = re.search(r'wsSecret=([0-9a-z]{32})', r.text).group(1) wsTime = re.search(r'wsTime=([0-9a-z]{8})', r.text).group(1) line = re.search(r'://(.+\.(flv|stream)\.huya\.com/(hqlive|huyalive))', r.text).group(1) flv_url = 'http://{}/{}.flv?wsSecret={}&wsTime={}'.format(line, vid, wsSecret, wsTime) return (flv_url) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('url') parser.add_argument('ratio',nargs='?',default='') args = parser.parse_args() rid = args.url rat = args.ratio flv_url = get_api(rid) if rat: flv_url = flv_url + "&ratio=" + rat print (flv_url)