# -*- coding: utf-8 -*-
# @Author  : Doubebly
# @Time    : 2025/5/29 22:07


import sys
import hashlib
import time
import requests
import re
import json
sys.path.append('..')
from base.spider import Spider


class Spider(Spider):
    def getName(self):
        return "Aidianying"

    def init(self, extend):
        self.home_url = 'https://m.sdzhgt.com/'
        self.ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
        self.error_url = "https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-720p.mp4"

    def getDependence(self):
        return []

    def isVideoFormat(self, url):
        pass

    def manualVideoCheck(self):
        pass

    def homeContent(self, filter):
        return {
            'class': [{'type_id': '1', 'type_name': '电影'},
          {'type_id': '2', 'type_name': '电视剧'},
          {'type_id': '3', 'type_name': '综艺'},
          {'type_id': '4', 'type_name': '动漫'}],
            'filters': {
    '1': [
        {'key': 'type',
         'name': '类型',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '喜剧', 'v': '/type/22'},
                   {'n': '动作', 'v': '/type/23'},
                   {'n': '科幻', 'v': '/type/30'},
                   {'n': '爱情', 'v': '/type/26'},
                   {'n': '悬疑', 'v': '/type/27'},
                   {'n': '奇幻', 'v': '/type/87'},
                   {'n': '剧情', 'v': '/type/37'},
                   {'n': '恐怖', 'v': '/type/36'},
                   {'n': '犯罪', 'v': '/type/35'},
                   {'n': '动画', 'v': '/type/33'},
                   {'n': '惊悚', 'v': '/type/34'},
                   {'n': '战争', 'v': '/type/25'},
                   {'n': '冒险', 'v': '/type/31'},
                   {'n': '灾难', 'v': '/type/81'},
                   {'n': '伦理', 'v': '/type/83'},
                   {'n': '其他', 'v': '/type/43'}]},
        {'key': 'area',
         'name': '地区',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '中国大陆', 'v': '/area/中国大陆'},
                   {'n': '中国香港', 'v': '/area/中国香港'},
                   {'n': '中国台湾', 'v': '/area/中国台湾'},
                   {'n': '美国', 'v': '/area/美国'},
                   {'n': '日本', 'v': '/area/日本'},
                   {'n': '韩国', 'v': '/area/韩国'},
                   {'n': '印度', 'v': '/area/印度'},
                   {'n': '泰国', 'v': '/area/泰国'},
                   {'n': '其他', 'v': '/area/其他'}]},
        {'key': 'year',
         'name': '年份',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '2024', 'v': '/year/2024'},
                   {'n': '2023', 'v': '/year/2023'},
                   {'n': '2022', 'v': '/year/2022'},
                   {'n': '2021', 'v': '/year/2021'},
                   {'n': '2020', 'v': '/year/2020'},
                   {'n': '2019', 'v': '/year/2019'},
                   {'n': '2018', 'v': '/year/2018'},
                   {'n': '2017', 'v': '/year/2017'},
                   {'n': '2016', 'v': '/year/2016'},
                   {'n': '2015', 'v': '/year/2015'},
                   {'n': '2014', 'v': '/year/2014'},
                   {'n': '2013', 'v': '/year/2013'},
                   {'n': '2012', 'v': '/year/2012'},
                   {'n': '2011', 'v': '/year/2011'},
                   {'n': '2010', 'v': '/year/2010'},
                   {'n': '2009~2000', 'v': '/year/2009~2000'}]},
        {'key': 'lang',
         'name': '语言',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '国语', 'v': '/lang/国语'},
                   {'n': '英语', 'v': '/lang/英语'},
                   {'n': '粤语', 'v': '/lang/粤语'},
                   {'n': '韩语', 'v': '/lang/韩语'},
                   {'n': '日语', 'v': '/lang/日语'},
                   {'n': '其他', 'v': '/lang/其他'}]},
        {'key': 'by',
         'name': '排序',
         'value': [{'n': '上映时间', 'v': '/sortType/1/sortOrder/0'},
                   {'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
                   {'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
    ],
    '2': [
        {'key': 'type',
         'name': '类型',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '国产剧', 'v': '/type/14'},
                   {'n': '欧美剧', 'v': '/type/15'},
                   {'n': '港台剧', 'v': '/type/16'},
                   {'n': '日韩剧', 'v': '/type/62'},
                   {'n': '其他剧', 'v': '/type/68'}]},
        {'key': 'class',
         'name': '剧情',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '古装', 'v': '/class/古装'},
                   {'n': '战争', 'v': '/class/战争'},
                   {'n': '喜剧', 'v': '/class/喜剧'},
                   {'n': '家庭', 'v': '/class/家庭'},
                   {'n': '犯罪', 'v': '/class/犯罪'},
                   {'n': '动作', 'v': '/class/动作'},
                   {'n': '奇幻', 'v': '/class/奇幻'},
                   {'n': '剧情', 'v': '/class/剧情'},
                   {'n': '历史', 'v': '/class/历史'},
                   {'n': '短片', 'v': '/class/短片'}]},
        {'key': 'area',
         'name': '地区',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '中国大陆', 'v': '/area/中国大陆'},
                   {'n': '中国香港', 'v': '/area/中国香港'},
                   {'n': '中国台湾', 'v': '/area/中国台湾'},
                   {'n': '日本', 'v': '/area/日本'},
                   {'n': '韩国', 'v': '/area/韩国'},
                   {'n': '美国', 'v': '/area/美国'},
                   {'n': '泰国', 'v': '/area/泰国'},
                   {'n': '其他', 'v': '/area/其他'}]},
        {'key': 'year',
         'name': '时间',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '2024', 'v': '/year/2024'},
                   {'n': '2023', 'v': '/year/2023'},
                   {'n': '2022', 'v': '/year/2022'},
                   {'n': '2021', 'v': '/year/2021'},
                   {'n': '2020', 'v': '/year/2020'},
                   {'n': '2019', 'v': '/year/2019'},
                   {'n': '2018', 'v': '/year/2018'},
                   {'n': '2017', 'v': '/year/2017'},
                   {'n': '2016', 'v': '/year/2016'},
                   {'n': '2015', 'v': '/year/2015'},
                   {'n': '2014', 'v': '/year/2014'},
                   {'n': '2013', 'v': '/year/2013'},
                   {'n': '2012', 'v': '/year/2012'},
                   {'n': '2011', 'v': '/year/2011'},
                   {'n': '2010', 'v': '/year/2010'}]},
        {'key': 'lang',
         'name': '语言',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '普通话', 'v': '/lang/普通话'},
                   {'n': '英语', 'v': '/lang/英语'},
                   {'n': '粤语', 'v': '/lang/粤语'},
                   {'n': '韩语', 'v': '/lang/韩语'},
                   {'n': '日语', 'v': '/lang/日语'},
                   {'n': '泰语', 'v': '/lang/泰语'},
                   {'n': '其他', 'v': '/lang/其他'}, ]},
        {'key': 'by',
         'name': '排序',
         'value': [{'n': '最近更新', 'v': '/sortType/1/sortOrder/0'},
                   {'n': '添加时间', 'v': '/sortType/2/sortOrder/0'},
                   {'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
                   {'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
    ],
    '3': [
        {'key': 'type',
         'name': '类型',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '国产综艺', 'v': '/type/69'},
                   {'n': '港台综艺', 'v': '/type/70'},
                   {'n': '日韩综艺', 'v': '/type/72'},
                   {'n': '欧美综艺', 'v': '/type/73'}]},
        {'key': 'class',
         'name': '剧情',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '真人秀', 'v': '/class/真人秀'},
                   {'n': '音乐', 'v': '/class/音乐'},
                   {'n': '脱口秀', 'v': '/class/脱口秀'}]},
        {'key': 'area',
         'name': '地区',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '中国大陆', 'v': '/area/中国大陆'},
                   {'n': '中国香港', 'v': '/area/中国香港'},
                   {'n': '中国台湾', 'v': '/area/中国台湾'},
                   {'n': '日本', 'v': '/area/日本'},
                   {'n': '韩国', 'v': '/area/韩国'},
                   {'n': '美国', 'v': '/area/美国'},
                   {'n': '其他', 'v': '/area/其他'}]},
        {'key': 'year',
         'name': '时间',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '2024', 'v': '/year/2024'},
                   {'n': '2023', 'v': '/year/2023'},
                   {'n': '2022', 'v': '/year/2022'},
                   {'n': '2021', 'v': '/year/2021'},
                   {'n': '2020', 'v': '/year/2020'}]},
        {'key': 'lang',
         'name': '语言',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '国语', 'v': '/lang/国语'},
                   {'n': '英语', 'v': '/lang/英语'},
                   {'n': '粤语', 'v': '/lang/粤语'},
                   {'n': '韩语', 'v': '/lang/韩语'},
                   {'n': '日语', 'v': '/lang/日语'},
                   {'n': '其他', 'v': '/lang/其他'}, ]},
        {'key': 'by',
         'name': '排序',
         'value': [{'n': '最近更新', 'v': '/sortType/1/sortOrder/0'},
                   {'n': '添加时间', 'v': '/sortType/2/sortOrder/0'},
                   {'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
                   {'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
    ],
    '4': [
        {'key': 'type',
         'name': '类型',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '国产动漫', 'v': '/type/75'},
                   {'n': '日韩动漫', 'v': '/type/76'},
                   {'n': '欧美动漫', 'v': '/type/77'}]},
        {'key': 'class',
         'name': '剧情',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '喜剧', 'v': '/class/喜剧'},
                   {'n': '科幻', 'v': '/class/科幻'},
                   {'n': '热血', 'v': '/class/热血'},
                   {'n': '冒险', 'v': '/class/冒险'},
                   {'n': '动作', 'v': '/class/动作'},
                   {'n': '运动', 'v': '/class/运动'},
                   {'n': '战争', 'v': '/class/战争'},
                   {'n': '儿童', 'v': '/class/儿童'}]},
        {'key': 'area',
         'name': '地区',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '中国大陆', 'v': '/area/中国大陆'},
                   {'n': '日本', 'v': '/area/日本'},
                   {'n': '美国', 'v': '/area/美国'},
                   {'n': '其他', 'v': '/area/其他'}]},
        {'key': 'year',
         'name': '时间',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '2024', 'v': '/year/2024'},
                   {'n': '2023', 'v': '/year/2023'},
                   {'n': '2022', 'v': '/year/2022'},
                   {'n': '2021', 'v': '/year/2021'},
                   {'n': '2020', 'v': '/year/2020'},
                   {'n': '2019', 'v': '/year/2019'},
                   {'n': '2018', 'v': '/year/2018'},
                   {'n': '2017', 'v': '/year/2017'},
                   {'n': '2016', 'v': '/year/2016'},
                   {'n': '2015', 'v': '/year/2015'},
                   {'n': '2014', 'v': '/year/2014'},
                   {'n': '2013', 'v': '/year/2013'},
                   {'n': '2012', 'v': '/year/2012'},
                   {'n': '2011', 'v': '/year/2011'},
                   {'n': '2010', 'v': '/year/2010'}]},
        {'key': 'lang',
         'name': '语言',
         'value': [{'n': '全部', 'v': ''},
                   {'n': '国语', 'v': '/lang/国语'},
                   {'n': '英语', 'v': '/lang/英语'},
                   {'n': '日语', 'v': '/lang/日语'},
                   {'n': '其他', 'v': '/lang/其他'}]},
        {'key': 'by',
         'name': '排序',
         'value': [{'n': '最近更新', 'v': '/sortType/1/sortOrder/0'},
                   {'n': '添加时间', 'v': '/sortType/2/sortOrder/0'},
                   {'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
                   {'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
    ]
}
        }

    def homeVideoContent(self):
        video_list = []
        t = str(int(time.time() * 1000))
        # t = '1723292093234'
        data = f'key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
        data_md5 = hashlib.md5(data.encode()).hexdigest()
        data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
        h = {
            "User-Agent": self.ua,
            'referer': self.home_url, 't': t, 'sign': data_sha1}
        try:
            res = requests.get(f'{self.home_url}/api/mw-movie/anonymous/home/hotSearch', headers=h)
            data_list = res.json()['data']
            for i in data_list:
                video_list.append(
                    {
                        'vod_id': i['vodId'],
                        'vod_name': i['vodName'],
                        'vod_pic': i['vodPic'],
                        'vod_remarks': i['vodVersion'] if i['typeId1'] == 1 else i['vodRemarks']
                    }
                )
        except requests.RequestException as e:
            return {
                'list': [],
                'parse': 0,
                'jx': 0
            }

        return {
            'list': video_list,
            'parse': 0,
            'jx': 0
        }

    def categoryContent(self, cid, page, filter, ext):
        t = cid
        _type = ext.get('type') if ext.get('type') else ''
        __class = ext.get('class') if ext.get('class') else ''
        _area = ext.get('area') if ext.get('area') else ''
        _year = ext.get('year') if ext.get('year') else ''
        _lang = ext.get('lang') if ext.get('lang') else ''
        _by = ext.get('by') if ext.get('by') else ''
        video_list = []
        h = {
            "User-Agent": self.ua,
            'referer': self.home_url,
        }
        try:
            res = requests.get(
                f'{self.home_url}/vod/show/id/{t}{_type}{__class}{_area}{_year}{_lang}{_by}/page/{page}',
                headers=h)
            aa = re.findall(r'\\"list\\":(.*?)}}}]', res.text)
            if not aa:
                return {'list': [], 'parse': 0, 'jx': 0}
            bb = aa[0].replace('\\"', '"')
            data_list = json.loads(bb)
            for i in data_list:
                video_list.append(
                    {
                        'vod_id': i['vodId'],
                        'vod_name': i['vodName'],
                        'vod_pic': i['vodPic'],
                        'vod_remarks': i['vodVersion'] if i['typeId1'] == 1 else i['vodRemarks']
                    }
                )
        except requests.RequestException as e:
            return {'list': [], 'msg': e}
        return {'list': video_list, 'parse': 0, 'jx': 0}

    def detailContent(self, did):
        ids = did[0]
        video_list = []
        t = str(int(time.time() * 1000))
        # t = '1723292093234'
        data = f'id={ids}&key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
        data_md5 = hashlib.md5(data.encode()).hexdigest()
        data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
        h = {
            "User-Agent": self.ua,
            'referer': self.home_url,
            't': t, 'sign': data_sha1
        }
        try:
            res = requests.get(f'{self.home_url}/api/mw-movie/anonymous/video/detail?id={ids}', headers=h)
            data = res.json()['data']
            play_list = data['episodeList']
            vod_play_url = []
            for i in play_list:
                name = i['name']
                url = ids + '/' + str(i['nid'])
                vod_play_url.append(name + '$' + url)

            video_list.append(
                {
                    'type_name': data['typeName'],
                    'vod_id': ids,
                    'vod_name': data['vodName'],
                    'vod_remarks': data['vodRemarks'],
                    'vod_year': data['vodYear'],
                    'vod_area': data['vodArea'],
                    'vod_actor': data['vodActor'],
                    'vod_director': data['vodDirector'],
                    'vod_content': data['vodContent'],
                    'vod_play_from': '老僧酿酒',
                    'vod_play_url': '#'.join(vod_play_url)

                }
            )
        except requests.RequestException as e:
            return {'list': [], 'msg': e}
        return {"list": video_list, 'parse': 0, 'jx': 0}

    def searchContent(self, key, quick, page='1'):
        wd = key
        video_list = []
        t = str(int(time.time() * 1000))
        data = f'keyword={wd}&pageNum={page}&pageSize=12&key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
        data_md5 = hashlib.md5(data.encode()).hexdigest()
        data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
        h = {
            "User-Agent": self.ua,
            'referer': self.home_url,
            't': t, 'sign': data_sha1
        }
        try:
            response = requests.get(
                f'{self.home_url}/api/mw-movie/anonymous/video/searchByWord?keyword={wd}&pageNum={page}&pageSize=12',
                headers=h,
            )
            data_list = response.json()['data']['result']['list']
            for i in data_list:
                video_list.append(
                    {
                        'vod_id': i['vodId'],
                        'vod_name': i['vodName'],
                        'vod_pic': i['vodPic'],
                        'vod_remarks': i['vodVersion'] if i['typeId1'] == 1 else i['vodRemarks']
                    }
                )
        except requests.RequestException as e:
            return {'list': [], 'msg': e}
        return {'list': video_list, 'parse': 0, 'jx': 0}

    def playerContent(self, flag, pid, vipFlags):
        url = pid
        play_url = self.error_url
        data = url.split('/')
        _id = data[0]
        _nid = data[1]
        t = str(int(time.time() * 1000))
        # t = '1723292093234'
        data = f'id={_id}&nid={_nid}&key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
        data_md5 = hashlib.md5(data.encode()).hexdigest()
        data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
        h = {
            "User-Agent": self.ua,
            'referer': self.home_url,
            't': t, 'sign': data_sha1
        }
        h2 = {
            "User-Agent": self.ua,
        }
        try:
            res = requests.get(
                f'{self.home_url}/api/mw-movie/anonymous/v2/video/episode/url?id={_id}&nid={_nid}',
                headers=h)
            play_url = res.json()['data']['list'][0]['url']
        except requests.RequestException as e:
            return {"url": play_url, "header": h2, "parse": 0, "jx": 0}

        return {"url": play_url, "header": h2, "parse": 0, "jx": 0}

    def localProxy(self, params):
        pass

    def destroy(self):
        return '正在Destroy'

if __name__ == '__main__':
    pass