影视聚合(资源站)

<js></js>

分享者: yoursatan_admin (14249)发布时间: 5天前

影视聚合订阅源 使用说明
 
源站切换方法
 
1. 点击登录,弹出设置窗口
2. 在【选择影视源站】下拉框,直接选择需要的资源站
3. 确认保存(点击右上角✅按钮),即刻切换为对应接口
4. 刷新分类,有些主分类为空,点击其他分类即可

5. 排错:切换不生效,检查下拉序号与脚本数组下标顺序保持一致
 
调试模式:故障排查时开启,日常使用关闭。
 
源站维护方法
 
重要:源站修改需同步修改搜索和分类脚本中的SITE_CONFIG 数组
 
修改已有源(域名失效、路径变更)
 
1. 在搜索和分类脚本头部找到 SITE_CONFIG
2. 同步修改对应源的  api / apiPrefix / pageParam / catAc 
3.保存后,刷新分类查看生效
 
2. 新增影视源
 
1. 在搜索和分类脚本头部 SITE_CONFIG 数组末尾新增源对象

2. 登录UI配置,在 chars 数组末尾添加  下标‑xxx资源 
3.保存刷新,即可在登录下拉框选择新源
 
特殊源注意
 
极速资源: catAc:"?ac=videolist" ,不可改为 ?ac=list 
 
常见故障
 
- 分类/列表无返回:开启调试模式,核对域名、接口路径是否正确、接口是否失效
- 分页异常:将该源 pageParam 改为 page 
 
维护核心:所有脚本内的源配置数组必须完全一致,顺序不能错乱。
二维码导入
{
    "articleStyle": 3,
    "cacheFirst": false,
    "customOrder": -10106438,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "jsLib": "function upLoginData(formData){\n    let saveObj = {};\n    source.log(\"【登录回调触发】formData=\"+JSON.stringify(formData));\n\n    let selectText = formData[\"选择影视源站\"] ?? \"0-红牛资源\";\n    let debugSwitch = !!formData[\"调试模式\"];\n\n    saveObj[\"选择影视源站\"] = selectText;\n    saveObj[\"调试模式\"] = String(debugSwitch);\n\n    source.setLoginInfoMap(saveObj);\n    let afterSave = source.getLoginInfoMap();\n    source.log(\"【登录写入回读】\"+JSON.stringify(afterSave));\n}\n",
    "lastUpdateTime": 1786091637539,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        \"name\": \"选择影视源站\",\n        \"type\": \"select\",\n        \"chars\": [\n            \"0-红牛资源\",\n            \"1-光速资源\",\n            \"2-豪华资源\",\n            \"3-速播资源\",\n            \"4-虎牙资源\",\n            \"5-新浪资源\",\n            \"6-金鹰资源\",\n            \"7-360资源\",\n            \"8-最大资源\",\n            \"9-OK资源\",\n            \"10-西瓜资源\",\n            \"11-无水印资源\",\n            \"12-非凡资源\",\n            \"13-爱奇艺资源\",\n            \"14-茅台资源\",\n            \"15-牛牛资源\",\n            \"16-鸭鸭资源\",\n            \"17-猫眼资源\",\n            \"18-豆瓣资源\",\n            \"19-如意资源\",\n            \"20-电影天堂资源\",\n            \"21-优质资源\",\n            \"22-索尼资源\",\n            \"23-极速资源\",\n            \"24-暴风资源\",\n            \"25-快车资源\",\n            \"26-无尽资源\",\n            \"27-魔都资源\"\n        ],\n        \"default\": \"0-红牛资源\"\n    },\n    {\n        \"name\": \"调试模式\",\n        \"type\": \"toggle\",\n        \"chars\": [\"🔳关闭\", \"✅开启\"],\n        \"default\": \"🔳关闭\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_wrapBefore\": true\n        }\n    }\n]\n",
    "loginUrl": "function login(){\n    \/\/ 返回 true:允许弹出登录UI,用于切换源站、调试开关\n    return true;\n}\n",
    "preload": true,
    "ruleArticles": "$.list",
    "ruleDescription": "<!-- 关闭阅读新版的放大功能,固定顶部标题为文字而不是链接 -->\n<head>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/hls.js@1.5.17\/dist\/hls.min.js\"><\/script>\n<style>\n*{margin:0;padding:0;box-sizing:border-box;}\nbody{background:#111;color:#fff;padding:8px;}\nh3{margin:8px 0;}\nh6{margin:4px 0 10px;color:#aaa;font-size:14px;}\n\n\/* 重点修改:移除固定16:9强制比例,video高度自动跟随视频源 *\/\nvideo{\n    max-width:100%;\n    width:100%;\n    height:auto;\n    background:#000;\n    display:block;\n}\n\n.toolbar{display:flex;gap:10px;align-items:center;margin:10px 0;flex-wrap:wrap;}\n#sourceSelect{padding:6px 8px;border-radius:4px;background:#222;color:#fff;border:1px solid #444;}\n.playlist{display:grid;grid-template-columns:repeat(auto‑fill,minmax(85px,1fr));gap:8px;margin:12px 0;}\n.playlist-item{padding:8px 4px;background:#222;text-align:center;border-radius:4px;cursor:pointer;font-size:14px;}\n.playlist-item.active{background:#2563eb;}\n<\/style>\n<title>{{$.vod_name}}<\/title>\n<\/head>\n<body>\n<h3>{{$.vod_name}}<\/h3>\n<h6>🔖{{$.vod_score}} &nbsp;🏷️ {{$.vod_class}}<\/h6>\n\n<div class=\"container\">\n  <video id=\"myVideo\" controls poster=\"\"><\/video>\n  <div class=\"toolbar\">\n    <label>播放线路:<\/label>\n    <select id=\"sourceSelect\"><\/select>\n  <\/div>\n  <h3>播放列表<\/h3>\n  <div class=\"playlist\" id=\"playlistWrap\"><\/div>\n<\/div>\n<\/body>\n<script>\n\/\/ 安全读取模板字段,防止引号注入截断\nconst tplPlayUrl = document.createElement('textarea');\ntplPlayUrl.innerHTML = `{{$.vod_play_url}}`;\nconst urlsRaw = tplPlayUrl.value;\n\nconst tplPlayFrom = document.createElement('textarea');\ntplPlayFrom.innerHTML = `{{$.vod_play_from}}`;\nconst playFromRaw = tplPlayFrom.value;\n\nconst tplPic = document.createElement('textarea');\ntplPic.innerHTML = `{{$.vod_pic}}`;\nconst vodPic = tplPic.value;\n\nconst videoEl = document.getElementById('myVideo');\nconst playlistWrap = document.getElementById('playlistWrap');\nconst sourceSelect = document.getElementById('sourceSelect');\n\nif(vodPic) videoEl.poster = vodPic;\n\n\/\/ 解析全部线路\nlet sourceList = [];\nconst sourceTextArr = urlsRaw.split('$$$').filter(s=>s.trim()!=='');\nconst sourceNameArr = playFromRaw.split('$$$');\n\nfor(let i=0;i<sourceTextArr.length;i++){\n    const srcText = sourceTextArr[i].trim();\n    const srcName = (sourceNameArr[i] || `线路${i+1}`).trim();\n    const epItemsRaw = srcText.split('#').filter(s=>s.trim()!=='');\n    const episodes = [];\n\n    for(const epStr of epItemsRaw){\n        const dollarPos = epStr.indexOf('$');\n        if(dollarPos <=0) continue;\n        const epName = epStr.substring(0,dollarPos).trim();\n        const url = epStr.substring(dollarPos+1).trim();\n        if(epName && url){\n            episodes.push({ep:epName, url:url});\n        }\n    }\n    if(episodes.length>0){\n        \/\/ 判断该线路是否包含m3u8链接\n        const isM3u8Source = episodes.some(e=> e.url.endsWith('.m3u8'));\n        sourceList.push({\n            sourceName: srcName,\n            isM3u8: isM3u8Source,\n            episodes: episodes\n        })\n    }\n}\n\n\/\/ 排序:m3u8线路优先前置,普通线路后置\nsourceList.sort((a,b)=>{\n    if(a.isM3u8 && !b.isM3u8) return -1;\n    if(!a.isM3u8 && b.isM3u8) return 1;\n    return 0;\n})\n\nlet currentSourceIndex = 0;\nlet currentEpIndex = -1;\nlet hls = null;\n\n\/\/ 填充线路下拉\nfunction renderSourceSelect(){\n    sourceSelect.innerHTML = '';\n    sourceList.forEach((src,idx)=>{\n        const opt = document.createElement('option');\n        opt.value = idx;\n        opt.innerText = src.sourceName + (src.isM3u8?\" (m3u8)\":\"\");\n        sourceSelect.appendChild(opt);\n    })\n}\n\n\/\/ 渲染当前线路的剧集列表\nfunction renderEpisodeList(){\n    playlistWrap.innerHTML = '';\n    const currSource = sourceList[currentSourceIndex];\n    if(!currSource) return;\n    currSource.episodes.forEach((ep,idx)=>{\n        const dom = document.createElement('div');\n        dom.className = \"playlist-item\";\n        dom.innerText = ep.ep;\n        dom.dataset.index = idx;\n        dom.onclick = ()=> playEp(idx);\n        playlistWrap.appendChild(dom);\n    })\n}\n\n\/\/ 设置集数高亮\nfunction setEpHighlight(idx){\n    currentEpIndex = idx;\n    document.querySelectorAll('.playlist-item').forEach((el,i)=>{\n        el.classList.toggle('active', i === idx);\n    })\n}\n\nfunction playEp(epIdx){\n    const src = sourceList[currentSourceIndex];\n    const epItem = src.episodes[epIdx];\n    if(!epItem) return;\n    setEpHighlight(epIdx);\n\n    if(hls){\n        hls.destroy();\n        hls = null;\n    }\n    if(Hls.isSupported()){\n        hls = new Hls();\n        hls.loadSource(epItem.url);\n        hls.attachMedia(videoEl);\n        hls.on(Hls.Events.MANIFEST_PARSED,()=>{\n            videoEl.play().catch(()=>{});\n        })\n    }else if(videoEl.canPlayType('application\/vnd.apple.mpegurl')){\n        videoEl.src = epItem.url;\n        videoEl.play().catch(()=>{});\n    }\n}\n\n\/\/ 切换下拉线路\nsourceSelect.onchange = function(){\n    currentSourceIndex = Number(sourceSelect.value);\n    renderEpisodeList();\n    currentEpIndex = 0;\n    playEp(0);\n}\n\n\/\/ 视频结束自动播放下一集(当前线路内)\nvideoEl.addEventListener('ended',()=>{\n    const currSrc = sourceList[currentSourceIndex];\n    const nextIdx = currentEpIndex + 1;\n    if(nextIdx < currSrc.episodes.length){\n        playEp(nextIdx);\n    }\n})\n\n\/\/ 初始化\nif(sourceList.length>0){\n    renderSourceSelect();\n    renderEpisodeList();\n    playEp(0);\n}\n<\/script>\n",
    "ruleImage": "$.vod_pic",
    "ruleLink": "{{baseUrl.replace(\/\\\/api\\.php.*\/,'')}}\/api.php\/provide\/vod\/?ac=detail&ids={{$.vod_id}}",
    "ruleNextPage": "page",
    "rulePubDate": "⏱️{{$.vod_duration}} &nbsp;🔖{{$.vod_score}} &nbsp;🏷️{{$.type_name&&vod_time##\\n(.*)\\s.*## &nbsp;📆$1}}\n\n@js:\nresult.replace(\/⏱️(\\[db:时长\\])? &nbsp;|🔖(0\\.0) &nbsp;\/,'')",
    "ruleTitle": "$.vod_name",
    "searchUrl": "<js>\nconst SITE_CONFIG = [\n    { label:\"红牛资源\", api:\"https:\/\/www.hongniuzy2.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"光速资源\", api:\"https:\/\/api.guangsuapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"豪华资源\", api:\"https:\/\/hhzyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"速播资源\", api:\"https:\/\/subocj.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"虎牙资源\", api:\"https:\/\/huyaapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"新浪资源\", api:\"https:\/\/api.xinlangapi.com\/xinlangapi.php\", apiPrefix:\"\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"金鹰资源\", api:\"https:\/\/jyzyapi.com\", apiPrefix:\"\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"360资源\", api:\"https:\/\/360zyzz.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"最大资源\", api:\"https:\/\/api.zuidapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"OK资源\", api:\"https:\/\/api.okzyw.net\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"西瓜资源\", api:\"https:\/\/caiji.xgzyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"无水印资源\", api:\"https:\/\/api.wsyzy.net\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"非凡资源\", api:\"http:\/\/api.ffzyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"爱奇艺资源\", api:\"https:\/\/iqiyizyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"茅台资源\", api:\"https:\/\/caiji.maotai999.vip\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"牛牛资源\", api:\"https:\/\/api.niuniuzy.me\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"鸭鸭资源\", api:\"https:\/\/cj.yayazy.net\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"猫眼资源\", api:\"https:\/\/api.maoyanapi.top\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"豆瓣资源\", api:\"https:\/\/caiji.dbzy5.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"如意资源\", api:\"https:\/\/cj.rycjapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"电影天堂资源\", api:\"http:\/\/caiji.dyttzyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"优质资源\", api:\"https:\/\/api.yyzy-tv.vip\/inc\/apijson.php\", apiPrefix:\"\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"索尼资源\", api:\"https:\/\/suoniapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"极速资源\", api:\"https:\/\/jszyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=videolist\" },\n    { label:\"暴风资源\", api:\"https:\/\/bfzyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"快车资源\", api:\"https:\/\/caiji.kuaichezy.org\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"无尽资源\", api:\"https:\/\/api.wujinapi.me\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" },\n    { label:\"魔都资源\", api:\"https:\/\/www.mdzyapi.com\", apiPrefix:\"\/api.php\/provide\/vod\/\", pageParam:\"pg\", catAc:\"?ac=list\" }\n];\n\nlet loginInfo = source.getLoginInfoMap();\nlet siteIndex = 0;\n\nif(loginInfo !== null && loginInfo[\"选择影视源站\"]){\n    let rawText = loginInfo[\"选择影视源站\"];\n    let arr = rawText.split(\"-\");\n    let temp = parseInt(arr[0],10);\n    if(!isNaN(temp)) siteIndex = temp;\n}\n\nif(isNaN(siteIndex) || siteIndex < 0 || siteIndex >= SITE_CONFIG.length){\n    siteIndex = 0;\n}\n\nlet currSource = SITE_CONFIG[siteIndex];\nlet searchUrl = `${currSource.api}${currSource.apiPrefix}?ac=detail&${currSource.pageParam}={{page}}&wd={{key}}`;\n\nsearchUrl;\n<\/js>\n",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "<js>\nconst SITE_CONFIG = [\n    {\n        label:\"红牛资源\",\n        api:\"https:\/\/www.hongniuzy2.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/hongniuziyuan.com\",\"https:\/\/hongniuzy.com\",\"https:\/\/hongniuziyuan.tv\",\"https:\/\/hongniuzy.tv\",\"https:\/\/hongniuziyuan.net\",\"https:\/\/hongniuzy.net\"]\n    },\n    {\n        label:\"光速资源\",\n        api:\"https:\/\/api.guangsuapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/guangsuziyuan.com\",\"https:\/\/guangsuzy.net\",\"https:\/\/guangsuziyuan.net\"]\n    },\n    {\n        label:\"豪华资源\",\n        api:\"https:\/\/hhzyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/www.haohuazy.com\",\"https:\/\/www.haohuaziyuan.com\"]\n    },\n    {\n        label:\"速播资源\",\n        api:\"https:\/\/subocj.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/www.subozy.com\",\"https:\/\/www.suboziyuan.com\",\"https:\/\/suboziyuan.net\"]\n    },\n    {\n        label:\"虎牙资源\",\n        api:\"https:\/\/www.huyaapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/huyazy.com\",\"https:\/\/huyaziyuan.com\",\"https:\/\/huyazy.net\/\"]\n    },\n    {\n        label:\"新浪资源\",\n        api:\"https:\/\/api.xinlangapi.com\/xinlangapi.php\",\n        apiPrefix:\"\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/xinlangzy.com\",\"https:\/\/xinlangziyuan.com\",\"https:\/\/xinlangziyuan.net\",\"https:\/\/xinlangzy.net\"]\n    },\n    {\n        label:\"金鹰资源\",\n        api:\"https:\/\/jyzyapi.com\",\n        apiPrefix:\"\/provide\/vod\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/jinyingziyuan.com\",\"https:\/\/jyzy1.com\",\"https:\/\/jyzy2.com\",\"https:\/\/jyzy3.com\",\"https:\/\/jinyingzy.com\"]\n    },\n    {\n        label:\"360资源\",\n        api:\"https:\/\/360zyzz.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/360zy.com\",\"https:\/\/360zy.net\",\"https:\/\/360zy.vip\",\"https:\/\/360zy.top\",\"https:\/\/360zy.tv\",\"https:\/\/360zy1.com\",\"https:\/\/360zy2.com\",\"https:\/\/360zy3.com\",\"https:\/\/360zy4.com\",\"https:\/\/360zy5.com\",\"https:\/\/360zy6.com\",\"https:\/\/360zy7.com\",\"https:\/\/360zy8.com\",\"https:\/\/360zy9.com\",\"https:\/\/360zy10.com\"]\n    },\n    {\n        label:\"最大资源\",\n        api:\"https:\/\/api.zuidapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/zuidazy.co\",\"https:\/\/zuidazy.me\",\"https:\/\/zuida.xyz\"]\n    },\n    {\n        label:\"OK资源\",\n        api:\"https:\/\/api.okzyw.net\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/okzyw.cc\"]\n    },\n    {\n        label:\"西瓜资源\",\n        api:\"https:\/\/caiji.xgzyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/xiguazy.tv\",\"https:\/\/xgzy1.tv\",\"https:\/\/xgzy2.tv\",\"https:\/\/xgzy3.tv\",\"https:\/\/xgzy4.tv\",\"https:\/\/xgzy5.tv\",\"https:\/\/xgzy6.tv\",\"https:\/\/xgzy7.tv\",\"https:\/\/xgzy8.tv\",\"https:\/\/xgzy9.tv\",\"https:\/\/xgzy10.tv\"]\n    },\n    {\n        label:\"无水印资源\",\n        api:\"https:\/\/api.wsyzy.net\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/www.wsyzy.cc\/\"]\n    },\n    {\n        label:\"非凡资源\",\n        api:\"http:\/\/api.ffzyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/ffzy1.tv\",\"https:\/\/ffzy2.tv\",\"https:\/\/ffzy3.tv\",\"https:\/\/ffzy4.tv\",\"https:\/\/ffzy5.tv\"]\n    },\n    {\n        label:\"爱奇艺资源\",\n        api:\"https:\/\/iqiyizyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/iqiyizy.com\",\"https:\/\/iqiyizy.cc\",\"https:\/\/iqiyizy.vip\",\"https:\/\/iqiyizy1.com\",\"https:\/\/iqiyizy2.com\",\"https:\/\/iqiyizy3.com\",\"https:\/\/iqiyizy4.com\",\"https:\/\/iqiyizy5.com\",\"https:\/\/iqiyizy6.com\",\"https:\/\/iqiyizy7.com\",\"https:\/\/iqiyizy8.com\",\"https:\/\/iqiyizy9.com\"]\n    },\n    {\n        label:\"茅台资源\",\n        api:\"https:\/\/caiji.maotai999.vip\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/mtzy6.com\",\"https:\/\/mtzy.me\",\"https:\/\/mtzy0.com\",\"https:\/\/maotaizy.cc\",\"https:\/\/maotaizy.com\",\"https:\/\/maotaiziyuan.com\"]\n    },\n    {\n        label:\"牛牛资源\",\n        api:\"https:\/\/api.niuniuzy.me\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/niuniuzy1.com\",\"https:\/\/niuniuzy.cc\",\"https:\/\/niuniuzy.info\",\"https:\/\/niuniuzy.me\",\"https:\/\/niuniuzy.org\"]\n    },\n    {\n        label:\"鸭鸭资源\",\n        api:\"https:\/\/cj.yayazy.net\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/yayazy1.com\",\"https:\/\/yayazy.net\",\"https:\/\/yayazy.com\",\"https:\/\/yayazy.ne\",\"https:\/\/yayazy.org\",\"https:\/\/yayazy.me\"]\n    },\n    {\n        label:\"猫眼资源\",\n        api:\"https:\/\/api.maoyanapi.top\/\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/maoyanzy.com\",\"https:\/\/maoyanzy.cc\",\"https:\/\/maoyanzy.xyz\",\"https:\/\/maoyanzy.top\",\"https:\/\/maoyanzy.vip\"]\n    },\n    {\n        label:\"豆瓣资源\",\n        api:\"https:\/\/caiji.dbzy5.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/dbzy.tv\",\"https:\/\/doubanzy.net\",\"https:\/\/doubanzy.cc\",\"https:\/\/doubanziyuan.com\",\"https:\/\/doubanziyuan.net\",\"https:\/\/dbzy1.com\"]\n    },\n    {\n        label:\"如意资源\",\n        api:\"https:\/\/cj.rycjapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/www.ryzy.tv\/\",\"https:\/\/ryzy1.tv\",\"https:\/\/ryzy2.tv\",\"https:\/\/ryzy3.tv\",\"https:\/\/ryzy4.tv\",\"https:\/\/ryzy5.tv\",\"https:\/\/ryzy6.tv\",\"https:\/\/ryzy7.tv\",\"https:\/\/ryzy8.tv\",\"https:\/\/ryzy9.tv\"]\n    },\n    {\n        label:\"电影天堂资源\",\n        api:\"http:\/\/caiji.dyttzyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/dyttzy.tv\",\"https:\/\/dyttzy1.tv\",\"https:\/\/dyttzy2.tv\",\"https:\/\/dyttzy3.tv\",\"https:\/\/dyttzy4.tv\",\"https:\/\/dyttzy5.tv\"]\n    },\n    {\n        label:\"优质资源\",\n        api:\"https:\/\/api.yyzy-tv.vip\/inc\/apijson.php\",\n        apiPrefix:\"\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"http:\/\/www.yzzy.tv\",\"http:\/\/www.yzzy.me\",\"http:\/\/1080zyk1.com\",\"https:\/\/www.1080zyk2.com\",\"https:\/\/www.1080zyk3.com\",\"https:\/\/www.1080zyk15.com\",\"http:\/\/1080zyk18.com\"]\n    },\n    {\n        label:\"索尼资源\",\n        api:\"https:\/\/suoniapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/suonizy.com\",\"https:\/\/suonizy.net\",\"https:\/\/suonizy.cc\"]\n    },\n    {\n        label:\"极速资源\",\n        api:\"https:\/\/jszyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=videolist\",\n        siteDomains:[\"https:\/\/www.jisuzy.com\",\"https:\/\/www.jisuzy.tv\",\"https:\/\/www.jisuziyuan.com\",\"https:\/\/www.jszy666.com\",\"https:\/\/www.jszy333.com\"]\n    },\n    {\n        label:\"暴风资源\",\n        api:\"https:\/\/bfzyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/bfzy2.tv\",\"https:\/\/bfzy.tv\/\"]\n    },\n    {\n        label:\"快车资源\",\n        api:\"https:\/\/caiji.kuaichezy.org\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/kuaichezy.com\"]\n    },\n    {\n        label:\"无尽资源\",\n        api:\"https:\/\/api.wujinapi.me\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/www.wujinzy.net\",\"https:\/\/wujinzy.com\",\"https:\/\/wujinzy.co\",\"https:\/\/wujinzy.cc\"]\n    },\n    {\n        label:\"魔都资源\",\n        api:\"https:\/\/www.mdzyapi.com\",\n        apiPrefix:\"\/api.php\/provide\/vod\/\",\n        pageParam:\"pg\",\n        blackId:\"\",\n        catAc:\"?ac=list\",\n        siteDomains:[\"https:\/\/moduzy.net\",\"https:\/\/moduzy1.com\",\"https:\/\/moduzy15.com\",\"https:\/\/www.moduzy.cc\"]\n    }\n];\nconst CAT_BLACK_IDS = \"\";\n\nlet loginInfo = source.getLoginInfoMap();\nlet siteIndex = 0;\nif(loginInfo !== null && loginInfo[\"选择影视源站\"]){\n    let rawText = loginInfo[\"选择影视源站\"];\n    let arr = rawText.split(\"-\");\n    let temp = parseInt(arr[0],10);\n    if(!isNaN(temp)){\n        siteIndex = temp;\n    }\n}\n\nif(isNaN(siteIndex)||siteIndex<0||siteIndex>=SITE_CONFIG.length){\n    siteIndex=0;\n}\n\nlet currSource = SITE_CONFIG[siteIndex];\nlet catUrl = currSource.api+currSource.apiPrefix+currSource.catAc;\n\nlet jsonData = null;\ntry{\n    let body = java.ajax(catUrl);\n    if(body){\n        jsonData = JSON.parse(body);\n    }\n}catch(e){\n}\n\nlet outText = \"\";\nlet blackArr = CAT_BLACK_IDS.split(\",\").map(x=>x.trim()).filter(x=>x);\nlet catList=[];\n\nif(jsonData && jsonData.code===1){\n    if(Array.isArray(jsonData.class)){\n        catList = jsonData.class;\n    }else if(jsonData.data && Array.isArray(jsonData.data.class)){\n        catList = jsonData.data.class;\n    }\n}\n\nif(Array.isArray(catList)&&catList.length>0){\n    let childrenMap = {};\n    let mainList = [];\n\n    for(let item of catList){\n        let tid = Number(item.type_id);\n        let pid = Number(item.type_pid ?? 0);\n        if(!childrenMap[pid]) childrenMap[pid] = [];\n        childrenMap[pid].push(item);\n        if(pid === 0){\n            mainList.push(item);\n        }\n    }\n    mainList.sort((a,b)=> Number(a.type_id) - Number(b.type_id));\n\n    let seenId = new Set();\n    for(let mainItem of mainList){\n        let mainTid = String(mainItem.type_id).trim();\n        let mainName = String(mainItem.type_name).trim();\n        if(seenId.has(mainTid)) continue;\n        seenId.add(mainTid);\n        if(blackArr.includes(mainTid)) continue;\n        if(!mainName) continue;\n\n        let mainLink = currSource.api + currSource.apiPrefix + \"?ac=detail&\"+currSource.pageParam+\"={{page}}&t=\"+mainTid;\n        outText += mainName+\"::\"+mainLink+\"\\n\";\n\n        let childArr = childrenMap[Number(mainTid)] || [];\n        childArr.sort((a,b)=> Number(a.type_id) - Number(b.type_id));\n\n        for(let child of childArr){\n            let cTid = String(child.type_id).trim();\n            let cName = String(child.type_name).trim();\n            if(seenId.has(cTid)) continue;\n            seenId.add(cTid);\n            if(blackArr.includes(cTid)) continue;\n            if(!cName) continue;\n\n            let childLink = currSource.api + currSource.apiPrefix + \"?ac=detail&\"+currSource.pageParam+\"={{page}}&t=\"+cTid;\n            outText += cName+\"::\"+childLink+\"\\n\";\n        }\n    }\n}\n\noutText;\n\n<\/js>",
    "sourceComment": "影视聚合订阅源 使用说明\n \n源站切换方法\n \n1. 点击登录,弹出设置窗口\n​\n2. 在【选择影视源站】下拉框,直接选择需要的资源站\n​\n3. 确认保存(点击右上角✅按钮),即刻切换为对应接口\n​\n4. 刷新分类,有些主分类为空,点击其他分类即可\n\n5. 排错:切换不生效,检查下拉序号与脚本数组下标顺序保持一致\n \n调试模式:故障排查时开启,日常使用关闭。\n \n源站维护方法\n \n重要:源站修改需同步修改搜索和分类脚本中的SITE_CONFIG 数组\n \n修改已有源(域名失效、路径变更)\n \n1. 在搜索和分类脚本头部找到 SITE_CONFIG\n​\n2. 同步修改对应源的  api \/ apiPrefix \/ pageParam \/ catAc \n​\n3.保存后,刷新分类查看生效\n \n2. 新增影视源\n \n1. 在搜索和分类脚本头部 SITE_CONFIG 数组末尾新增源对象\n\n2. 登录UI配置,在 chars 数组末尾添加  下标‑xxx资源 \n​\n3.保存刷新,即可在登录下拉框选择新源\n \n特殊源注意\n \n极速资源: catAc:\"?ac=videolist\" ,不可改为 ?ac=list \n \n常见故障\n \n- 分类\/列表无返回:开启调试模式,核对域名、接口路径是否正确、接口是否失效\n​\n- 分页异常:将该源 pageParam 改为 page \n \n维护核心:所有脚本内的源配置数组必须完全一致,顺序不能错乱。",
    "sourceGroup": "ST",
    "sourceIcon": "https:\/\/imgapi.cn\/api.php?zd=zsy&fl=meizi",
    "sourceName": "影视聚合(资源站)",
    "sourceUrl": "<js><\/js>",
    "style": "h3{text-align:center}\nh6{margin:0 2}\nb{float:right}\n\n .container{max-width:900px;margin:10px auto;padding:10px;}\n    video{width:100%;display:block;}\n    .playlist{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;}\n    .playlist-item{\n      padding:8px;\n      border:1px solid #ccc;\n      text-align:center;\n      cursor:pointer;\n      border-radius:4px;\n    }\n    .playlist-item.active{\n      background:#2563eb;\n      color:#fff;\n      border-color:#2563eb;\n    }",
    "type": 0
}
广告