var rule = {
    类型: '影视',
    title: '动漫巴士',
    desc: '',
    host: 'http://dm84.site',
    hostJs: async function () {
        let {HOST} = this;
        let html = await request(HOST, {headers: {'User-Agent': UC_UA}});
        HOST = pdfh(html, 'ul&&a:eq(1)&&href');
        if (HOST.startsWith('http')) {
            return HOST;
        } else {
            return 'https://dm84.top'
        }
    },
    url: '/show-fyclass--fyfilter-fypage.html',
    searchUrl: '/s-**---------fypage.html',
    headers: {
        'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/131.0.0.0'
    },
    searchable: 2, quickSearch: 0, timeout: 5000, play_parse: true, filterable: 1,
    filter: 'H4sIAAAAAAAAA+2Wb0sqQRTGv8u89oWu/f8q0QtvLNzIW5AViAh2tdoS9m5RWmSRQWW3rGtFkN7syzgz+i0anTlnJoploYgE3+3veeaZWc+e426KRMjEZIrM2kkyQabjsUSChMhc7JctkNca9CgveDkWX7J76+aETFcrnWylKwsg6ZBST9fpY0OpCsBjzh4rFJWnADzu5nROAXoXz+2HTfAkoHe+ZeQk4HnVs1bzGM6TgLlstV3OQE4CeO3ME2+6ylOAe3pH/GoL9pSAv32zwjIr7P8l38EKmFJ6qrtS1jhpxxZ0iVnxoVO8D1hiK2wNKa13aehRrUdNPaL1iKlbWrdMPaz1sKFHxlEXl4Y+pvUxUx/V+qipj2h9xNSHtT78qlw/kkax3G1a//OmWLqGAhZnxFLYuFWvs387yvk5s5jQT/omR5015SSm5xfs7qlTIWJ91jisbXf2L6AZJAQZB78xop5Lry/Bk6BbsEafi9h8PcDzjsv0oArnSQgyDqxUF3cHOQlBxoH9vuIF9CSgd9tgOQc8CXgv+03qgacAcyseyxQgJwE9t8I9eJgKdC7PnRrmeoDeXblzeMJ3/4KNPBjYvhnY6DceWL93lG/Obyh9Bu/dARq0cr+08tAXtLL4Lmk9lfRHShc+3MqFEt04h5yEIP/3vq3s1Fh2Fc6TMGjlPmnl9As69ti8VwwAAA==',
    filter_url: '{{fl.by}}-{{fl.class}}--{{fl.year}}',
    filter_def: {},
    class_name: '国漫&日漫&欧美漫&动漫电影',
    class_url: '1&2&3&4',

    预处理: async () => {
        return []
    },
    推荐: async () => {
        return []
    },
    一级: async function (tid, pg, filter, extend) {
        let {input, pdfa, pdfh, pd} = this;
        // log('input:', input);
        let html = await request(input);
        let d = [];
        let data = pdfa(html, '.v_list&&li');
        data.forEach((it) => {
            d.push({
                title: pdfh(it, 'a&&title'),
                pic_url: pd(it, '.lazy&&data-bg'),
                desc: pdfh(it, '.desc&&Text'),
                url: pd(it, 'a&&href'),
            })
        });
        return setResult(d)
    },
    搜索: async function (wd, quick, pg) {
        let searchFn = rule.一级.bind(this);
        return await searchFn();
    },
    二级: async function (ids) {
        let {input, pdfa, pdfh, pd} = this;
        let html = await request(input);
        let VOD = {};
        VOD.vod_name = pdfh(html, 'h1&&Text');
        VOD.vod_content = pdfh(html, '#intro&&p:eq(-1)&&Text');
        let playlist = pdfa(html, '.play_list');
        let tabs = pdfa(html, '.tab_control li');
        let playmap = {};
        tabs.map((item, i) => {
            const form = pdfh(item, 'Text');
            const list = playlist[i];
            const a = pdfa(list, 'body&&a');
            a.map((it) => {
                let title = pdfh(it, 'a&&Text');
                let urls = pd(it, 'a&&href', input);
                if (!playmap.hasOwnProperty(form)) {
                    playmap[form] = [];
                }
                playmap[form].push(title + "$" + urls);
            });
        });
        VOD.vod_play_from = Object.keys(playmap).join('$$$');
        const urls = Object.values(playmap);
        const playUrls = urls.map((urllist) => {
            return urllist.join("#");
        });
        VOD.vod_play_url = playUrls.join('$$$');
        return VOD;
    },
    lazy: async function (flag, id, flags) {
        let {input, pdfa, pdfh, pd} = this
        let html = (await req(input)).content;
        const $ = pq(html)
        input = $('iframe').attr('src')
        let php_html = (await req(input)).content
        let data = {
            'url': php_html.match(/ var url = "(.*)"/)[1],
            't': php_html.match(/ var t = "(.*)"/)[1],
            'key': hh(php_html.match(/hh\("([^"]+)"\)/g)[0].match(/"(.*?)"/)[1]),
            'act': php_html.match(/ var act = "(.*)"/)[1],
            'play': php_html.match(/ var play = "(.*)"/)[1]
        }
        let js_html = JSON.parse((await req('https://hhjx.hhplayer.com/api.php', {
            method: 'POST',
            headers: {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
                'Accept': 'application/json, text/javascript, */*; q=0.01',
                'accept-language': 'zh-CN,zh;q=0.9',
                'cache-control': 'no-cache',
                'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
                'origin': 'https://hhjx.hhplayer.com',
                'referer': input
            },
            data: data
        })).content)
        return {pares: 0, url: js_html.url}
    }

}

function hh(t) {
    const e = {
        "00ooQ00": "a",
        "11bbR11": "b",
        "22ccS22": "c",
        "33ddT33": "d",
        "44eeU44": "e",
        "55ffV55": "f",
        "66ggW66": "g",
        "77hhX77": "h",
        "88iiY88": "i",
        "99jjZ99": "j",
        "00kkA00": "k",
        "11llB11": "l",
        "22mmC22": "m",
        "33nnD33": "n",
        "44ooE44": "o",
        "55ppF55": "p",
        "66qqG66": "q",
        "77rrH77": "r",
        "88ssI88": "s",
        "99ttJ99": "t",
        "00uuK00": "u",
        "11vvL11": "v",
        "22wwM22": "w",
        "33xxN33": "x",
        "44yyO44": "y",
        "55zzP55": "z",
        "00AAQ00": "A",
        "11BBR11": "B",
        "22CCS22": "C",
        "33DDT33": "D",
        "44EEU44": "E",
        "55FFV55": "F",
        "66GGW66": "G",
        "77HHX77": "H",
        "88IIY88": "I",
        "99JJZ99": "J",
        "00KKAA00": "K",
        "11LLBB11": "L",
        "22MMCC22": "M",
        "33NNDD33": "N",
        "44OOEE44": "O",
        "55PPFF55": "P",
        "66QQGG66": "Q",
        "77RRHH77": "R",
        "88SSII88": "S",
        "99TTJJ99": "T",
        "00UUAA00": "U",
        "11VVBB11": "V",
        "22WWCC22": "W",
        "33XXDD33": "X",
        "44YYEE44": "Y",
        "55ZZFF55": "Z"
    };
    let n = "";
    const o = atob(t);
    for (let t = 0; t < o.length; t++) {
        let l = o[t];
        for (const [n, c] of Object.entries(e))
            if (o.slice(t, t + n.length) === n) {
                l = c,
                    t += n.length - 1;
                break
            }
        n += l
    }
    return n
}
