影视聚合(资源站)
<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}} 🏷️ {{$.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}} 🔖{{$.vod_score}} 🏷️{{$.type_name&&vod_time##\\n(.*)\\s.*## 📆$1}}\n\n@js:\nresult.replace(\/⏱️(\\[db:时长\\])? |🔖(0\\.0) \/,'')",
"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
}