[{"bookSourceUrl":"https:\/\/v.waiboys.com\/","bookSourceName":"外博影视","enabledExplore":true,"enabled":true,"bookSourceGroup":"有声漫画","author":"","help":true,"html":"<!DOCTYPE html>\n<html lang=\"zh\"><head><meta charset=\"UTF-8\"><title>外博影视<\/title><\/head><body><\/body>\n<script src=\"https:\/\/vc.jd.com\/web\/js\/jquery-3.1.1.min.js\"><\/script>\n<script>\nvar isCookieJar=true;\nclass FlutterJSBridge{\n  constructor(){this.init()}\n  init(){\n    if(window.flutter_inappwebview){this.isReady=!0;this.CookieJar()}\n    else window.addEventListener('flutterInAppWebViewPlatformReady',()=>{this.isReady=!0;this.CookieJar()})\n  }\n  async CookieJar(){try{await window.flutter_inappwebview.callHandler('CookieJar',isCookieJar)}catch(e){}}\n  async showToast(s){try{return await window.flutter_inappwebview.callHandler('showToast',s)}catch(e){return 0}}\n  async showvideoplay(u,t,k){try{return await window.flutter_inappwebview.callHandler('showvideoplay',u,t,k)}catch(e){return''}}\n  async webview(u,j){try{return await window.flutter_inappwebview.callHandler('webview',u,j,'','','','','')}catch(e){return''}}\n}\nclass Http{\n  async Get(u,h,f){try{return await window.flutter_inappwebview.callHandler('http','get',u,'',JSON.stringify(h),f,'')}catch(e){return null}}\n}\nconst $=new FlutterJSBridge(),http=new Http();\nconst BASE='https:\/\/v.waiboys.com';\nconst UA={'User-Agent':'Mozilla\/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit\/537.36 Chrome\/125'};\nconst json=(t,f)=>{if(!t||t==='null')return f;try{return JSON.parse(t)}catch(e){return f}};\nconst enc=(k,u)=>'src:'+k+'?url='+encodeURIComponent(u);\nconst dec=s=>{let i=String(s||'').indexOf('url=');return i<0?s:decodeURIComponent(s.slice(i+4))};\nconst full=u=>u&&u.startsWith('http')?u:BASE+u;\nfunction asText(r){if(!r)return'';if(typeof r==='string')return r;if(typeof r.data==='string')return r.data;try{return JSON.stringify(r.data)}catch(e){return''}}\n\nfunction listExtract(){\n  return \"(function(){\"+\n    \"var r=[],m={};\"+\n    \"var tries=0;\"+\n    \"function go(){\"+\n      \"document.querySelectorAll('a[title][href*=\\\"\/vod\/detail\/\\\"]').forEach(function(a){\"+\n        \"var h=a.getAttribute('href');if(!h||m[h])return;m[h]=1;\"+\n        \"var t=a.getAttribute('title')||'';\"+\n        \"var p=a.closest('li')||a.closest('.module-item')||a.parentElement;\"+\n        \"var img=p?p.querySelector('img'):null;\"+\n        \"var c=img?img.getAttribute('data-original')||img.getAttribute('data-src')||img.getAttribute('src')||'':'';\"+\n        \"if(t)r.push({u:h,n:t,o:c});\"+\n      \"});\"+\n      \"if(!r.length&&tries<10){tries++;setTimeout(go,500);return;}\"+\n      \"return JSON.stringify(r);\"+\n    \"}\"+\n    \"return go();\"+\n  \"})()\";\n}\n\nfunction toBooks(data){\n  if(!data||!data.filter)return'[]';\n  return JSON.stringify(data.filter(function(x){return x.u&&x.n}).map(function(x){\n    return{bookUrl:enc('d',x.u),name:x.n,author:'',kind:'',coverUrl:full(x.o),intro:'',tocUrl:enc('d',x.u),wordCount:'',type:0,latestChapterTitle:''};\n  }));\n}\n\nasync function search(key,page){\n  if(!String(key||'').trim())return'[]';\n  var u=BASE+'\/vod\/search.html?wd='+encodeURIComponent(key);\n  if(page&&page>1)u+='&page='+page;\n  var d=json(await $.webview(u,listExtract()),[]);\n  return toBooks(d);\n}\n\nasync function info(bookurl){\n  var u=full(dec(bookurl));\n  var j=\"(function(){\"+\n    \"var t=document.querySelector('title');\"+\n    \"var n='';if(t)n=t.textContent.split('_')[0].replace('《','').replace('》','').trim();\"+\n    \"var img=document.querySelector('.vodlist_thumb img[data-original],.module-item-cover img');\"+\n    \"if(!img)img=document.querySelector('img[data-original]');\"+\n    \"var c=img?img.getAttribute('data-original')||img.getAttribute('data-src')||img.getAttribute('src')||'':'';\"+\n    \"return JSON.stringify({n:n,c:c});\"+\n  \"})()\";\n  var v=json(await $.webview(u,j),{});\n  return JSON.stringify({bookUrl:bookurl,name:v.n||'?',author:'',kind:'',coverUrl:full(v.c),intro:'',tocUrl:enc('d',u),wordCount:'',type:0,latestChapterTitle:''});\n}\n\nasync function chapter(tocUrl,bookurl){\n  var u=full(dec(tocUrl||bookurl));\n  var j=\"(function(){\"+\n    \"var tries=0,R=[];\"+\n    \"function go(){\"+\n      \"var items=document.querySelectorAll('a[href*=\\\"\/vod\/play\/\\\"]');\"+\n      \"if(!items.length&&tries<10){tries++;setTimeout(go,500);return;}\"+\n      \"items.forEach(function(a){\"+\n        \"var h=a.getAttribute('href'),t=a.textContent.trim();\"+\n        \"if(h&&t&&t.length<20)R.push({n:t,u:h,v:false});\"+\n      \"});\"+\n      \"return JSON.stringify(R);\"+\n    \"}\"+\n    \"return go();\"+\n  \"})()\";\n  var d=json(await $.webview(u,j),[]);\n  return JSON.stringify(d.map(function(e,i){return{name:e.n,chapterId:enc('p',e.u),index:i,isPay:!1,isVip:!1,isVolume:!1,tag:''};}));\n}\n\nasync function content(url,bookurl){\n  var u=full(dec(url));\n  try{\n    var html=asText(await http.Get(u,UA,true));\n    if(!html)return'获取失败';\n    var v='';\n    var m=html.match(\/url\\s*:\\s*['\\\"]([^'\\\"]+?m3u8[^'\\\"]*?)['\\\"]\/i);\n    if(m)v=m[1];\n    if(!v){m=html.match(\/\\\"url\\\":\\\"(https?:[^\\\"]+?m3u8[^\\\"]*?)\\\"\/i);if(m)v=m[1].replace(\/\\\\\\\/\/g,'\/');}\n    if(v)return '<img src=\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgMjMgMjgiPjxkZWZzPjxmaWx0ZXIgaWQ9InMiPjxmZURyb3BTaGFkb3cgZHg9IjAiIGR5PSIwLjYiIHN0ZERldmlhdGlvbj0iMC43IiBmbG9vZC1jb2xvcj0iIzAwMCIgZmxvb2Qtb3BhY2l0eT0iMC4zNSIvPjwvZmlsdGVyPjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjUsNCkiPjxwYXRoIGQ9Ik0wIDBoMTR2MTRIMHoiIGZpbGw9Im5vbmUiLz48ZyBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjMjg1OWM1IiBkPSJNNC41IDguODgyVjUuMTE4YTEgMSAwIDAgMSAxLjQ0Ny0uODk0bDMuNzY0IDEuODgyYTEgMSAwIDAgMSAwIDEuNzg4TDUuOTQ3IDkuNzc2QTEgMSAwIDAgMSA0LjUgOC44ODIiLz48cGF0aCBmaWxsPSIjOGZiZmZhIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA5LjA4NGEuNzUuNzUgMCAwIDAtLjIzMiAxLjQ4MkE1LjUwMiA1LjUwMiAwIDAgMSA3IDEyLjVhNS41IDUuNSAwIDAgMS01LjExNi0zLjQ3NWEuNzUuNzUgMCAwIDAtMS4zOTQuNTUyQTcuMDAyIDcuMDAyIDAgMCAwIDE0IDdBNyA3IDAgMCAwIDguMDkuMDg0bS0yLjQ2NiAxLjQ5QS43NS43NSAwIDAgMCA1LjI1MS4xMjNhNyA3IDAgMCAwLS45MzguMzE0YS43NS43NSAwIDAgMCAuNTc2IDEuMzg1cS4zNTYtLjE0OC43MzUtLjI0Nk0zLjE3IDIuOTU1YS43NS43NSAwIDAgMC0xLjA0NC0xLjA3NkE3IDcgMCAwIDAgLjkxNyAzLjQzNWEuNzUuNzUgMCAxIDAgMS4zMDMuNzQ0Yy4yNTgtLjQ1Mi41NzgtLjg2NC45NS0xLjIyNE0xLjU1NCA2LjEyN2EuNzUuNzUgMCAxIDAtMS40ODUtLjIxQTcgNyAwIDAgMCAwIDYuOTAzYS43NS43NSAwIDEgMCAxLjUgMHEwLS4zOTYuMDU0LS43NzYiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48L2c+PHRleHQgeD0iMTEuNSIgeT0iMjUuNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxLjMiIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxQaW5nRmFuZyBTQyxNaWNyb3NvZnQgWWFIZWksc2Fucy1zZXJpZiIgZmlsbD0iIzI4NTljNSIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbHRlcj0idXJsKCNzKSI+54K55Ye75pKt5pS+PC90ZXh0Pjwvc3ZnPg==,{&quot;js&quot;:&quot;$.showvideoplay(\\''+v+'\\',\\'播放\\',\\''+v+'\\')&quot;}\"\/>';\n    return'未找到视频源';\n  }catch(e){return'播放出错';}\n}\n\nasync function getfinds(){\n  var R=[];\n  function H(t){R.push({title:t,url:'',width:3})}\n  function I(t,u){R.push({title:t,url:u,type:0,width:0})}\n\n  H('电影');\n  I('全部',BASE+'\/vod\/type\/id\/1.html?page={{page}}');\n  I('喜剧',BASE+'\/vod\/show\/class\/%E5%96%9C%E5%89%A7\/id\/1.html?page={{page}}');\n  I('爱情',BASE+'\/vod\/show\/class\/%E7%88%B1%E6%83%85\/id\/1.html?page={{page}}');\n  I('恐怖',BASE+'\/vod\/show\/class\/%E6%81%90%E6%80%96\/id\/1.html?page={{page}}');\n  I('动作',BASE+'\/vod\/show\/class\/%E5%8A%A8%E4%BD%9C\/id\/1.html?page={{page}}');\n  I('科幻',BASE+'\/vod\/show\/class\/%E7%A7%91%E5%B9%BB\/id\/1.html?page={{page}}');\n  I('剧情',BASE+'\/vod\/show\/class\/%E5%89%A7%E6%83%85\/id\/1.html?page={{page}}');\n  I('战争',BASE+'\/vod\/show\/class\/%E6%88%98%E4%BA%89\/id\/1.html?page={{page}}');\n  I('警匪',BASE+'\/vod\/show\/class\/%E8%AD%A6%E5%8C%AA\/id\/1.html?page={{page}}');\n  I('犯罪',BASE+'\/vod\/show\/class\/%E7%8A%AF%E7%BD%AA\/id\/1.html?page={{page}}');\n  I('动画',BASE+'\/vod\/show\/class\/%E5%8A%A8%E7%94%BB\/id\/1.html?page={{page}}');\n\n  H('电视剧');\n  I('全部',BASE+'\/vod\/type\/id\/2.html?page={{page}}');\n  I('古装',BASE+'\/vod\/show\/class\/%E5%8F%A4%E8%A3%85\/id\/2.html?page={{page}}');\n  I('战争',BASE+'\/vod\/show\/class\/%E6%88%98%E4%BA%89\/id\/2.html?page={{page}}');\n  I('青春偶像',BASE+'\/vod\/show\/class\/%E9%9D%92%E6%98%A5%E5%81%B6%E5%83%8F\/id\/2.html?page={{page}}');\n  I('喜剧',BASE+'\/vod\/show\/class\/%E5%96%9C%E5%89%A7\/id\/2.html?page={{page}}');\n  I('家庭',BASE+'\/vod\/show\/class\/%E5%AE%B6%E5%BA%AD\/id\/2.html?page={{page}}');\n  I('犯罪',BASE+'\/vod\/show\/class\/%E7%8A%AF%E7%BD%AA\/id\/2.html?page={{page}}');\n  I('动作',BASE+'\/vod\/show\/class\/%E5%8A%A8%E4%BD%9C\/id\/2.html?page={{page}}');\n  I('奇幻',BASE+'\/vod\/show\/class\/%E5%A5%87%E5%B9%BB\/id\/2.html?page={{page}}');\n  I('剧情',BASE+'\/vod\/show\/class\/%E5%89%A7%E6%83%85\/id\/2.html?page={{page}}');\n  I('历史',BASE+'\/vod\/show\/class\/%E5%8E%86%E5%8F%B2\/id\/2.html?page={{page}}');\n\n  H('综艺');\n  I('全部',BASE+'\/vod\/type\/id\/3.html?page={{page}}');\n  I('选秀',BASE+'\/vod\/show\/class\/%E9%80%89%E7%A7%80\/id\/3.html?page={{page}}');\n  I('情感',BASE+'\/vod\/show\/class\/%E6%83%85%E6%84%9F\/id\/3.html?page={{page}}');\n  I('访谈',BASE+'\/vod\/show\/class\/%E8%AE%BF%E8%B0%88\/id\/3.html?page={{page}}');\n  I('播报',BASE+'\/vod\/show\/class\/%E6%92%AD%E6%8A%A5\/id\/3.html?page={{page}}');\n  I('旅游',BASE+'\/vod\/show\/class\/%E6%97%85%E6%B8%B8\/id\/3.html?page={{page}}');\n  I('音乐',BASE+'\/vod\/show\/class\/%E9%9F%B3%E4%B9%90\/id\/3.html?page={{page}}');\n  I('美食',BASE+'\/vod\/show\/class\/%E7%BE%8E%E9%A3%9F\/id\/3.html?page={{page}}');\n  I('纪实',BASE+'\/vod\/show\/class\/%E7%BA%AA%E5%AE%9E\/id\/3.html?page={{page}}');\n  I('曲艺',BASE+'\/vod\/show\/class\/%E6%9B%B2%E8%89%BA\/id\/3.html?page={{page}}');\n  I('生活',BASE+'\/vod\/show\/class\/%E7%94%9F%E6%B4%BB\/id\/3.html?page={{page}}');\n\n  H('短剧');\n  I('全部',BASE+'\/vod\/type\/id\/4.html?page={{page}}');\n  I('情感',BASE+'\/vod\/show\/class\/%E6%83%85%E6%84%9F\/id\/4.html?page={{page}}');\n  I('科幻',BASE+'\/vod\/show\/class\/%E7%A7%91%E5%B9%BB\/id\/4.html?page={{page}}');\n  I('热血',BASE+'\/vod\/show\/class\/%E7%83%AD%E8%A1%80\/id\/4.html?page={{page}}');\n  I('推理',BASE+'\/vod\/show\/class\/%E6%8E%A8%E7%90%86\/id\/4.html?page={{page}}');\n  I('搞笑',BASE+'\/vod\/show\/class\/%E6%90%9E%E7%AC%91\/id\/4.html?page={{page}}');\n  I('冒险',BASE+'\/vod\/show\/class\/%E5%86%92%E9%99%A9\/id\/4.html?page={{page}}');\n  I('萝莉',BASE+'\/vod\/show\/class\/%E8%90%9D%E8%8E%89\/id\/4.html?page={{page}}');\n  I('校园',BASE+'\/vod\/show\/class\/%E6%A0%A1%E5%9B%AD\/id\/4.html?page={{page}}');\n  I('动作',BASE+'\/vod\/show\/class\/%E5%8A%A8%E4%BD%9C\/id\/4.html?page={{page}}');\n  I('机战',BASE+'\/vod\/show\/class\/%E6%9C%BA%E6%88%98\/id\/4.html?page={{page}}');\n\n  H('动漫');\n  I('全部',BASE+'\/vod\/type\/id\/5.html?page={{page}}');\n\n  H('B站');\n  I('全部',BASE+'\/vod\/type\/id\/24.html?page={{page}}');\n\n  H('其它');\n  I('全部',BASE+'\/vod\/type\/id\/53.html?page={{page}}');\n\n  return JSON.stringify(R);\n}\n\nasync function find(url,page){\n  var u=String(url||'').replace(\/\\{\\{page\\}\\}\/g,String(page||1));\n  if(!u)return'[]';\n  var d=json(await $.webview(u,listExtract()),[]);\n  return toBooks(d);\n}\n\nasync function getloginurl(){return BASE}\nasync function login(){await $.showToast('无需登录')}\nasync function pay(bookurl,url){var u=full(dec(url));try{var x=asText(await http.Get(u,UA,true));if(!x)x=(await $.webview(u,\"(function(){return document.documentElement.outerHTML})()\")||\"\").trim();var v=\"\";var m=x.match(\/\burl\\s*:\\s*['\"]([^'\"]+?m3u8[^'\"]*?)['\"]\/i);if(m)v=m[1];if(!v){m=x.match(\/\\\"url\\\":\\\"(https?:[^\\\"]+?m3u8[^\\\"]*?)\\\"\/i);if(m)v=m[1].replace(\/\\\\\/\/g,\"\/\");}if(!v){m=x.match(\/thisUrl\\s*=\\s*['\"]([^'\"]+)['\"]\/);if(m)v=m[1];}if(v){await $.showvideoplay(v,v,v);await $.showToast(\"播放中\");}else{await $.showToast(\"未找到视频源\");}}catch(e){await $.showToast(\"播放出错\");}}\nasync function imagedecrypt(url,image){return[]}\nasync function shouldOverrideUrlLoading(url){return!0}\nasync function gethelp(){return'【外博影视】mxone模板+Vue | 电影\/电视剧\/综艺\/短剧 | m3u8播放';}\n<\/script><\/html>\n","login":true,"lastUpdateTime":"1780903559955"}]