import re
import json
import time
import requests
from urllib import parse

name = input('BjId: ')

now = str(int(time.time()))

#代理服务器
sock = 'http://127.0.0.1:7890'

proxy = {
    'http': sock,
    'https': sock,
}


# address的变量
a_url = 'https://api.pandalive.co.kr/v1/live/play'
#-------panda的账号---------
a_cookie = 'userLoginSaveYN=Y; userLoginSaveID=Wm1KaVptSmpZZz09; _tt_enable_cookie=1; _ttp=01JTJS3SC1MF42KGP2DFH3B7B1_.tt.2; _gcl_au=1.1.735455984.1778083019; __rtbh.uid=%7B%22eventType%22%3A%22uid%22%2C%22id%22%3A17217562%2C%22expiryDate%22%3A%222027-05-06T15%3A58%3A39.712Z%22%7D; __rtbh.lid=%7B%22eventType%22%3A%22lid%22%2C%22id%22%3A%22M7yRxwcKpyeBJJ6kC8ru%22%2C%22expiryDate%22%3A%222027-05-06T15%3A58%3A39.712Z%22%7D; exelbid-uid=fBNIUay2RflKNSMk3MQT; sessKey=47546cbc-a2ff-4c94-96ec-63eda4fe1a6a; _gid=GA1.3.1470600379.1779288457; userLoginIdx=17217562; userLoginYN=Y; partner=winktv; _gat_UA-193540779-1=1; _gat_gtag_UA_194444882_2=1; _ga=GA1.1.1926602821.1746534365; _ga_ZJ51R4C39H=GS2.3.s1779431056$o55$g0$t1779431056$j60$l0$h0; cto_bundle=ABzGHl9tcEk5YUR2JTJCVXpOZ3JPWENlSmh6ZUlGWEpKNldFMTA4Wlhnd0ZPYW8yNzZoM1hPYVNLWXFsdXdkTzFUdm9aUXYwNSUyQldmYkNKeFU0aWUlMkIzS044aVJ2aFcxSUxoWU9ZQTVKTUU1YkZ4T1hMMGZYaVN1WlpyNmFvYzNrb0htMEtDNmpSclQxMUJtOSUyQkRnQiUyRnFyT3Y1R2dRJTNEJTNE; 79b0c6d4081955eb1c9b2417b9015e73b776b816f05c1f6e3cbf8c71c57259ee=Ti3lzGnOaTkk0cFQwQK8u8efhgH7VNGzhxs8Tkmlz3VnOO3w320DMXjlFyUh9Iev6qXOowqcfp59BvB9lVUMYV%2BV%2BhVgkfZz0B6RhbvnkwM2QljHspfoHZNIMehNdRuD; ttcsid_CPNT7B3C77U5K3OPINOG=1779431056389::Fqq0Pk0oKkq7ym2IUue7.49.1779431076297.1; ttcsid=1779431056391::Q6b1FTbrbFAM8mBkKres.50.1779431076297.0::1.19889.0::19453.7.82.106::0.0.0; _ga_W91XDLC3YE=GS2.1.s1779431055$o58$g1$t1779431077$j38$l0$h538981164; _ga_NGSHFJTQS1=GS2.1.s1779431055$o58$g1$t1779431077$j38$l0$h0; _ga_Z58JX68TPR=GS2.1.s1779431054$o58$g1$t1779431078$j36$l1$h593925710; _ga_0J8HGTPY46=GS2.1.s1779431055$o42$g0$t1779431080$j35$l0$h0'
data = 'offset=0&limit=60&isLive=Y&width=280&height=158&imageResize=crop'
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,
            "Origin": "https://www.pandalive.co.kr",
            "Referer": "https://www.pandalive.co.kr/",
            "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):
    pattern = r'GROUP-ID="720.*\n.*\n(https?://[^\s]+)'
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
        "Origin": "https://www.pandalive.co.kr",
    }
    response = requests.get(url=url, headers=headers)
    if response.status_code == 200:
        content = response.text
        match = re.search(pattern, content)
        if match:
            url = match.group(1)
            return url
        else:
            return 'Error 4'
    else:
        print(response.text)
        return 'Error 1'


def getBjUrl(name, url, headers, proxy):
    data = f'action=watch&userId={name}&password=&shareLinkType='
    data = parse.parse_qs(data)
    try:
        response = requests.post(url=url, headers=headers, data=data, proxies=proxy)
        if response.status_code == 200:
            content = response.json()
            address = content['PlayList']['hls'][0]['url']
            return address
        else:
            return response.text
    except:
        return 'Error 3'


def main():
    address = getBjUrl(name, a_url, a_headers, proxy)
    # print('address\n'+address)
    real_address = matchUrl(address)
    print('real_address:\n' + real_address)

if __name__ == '__main__':
    main()
