import re
import json
import requests
from urllib import parse

name = input('BjId: ')

pre_add = 'https://live-global-cdn-v02.sooplive.co.kr/live-stmc-36/auth_master_playlist.m3u8?aid='
pre_real = 'https://live-global-cdn-v02.sooplive.co.kr/live-stmc-36/'

# address的变量
a_url = 'https://live.sooplive.co.kr/afreeca/player_live_api.php?bjid='+name
#-------panda的账号---------
a_cookie = 'AbroadChk=OK; AbroadVod=OK; _tt_enable_cookie=1; _ttp=01KERRSYJT3QS0ZJBQHZSNWC6S_.tt.2; _au=a6bc728096abee5c4c4e23c6271207ab; _au3rd=a6bc728096abee5c4c4e23c6271207ab; _ausa=0xa6430d6b; _ausb=0x8ad457c3; AuthTicket=.A32.pxqRXFPZNcY9Qg1.DCedHip9-jhwPEes2mgiY09gKapSorhJ1x2GURtqGxzWOD7vvJuzbNSP5GefGfs-EaP8jDHLtNE35jiBfKNreHHqqZvtlPQShQj7GeU7hlgB8M7OHXUgun_6MpTbQSdeT1bk9nthak-LDjvz26Pqlt0z0MfTneR4rbn_9YvU-H39dr95DAF94fbgIP1Y9yOoitKwgGy_7WdOhIPb1N1XN7MQXBEzW3LP4_Y5kos1aUWDYTD1scKqkNeGIoH4O95PpGCD8N-3iVceSTetY1kC8favoALys3YqIm6ZvzV8RAtPyzI7wid2TtbdIjlSicTa-Dep_SknGlz1XQfpV4MXqxW0GQn5BvZGvIn-HiAtc_ceMnt1A_xdCGavpoLSQqm9oJ--Y7itdMje0X9R-EIPNUmRI2W76HRj_JI8rY4SZgGxHwFtmfFUOSiIKzbTObhkosIqCn3uwqvmeMdfUyUJof8RcX_qCtUuXU7cdPovco3KVZNx47Uf_rqGx5c1eC97TkZMNXC41M8X40nvCT7cE5A-E4YS18arUjgRe3D2WPJAGkfDK7aVrOYaBw9qmwDU8bvhwghl4Pojwfwxs0aDCNuAXTdWFy6LHcoI9oKsX_Q; BbsTicket=n2n44660; UserTicket=uid%3Dn2n44660%26uno%3D40127086%26age%3D31%26sex%3DA%26A%3DAAE%26B%3DBADB%26unick%3Dn2n44660%26apply_date%3D1537192696%26name_chk%3D1%26sess_adult_chk%3D1%26broad_name_chk%3D1%26change_password%3D1%26chnnl_cd%3D1%26chnnl_name_chk%3D1; isBbs=1; RDB=c8030000000000434e000000000000000000000000000000010000001f1f0000000000000001; BbsSaveTicket=.A32.pxqRXFPZNcY9Qg1.iHWMwfYCszA-cNsz5e-Ujw; NextChangePwd=1; _gid=GA1.3.1640418901.1768210384; FCCDCF=%5Bnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C%5B%5B32%2C%22%5B%5C%2215a525d4-9a7e-471a-a715-729289188185%5C%22%2C%5B1768210363%2C744000000%5D%5D%22%5D%5D%5D; FCNEC=%5B%5B%22AKsRol9Z6_StFvURSgYtvCHvBccian6LIQwurtHVwbzmVBD3ZwPq-50diaSCkF_kpZwFyuqTth2P6bcpyB_WMfgBhnbrQGFNcIYjbUFU9Q9ITRoO_dSPEgmucmpwrpbbUozPlwzZiWqZEp_MIuu239N7r3weoq5Cnw%3D%3D%22%5D%5D; soop-navigation-ui-config=dark; theme=dark; laravel_session=KbvAPJaoRg2kpW5h23nJkjmydt2SuP6pp3VaaVCK; ttcsid=1768210365020::nysHn7DTyyR0kuDKbEjQ.1.1768210443708.0; ttcsid_CVU84L3C77U4IK27ACL0=1768210365020::dH_4XwF76-yEEhg0XU97.1.1768210443708.1; ttcsid_D0HB2BJC77U7VNGA55KG=1768210365214::kzr5SCqSKhkdmU2U3t3j.1.1768210443709.1; _ga_FYG2CP3CCS=GS2.1.s1768210364$o1$g1$t1768210518$j60$l0$h0; _ga_8SG9NL61XE=GS2.1.s1768210364$o1$g1$t1768210518$j60$l0$h0; _ga_9PY781H32Y=GS2.1.s1768210364$o1$g1$t1768210518$j60$l0$h0; _ga=GA1.3.2082666990.1768210365; _gat=1; _ga_KV34D9945N=GS2.3.s1768210385$o1$g1$t1768210519$j60$l0$h0'
a_headers = {
            # "Accept": "application/json, text/plain, */*",
            # "Accept-Encoding": "gzip, deflate, br, zstd",
            # "Accept-Language": "en-US,en;q=0.9",
            # "Content-Type": "application/x-www-form-urlencoded",
            "Cookie": a_cookie,
            # "sec-ch-ua": '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
            # "sec-ch-ua-mobile": "?0",
            # "sec-ch-ua-platform": '"macOS"',
            # "sec-fetch-dest": "empty",
            # "sec-fetch-mode": "cors",
            # "sec-fetch-site": "same-site",
            # "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
            # "x-device-info": '{"t":"webPc","v":"1.0","ui":17217562}',
}


def matchUrl(url, headers):
    pattern = r"RESOLUTION=1280x720.*?(auto.*?#)"
    response = requests.get(url=url, headers=headers)
    print(response)
    if response.status_code == 200:
        content = response.text
        # print(content)
        # match = re.search(pattern, content)
        # if match:
        #     url = match.group(1)
        #     return url
        # else:
        #     return 'Error 4'
        lines = content.splitlines()
        for i, line in enumerate(lines):
            if "RESOLUTION=1280x720" in line:
                if i + 1 < len(lines):
                    return lines[i + 1]
        return 'Error 4'
    else:
        print(response.text)
        return 'Error 1'


def getBjUrl(name, url, headers):
    data = f'bid={name}&type=aid'
    data = parse.parse_qs(data)
    try:
        response = requests.post(url=url, headers=headers, data=data)
        if response.status_code == 200:
            content = response.json()
            address = content['CHANNEL']['AID']
            print(address)
            return address
        else:
            return response.text
    except:
        return 'Error 3'


def main():
    address = getBjUrl(name, a_url, a_headers)
    address = pre_add+address
    # print('address\n'+address)
    real_address = matchUrl(address, a_headers)
    real_address = pre_real+real_address
    response = requests.get(url=real_address)
    response = requests.get(url=real_address) # 两遍
    print('real_address:\n' + real_address)
    print('response:\n' + response.text)

if __name__ == '__main__':
    main()
