import requests
import json
from urllib import parse
import time
import subprocess

# 2.0 新增，监测收费房并自动开始录制

NOW = int(time.time())

# flag = 0
flag = int(subprocess.getoutput('cat /home/uftp/bookmark.txt'))

count = 0
# bj_list = []


# Ding !!!!!
def send_message(title, text):
# 请求的URL，WebHook地址
        webhook = 'https://oapi.dingtalk.com/robot/send?access_token=4b8e7de0defb55fdf001b6c928b258512f9af6ebbb565713e834c97d7f81f730'
        #构建请求头部
        header = {
                'Content-Type': 'application/json',
                'Charset': 'UTF-8'
        }
        message = {
                'msgtype': 'markdown',
                'markdown': {
                        'title': title,
                        'text': text
                }
        }

        message = json.dumps(message)

        info = requests.post(url=webhook,data=message,headers=header)
        # print(info.text)

url = 'https://api.winktv.co.kr/v1/live/bookmark'

# 需要更改cookie

cookie = 'partner=winktv; sessKey=b333ba64c04827f7ae634a090cb5a11e3305ec34a61da39db8448b6005252f00; userLoginIdx=17217562; userLoginYN=Y; userLoginSaveYN=N; 3be3f8e358abbf54cec643229de77fc9e4f3f0bbc9b171580d45d13aaa374c16=MG7nwp0dLYBPyLY27N3T1GaoMEquOz5Fu%2FgS7MbExPRIuVZxcrW6IqOMqJnDdQBOMQT44S6t7tF1EDt2kJaSvsI1kfVGxdiTS9fUPsSE9m1XkUxTCtIUjz3dNbGDDrnsI6lBzV9Brk11lHRJEbeGxPQQw8K2MxA3ScdcDGx9yOMm5Y9%2FnBV53kMhmfsj551Y'

# body
data = 'offset=0&limit=60&isLive=Y&width=280&height=158&imageResize=crop'

HEADERS = {
            "accept": "application/json, text/plain, */*",
            "accept-language": "en-US,en;q=0.9",
            "content-type": "application/x-www-form-urlencoded",
            "sec-ch-ua": "\"Chromium\";v=\"104\", \" Not A;Brand\";v=\"99\", \"Google Chrome\";v=\"104\"",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-platform": "\"Windows\"",
            "sec-fetch-dest": "empty",
            "sec-fetch-mode": "cors",
            "sec-fetch-site": "same-site",
            "x-device-info": "{\"t\":\"webPc\",\"v\":\"1.0\",\"ui\":17217562}",
            "cookie": cookie,
            "Referer": "https://www.winktv.co.kr/",
            "Referrer-Policy": "strict-origin-when-cross-origin"
}

# 需要更改的项

# i3 = 'imDD-bP4_GRIzTYOYUcvzDIzvrBvtQHnCTk4SvsRDh2SxZympPEAcD5ayvwR2hafmWSuoBLocF9qSWN8I6DzjryEYGVX_8hrTWhewcBOghQhnUM8C9ZqSqhbDGlDlZOvtVIv_TLrQP1bEFiykdMvtVInZTLrtmxrCIaimby7pVInyTLrQNZrDKcyxnt4c91ABSd4TuQbCa9ClpZGnS2W1Eg4tOZ81ABykoZ7cMtWb9wNTP1bCF2fx_QGpBLWBT6qZOleCFeTmrSTtHMhB9oqSoN8IGDD3uthl'

# AY = '1f0e9a068d84e577932977619ac33b0ea6f0ae7acf925ca82b56a828313bae40'
# yQ = '08d1f8b51f024ef0800866981e6e03ff715b1e6786d74e89f9ac6fdecfd39574'
# o3 = 'f0ec59c2fc1081d2199acf13f1231c0675d0d7ed198c10b7aa49a832302d1e57'

# FormData = {
#         'Y6K2VQRw0MfwbPfZ4Dna':'224',
#         'AYNUR1c5v-yi4dNLpZWlOU':'126',
#         'AYUcvzSBe-yi4dNLpZWlOU':'Y',
#         '_i3nY6v7ot9WIAugPuZ6Pj3WlOU':i3,
#         'Yt40SkS4eFP1sNLe4Dna': NOW,
#         'AYohuyc98ugPuZ6Pj3WlOU':AY,
#         'yQv1sB81otLfILAZU_XYXoaA':yQ,
#         'o3GVexFtLZADj4Idn1w0S34Bzo':o3,
#         'YtK1kkS4aBf-Yxfc4Dna':'webPc',
#         'y6RycBO1oZLfADX_9tKZXoaA':'1.0.0',
# }

# data = parse.urlencode(FormData)


def getBjList(url, headers, data):
        bj_list = []
        count = 0
        try:
                content = requests.post(url=url, headers=HEADERS, data=json.dumps(data)).text
                content = json.loads(content)
                for bookmark in content['list']:
                        if 'fanLevel' in bookmark['media']:
                                count += 1
                                # bj_list.append(bookmark['media']['userId'])
                                bj_list.append({
                                        'userId':       bookmark['media']['userId'],
                                        'startTime':bookmark['media']['startTime'],
                                        'code':         bookmark['media']['code'],
                                        'storage':      bookmark['media']['storage'],
                                        'user':         bookmark['media']['user'],
                                        'browser':      bookmark['media']['browser'],
                                        'fanLevel': bookmark['media']['fanLevel'],
                                        'liveType': bookmark['media']['liveType']
                                        })
                return bj_list, count
        except:
                err = '# ERROR'
                return 404, err

bj_list, count = getBjList(url, HEADERS, data)

if bj_list != 404:
        date = time.strftime('%H:%M', time.localtime())
        text = '# {}\n# *{} ---> {}*\n'.format(date, flag, count)
        if flag != count:
                new_bj = [] # 存储新开收费的bj
                if flag > count:
                        for bj in bj_list:
                                text += '- {}\n'.format(bj['userId'])
                if flag < count:
                        bj_exist = []
                        with open ('/home/uftp/bjList.json', 'r') as f:
                                bjList = json.load(f)
                        # 将正在播出的bj排除
                        for bj in bjList:
                                bj_exist.append(bj['userId'])
                        for bj in bj_list:
                                if bj['userId'] not in bj_exist:
                                        text += '- {}\n'.format(bj['userId'])
                                        text += '> - {}\n'.format(bj['startTime'])
                                        text += '> - {}\n'.format(bj['code'])
                                        text += '> - {}\n'.format(bj['storage'])
                                        text += '> - {}\n'.format(bj['user'])
                                        text += '> - {}\n'.format(bj['browser'])
                                        text += '> - {}\n'.format(bj['fanLevel'])
                                        text += '> - {}\n'.format(bj['liveType'])
                                        new_bj.append(bj) # 将新的bj添加到列表
                send_message('Bookmark', text)
                subprocess.getstatusoutput('echo {} > /home/uftp/bookmark.txt'.format(count))
                # 将bj_list作为json格式文件写入bjList.json
                with open('/home/uftp/bjList.json', 'w') as f:
                        json.dump(bj_list, f)
                # 执行autorec.py获得直播源地址并开始录制
                # for bj in new_bj:
                #         if bj['liveType'] != 'rec' and int(bj['user']) > 12:
                #                 real_url = subprocess.getoutput('python3 /home/uftp/autorec.py {} {} {}'.format(bj['code'], bj['storage'], bj['browser']))
                #                 if rel_url != '404':
                #                         subprocess.getstatusoutput('bash /home/uftp/autorec.sh {} {} {}'.format(bj['userId'], bj['fanLevel'], real_url))
                #                         # 成功开始录制之后进行通知
                #                         start = '# Start Now\n- {}\n- {}'.format(date, bj['userId'])
                #                         send_message('Start', start)
                # 查看该脚本是否添加到crontab中
                job = subprocess.getoutput('crontab -l | grep getBookmark')
                if 'getBookmark' not in job:
                        subprocess.getstatusoutput('( crontab -l | grep -v getBookmark) | crontab - && (crontab -l | cat; echo "*/2 * * * * python3 /home/uftp/getBookmark.py >/dev/null 2>&1") | crontab -')
        else:
                addition = ''
                bj_exist = []
                new_bj = []
                with open('/home/uftp/bjList.json', 'r') as f:
                        bjList = json.load(f)
                # 将正在播出的bj排除
                for bj in bjList:
                        bj_exist.append(bj['userId'])
                for bj in bj_list:
                                if bj['userId'] not in bj_exist:
                                        addition += '- {}\n'.format(bj['userId'])
                                        addition += '> - {}\n'.format(bj['startTime'])
                                        addition += '> - {}\n'.format(bj['code'])
                                        addition += '> - {}\n'.format(bj['storage'])
                                        addition += '> - {}\n'.format(bj['user'])
                                        addition += '> - {}\n'.format(bj['browser'])
                                        addition += '> - {}\n'.format(bj['fanLevel'])
                                        addition += '> - {}\n'.format(bj['liveType'])
                                        new_bj.append(bj)
                if addition != '':
                        text += addition
                        send_message('Bookmark', text)
                        with open('/home/uftp/bjList.json', 'w') as f:
                                json.dump(bj_list, f)
                        # 执行getad.py获得直播源地址并开始录制
                        # for bj in new_bj:
                        #         if bj['liveType'] != 'rec' and int(bj['user']) > 12:
                        #                 real_url = subprocess.getoutput('python3 /home/uftp/autorec.py {} {} {}'.format(bj['code'], bj['storage'], bj['browser']))
                        #                 if real_url != '404':
                        #                         subprocess.getstatusoutput('bash /home/uftp/autorec.sh {} {} {}'.format(bj['userId'], bj['fanLevel'], real_url))
                        #                         # 成功开始录制之后进行通知
                        #                         start = '# Start Now\n- {}\n- {}'.format(date, bj['userId'])
                        #                         send_message('Start', start)
else:
        send_message('Bookmark', count)

# print(count)
