diff --git a/SrcJuying.js b/SrcJuying.js
index ecf82548..8f9efd4c 100644
--- a/SrcJuying.js
+++ b/SrcJuying.js
@@ -1,507 +1,13 @@
//本代码仅用于个人学习,请勿用于其他作用,下载后请24小时内删除,代码虽然是公开学习的,但请尊重作者,应留下说明
-//接口一级
-function jiekouyiji() {
- addListener("onClose", $.toString(() => {
- clearMyVar('zsjiekou');
- clearMyVar('zsdatalist');
- }));
- clearMyVar('SrcJy$back');
- setPageTitle('接口独立展示');
- var d = [];
- var cfgfile = "hiker://files/rules/Src/Juying/config.json";
- var Juyingcfg=fetch(cfgfile);
- if(Juyingcfg != ""){
- eval("var JYconfig=" + Juyingcfg+ ";");
- }else{
- var JYconfig= {};
- }
- if(!storage0.getMyVar('zsjiekou')){
- var filepath = "hiker://files/rules/Src/Juying/jiekou.json";
- var datafile = fetch(filepath);
- if(datafile != ""){
- eval("var datalist=" + datafile+ ";");
- }else{
- var datalist = [];
- }
- storage0.putMyVar('zsdatalist',datalist);
- if(JYconfig.zsjiekou){
- var zslist = datalist.filter(item => {
- return item.name==JYconfig.zsjiekou.api_name;
- })
- }else{
- var zslist = [];
- }
- zslist = zslist.length>0?zslist:[{}];
- storage0.putMyVar('zsjiekou',zslist[0]);
- }
- let zsjiekou = storage0.getMyVar('zsjiekou',{});
- let api_name = zsjiekou.name||"";
- let api_type = zsjiekou.type||"";
- let api_url = zsjiekou.url||"";
- let api_ua = zsjiekou.ua||"MOBILE_UA";
- api_ua = api_ua=="MOBILE_UA"?MOBILE_UA:api_ua=="PC_UA"?PC_UA:api_ua;
- let xunmitimeout = JYconfig.xunmitimeout||5;
- let selectgroup = JYconfig.zsjiekou?JYconfig.zsjiekou.selectgroup||"":"";
-
- if(api_name){setPageTitle(api_name);}
- if(api_name&&api_type&&api_url){
- if (api_type=="v1") {
- let date = new Date();
- let mm = date.getMonth()+1;
- let dd = date.getDate();
- let key = (mm<10?"0"+mm:mm)+""+(dd<10?"0"+dd:dd);
- var url = api_url + '/detail?&key='+key+'&vod_id=';
- var typeurl = api_url + "/types";
- var listurl = api_url + '?key='+key+'&page=';
- var lists = "html.data.list";
- } else if (api_type=="app") {
- var url = api_url + 'video_detail?id=';
- var typeurl = api_url + "nav";
- var listurl = api_url + 'video?tid=@type_id&pg=';
- var lists = "html.list";
- } else if (api_type=="v2") {
- var url = api_url + 'video_detail?id=';
- var typeurl = api_url + "nav";
- var listurl = api_url + 'video?tid=@type_id&pg=';
- var lists = "html.data";
- } else if (api_type=="iptv") {
- var url = api_url + '?ac=detail&ids=';
- var typeurl = api_url + "?ac=flitter";
- var listurl = api_url + '?ac=list&page=';
- var lists = "html.data";
- } else if (api_type=="cms") {
- var url = api_url + '?ac=videolist&ids=';
- var typeurl = api_url + "?ac=list";
- var listurl = api_url + '?ac=videolist&pg=';
- var lists = "html.list";
- } else if (api_type=="XBPQ") {
- var jsondata = zsjiekou.data;
- if(jsondata&&jsondata.ext){
- let apihtml = request(jsondata.ext, { headers: { 'User-Agent': api_ua }, timeout:xunmitimeout*1000 });
- try{
- eval("var jkdata = " + apihtml);
- }catch(e){
- var jkdata = {};
- }
- var url = jkdata["主页url"];
- var typeurl = jkdata["分类"];
- jkdata["分类url"] = /^http/.test(jkdata["分类url"])?jkdata["分类url"]:url + jkdata["分类url"];
- var listurl = jkdata["分类url"].replace(/class\/\{class\}|\{class\}|year\/\{year\}|\{year\}|area\/\{area\}|\{area\}|by\/\{by\}|\{by\}|\{act\}/g,'');
- }
- } else {
- log('api类型错误')
- }
- }
-
- if(MY_PAGE==1){
- let datalist = storage0.getMyVar('zsdatalist',[]);
- let grouplist = [];
- datalist.forEach(item=>{
- let groupname = item.group||item.type;
- if(/app|v1|v2|iptv|cms|XBPQ/.test(item.type)&&grouplist.indexOf(groupname)==-1&&item.group!="失败待处理"){
- grouplist.push(groupname);
- }
- })
-
- datalist = datalist.filter(item => {
- if(selectgroup&&grouplist.indexOf(selectgroup)>-1){
- return /app|v1|v2|iptv|cms|XBPQ/.test(item.type) && (item.group==selectgroup || !item.group&&item.type==selectgroup) && item.group!="失败待处理"
- }else{
- return /app|v1|v2|iptv|cms|XBPQ/.test(item.type) && item.group!="失败待处理";
- }
- })
-
- for (let i = 0; i < 9; i++) {
- d.push({
- col_type: "blank_block"
- })
- }
-
- d.push({
- title: selectgroup&&grouplist.indexOf(selectgroup)>-1?'👉'+selectgroup:'🆙选择分组',
- url: $(grouplist,2).select((cfgfile,JYconfig,selectgroup)=>{
- if(selectgroup!=input){
- JYconfig['zsjiekou'].selectgroup = input;
- writeFile(cfgfile, JSON.stringify(JYconfig));
- refreshPage(true);
- }
- return "hiker://empty";
- },cfgfile,JYconfig,selectgroup),
- col_type: "scroll_button"
- });
- if(datalist.length>0){
- for(let i in datalist){
- if(api_url==datalist[i].url){
- var Srczsjiekousousuodata = [];
- Srczsjiekousousuodata.push(datalist[i]);
- }
- let zsdata = {api_name:datalist[i].name};
- if(selectgroup){
- zsdata.selectgroup = selectgroup;
- }
- d.push({
- title: api_url==datalist[i].url?'““””' + datalist[i].name + '':datalist[i].name,
- col_type: 'scroll_button',
- url: $('#noLoading#').lazyRule((zsjiekou,cfgfile,JYconfig,jkdata) => {
- clearMyVar('Srczsjiekou$type_id');
- JYconfig['zsjiekou'] = zsjiekou;
- writeFile(cfgfile, JSON.stringify(JYconfig));
- storage0.putMyVar('zsjiekou',jkdata);
- refreshPage(true);
- return "hiker://empty";
- }, zsdata,cfgfile,JYconfig,datalist[i]),
- extra: {
- longClick: [{
- title: "删除接口",
- js: $.toString((dataurl,filepath) => {
- let datalist = storage0.getMyVar('zsdatalist',[]);
- for(var i=0;i-1){
- let jktype = jkdata["分类"].split('#');
- var typeclass = jktype.map((type)=>{
- return {
- "type_id": type.split('$')[1],
- "type_pid": 0,
- "type_name": type.split('$')[0]
- }
- })
- }else if(jkdata["分类"].indexOf('&')>-1&&jkdata["分类值"]){
- let jktypename = jkdata["分类"].split('&');
- let jktypeid = jkdata["分类值"].split('&');
- var typeclass = [];
- for(let i in jktypeid){
- typeclass.push({
- "type_id": jktypeid[i],
- "type_pid": 0,
- "type_name": jktypename[i]
- })
- }
- }
- }else{
- let gethtml = request(typeurl, { headers: { 'User-Agent': api_ua }, timeout:xunmitimeout*1000 });
- if (api_type=="v1") {
- let typehtml = JSON.parse(gethtml);
- let typelist = typehtml.data.list||typehtml.data.typelist;
- var typeclass = typelist.map((list)=>{
- return {
- "type_id": list.type_id,
- "type_pid": list.type_pid,
- "type_name": list.type_name
- }
- })
- } else if (/app|v2/.test(api_type)) {
- let typehtml = JSON.parse(gethtml);
- let typelist = typehtml.list||typehtml.data;
- var typeclass = typelist.map((list)=>{
- return {
- "type_id": list.type_id,
- "type_pid": 0,
- "type_name": list.type_name
- }
- })
- } else if (api_type=="iptv") {
- let type_dict = {
- comic: '动漫',
- movie: '电影',
- tvplay: '电视剧',
- tvshow: '综艺',
- movie_4k: '4k',
- hanguoju: '韩剧',
- oumeiju: '欧美剧',
- tiyu: '体育'
- };
- let typehtml = JSON.parse(gethtml);
- var typeclass = typehtml.map((list)=>{
- if(type_dict[list]){
- return {
- "type_id": list,
- "type_pid": 0,
- "type_name": type_dict[list]
- }
- }
- })
- typeclass = typeclass.filter(n => n);
- } else if (api_type=="cms") {
- if(/<\?xml/.test(gethtml)){
- let typelist = pdfa(gethtml,'class&&ty');
- var typeclass = typelist.map((list)=>{
- return {
- "type_id": String(xpath(list,`//ty/@id`)).trim(),
- "type_pid": 0,
- "type_name": String(xpath(list,`//ty/text()`)).trim()
- }
- })
- }else{
- let typehtml = JSON.parse(gethtml);
- var typeclass = typehtml.class;
- }
- } else {
- log('api类型错误')
- }
- }
- }catch(e){
- log(api_name+' 接口访问异常,请更换接口!获取分类失败>'+e.message);
- var typeclass = [];
- }
-
- if(typeclass&&typeclass.length>0){
- let type_pids = [];
- let type_ids = [];
- for(let i in typeclass){
- if(type_pids.indexOf(typeclass[i].type_pid)==-1){type_pids.push(typeclass[i].type_pid)}
- if(type_ids.indexOf(typeclass[i].type_id)==-1){type_ids.push(typeclass[i].type_id)}
- }
- if(type_pids.length > 0){
- type_pids.sort((a, b) => {
- return a - b
- })
- };
- if(/v2|app|XBPQ/.test(api_type)&&!getMyVar('Srczsjiekou$type_id')){
- putMyVar('Srczsjiekou$type_id',type_ids[0]);
- }
- for (var j in type_pids) {
- for (var i in typeclass) {
- if(typeclass[i].type_pid==type_pids[j]){
- d.push({
- title: getMyVar('Srczsjiekou$type_id')==typeclass[i].type_id?'““””' + typeclass[i].type_name + '':typeclass[i].type_name,
- url: $('#noLoading#').lazyRule((type_id) => {
- putMyVar('Srczsjiekou$type_id', type_id);
- refreshPage(true);
- return "hiker://empty";
- }, typeclass[i].type_id),
- col_type: 'scroll_button'
- });
- }
- }
- d.push({
- col_type: "blank_block"
- });
- }
- }
-
- var searchurl = $('').lazyRule((data) => {
- if(data){
- return $('hiker://empty#noRecordHistory##noHistory#').rule((name,data) => {
- require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyXunmi.js');
- xunmi(name,data);
- }, input,data);
- }else{
- return 'toast://未找到接口数据'
- }
- },Srczsjiekousousuodata);
- d.push({
- title: "🔍",
- url: $.toString((searchurl) => {
- return input + searchurl;
- },searchurl),
- desc: "搜你想看的...",
- col_type: "input",
- extra: {
- titleVisible: true
- }
- });
- }
- }
- if(typeof(listurl) != "undefined"){
- try{
- if(api_type=="XBPQ"){
- MY_URL = listurl.replace('{catePg}',jkdata["起始页"]?MY_PAGE>jkdata["起始页"]?MY_PAGE:"":MY_PAGE).replace('{cateId}',getMyVar('Srczsjiekou$type_id','1'));
- }else{
- MY_URL = listurl + MY_PAGE;
- if(api_type=="v2"||api_type=="app"){
- MY_URL = MY_URL.replace('@type_id',getMyVar('Srczsjiekou$type_id','1'));
- }else if(getMyVar('Srczsjiekou$type_id')){
- if (api_type=="v1") {
- MY_URL = MY_URL + '&type=' + getMyVar('Srczsjiekou$type_id');
- } else if (api_type=="iptv") {
- MY_URL = MY_URL + '&class=' + getMyVar('Srczsjiekou$type_id');
- } else {
- MY_URL = MY_URL + '&t=' + getMyVar('Srczsjiekou$type_id');
- }
- }
- }
-
- try {
- var gethtml = request(MY_URL, { headers: { 'User-Agent': api_ua }, timeout:xunmitimeout*1000 });
- if(api_type=="XBPQ"){
- jkdata["二次截取"] = jkdata["二次截取"] || (gethtml.indexOf(``:gethtml.indexOf(``:"");
- if(jkdata["二次截取"]){
- gethtml = gethtml.split(jkdata["二次截取"].split('&&')[0])[1].split(jkdata["二次截取"].split('&&')[1])[0];
- }
- var list = [];
- jkdata["链接"] = jkdata["链接"] || `href="&&"`;
- jkdata["标题"] = jkdata["标题"] || `title="&&"`;
- jkdata["数组"] = jkdata["数组"] || ``;
- let jklist = gethtml.match(new RegExp(jkdata["数组"].replace('&&','((?:.|[\r\n])*?)'), 'g'));
- jklist.forEach(item=>{
- if(!jkdata["图片"]){
- if(item.indexOf('original=')>-1){
- jkdata["图片"] = `original="&&"`;
- }else if(item.indexOf('
/g,'');
- let xmllist = [];
- let videos = pdfa(gethtml,'list&&video');
- for(let i in videos){
- let id = String(xpath(videos[i],`//video/id/text()`)).trim();
- let name = String(xpath(videos[i],`//video/name/text()`)).trim();
- let pic = String(xpath(videos[i],`//video/pic/text()`)).trim();
- let note = String(xpath(videos[i],`//video/note/text()`)).trim();
- let arr = {"vod_id":id,"vod_name":name,"vod_remarks":note,"vod_pic":pic};
- let plays = xpathArray(videos[i],`//video/dl/dd/text()`);
- if(plays.length==1){
- let play = plays[0];
- if(play.indexOf('$')==-1&&play.indexOf('m3u8')>-1){
- arr['play'] = play.trim();
- }
- }
- xmllist.push(arr)
- }
- var html = {"list":xmllist};
- }else if(!/{|}/.test(gethtml)&&gethtml!=""){
- var decfile = "hiker://files/rules/Src/Juying/appdec.js";
- var Juyingdec=fetch(decfile);
- if(Juyingdec != ""){
- eval(Juyingdec);
- var html = JSON.parse(xgdec(gethtml));
- }
- }else{
- var html = JSON.parse(gethtml);
- }
- try{
- var list = eval(lists)||html.list||html.data.list||html.data||[];
- } catch (e) {
- var list = html.list||html.data.list||html.data||[];
- }
- }
- } catch (e) {
- var list = [];
- }
-
- let videolist = list.map((list)=>{
- let vodname = list.vod_name||list.title;
- if(vodname){
- let vodpic = list.vod_pic||list.pic;
- let voddesc = list.vod_remarks||list.state||"";
- let vodurl = list.vod_id?url&&!/^http/.test(list.vod_id)?url+list.vod_id:list.vod_id:list.nextlink;
- vodpic = vodpic?vodpic.replace('/img.php?url=','').replace('/tu.php?tu=','') + "@Referer=":"https://www.xawqxh.net/mxtheme/images/loading.gif";
- if(/^\/upload|^upload/.test(vodpic)){
- vodpic = vodurl.match(/http(s)?:\/\/(.*?)\//)[0] + vodpic;
- }
- if(/^\/\//.test(vodpic)){
- vodpic = "https:" + vodpic;
- }
- if(api_type=='cms'&&list.vod_play_url){
- if(list.vod_play_url.indexOf('$')==-1&&list.vod_play_url.indexOf('m3u8')>-1){
- list['play'] = list.vod_play_url;
- }
- }
- return {
- title: vodname,
- desc: voddesc,
- pic_url: vodpic,
- url: list.play?list.play:$("hiker://empty##" + vodurl + "#immersiveTheme#").rule((type,ua) => {
- require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyXunmi.js');
- xunmierji(type,ua)
- },api_type, api_ua),
- col_type: 'movie_3',
- extra: {
- pic: vodpic,
- name: vodname,
- title: vodname+'-'+api_name,
- data: typeof(jsondata) =="undefined"|| jsondata ==null?{}:jsondata
- }
- }
- }
- });
- videolist = videolist.filter(n => n);
- d = d.concat(videolist);
- }catch(e){
- if(!list){
- d.push({
- title: '接口访问异常,请更换接口!',
- url: '#noHistory#hiker://empty',
- col_type: 'text_center_1'
- });
- }
- log(api_name+' 接口访问异常,请更换接口!获取影片失败>'+e.message)
- }
- }else{
- d.push({
- title: '先选择一个接口,做为默认展示站!',
- url: 'hiker://empty',
- col_type: 'text_center_1'
- });
- }
- setResult(d);
-}
-//二级
-function erji() {
- addListener("onClose", $.toString(() => {
- clearMyVar('SrcM3U8');
- clearMyVar('SrcXTNH');
- clearMyVar('SrcJy$back');
- }));
- require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyData.js');
- JYerji();
-
- setLastChapterRule('js:' + $.toString(param=>{
- require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcLastChapter.js');
- param=='sougou'?sougou():JY360();
- }, MY_PARAMS.datasource))
-}
-
//一级
function yiji() {
-
/*
addListener("onClose", $.toString(() => {
clearMyVar('isverifyA');
}));
*/
- require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyData.js');
+ //require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyData.js');
if(getMyVar('SrcJuying-VersionCheck', '0') == '0'){
let programversion = 0;
@@ -524,7 +30,6 @@ function yiji() {
downloadicon();//下载图标
}
- clearMyVar('SrcJy$back');
let d = [];
if(MY_PAGE==1){
require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyMenu.js');
@@ -696,50 +201,15 @@ function yiji() {
}
}
- d = d.concat(JYyiji());
+ d = d.concat(getDataList('yiji'));
deleteItemByCls("loading_gif");
setResult(d);
-
- if(getMyVar('jydingyue','0')=="0"&&JYconfig['codedyid']&&JYconfig['codeid']!=JYconfig['codedyid']){
- putMyVar('jydingyue','1');
- try{
- var nowtime = Date.now();
- var oldtime = parseInt(getItem('dingyuetime','0').replace('time',''));
- if(nowtime > (oldtime+6*60*60*1000)){
- let pasteurl = JYconfig['codedyid'];
- let text = parsePaste('https://netcut.cn/p/'+aesDecode('Juying', pasteurl));
- if(pasteurl&&!/^error/.test(text)){
- let pastedata = JSON.parse(base64Decode(text));
- require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJySet.js');
- let jknum = 0;
- let jxnum = 0;
- let ypnum = 0;
- var jkdatalist = pastedata.jiekou||[];
- if(jkdatalist.length>0){
- jknum = jiekousave(jkdatalist, 0, JYconfig['codedytype']||1);
- }
- var jxdatalist = pastedata.jiexi||[];
- if(jxdatalist.length>0){
- jxnum = jiexisave(jxdatalist, 0, JYconfig['codedytype']||1);
- }
- if(pastedata.live){
- let livefilepath = "hiker://files/rules/Src/Juying/liveconfig.json";
- let liveconfig = pastedata.live;
- writeFile(livefilepath, JSON.stringify(liveconfig));
- }
- let ypdatalist = pastedata.yundisk||[];
- if(ypdatalist.length>0){
- ypnum = yundisksave(ypdatalist);
- }
- log("订阅资源码自动同步完成,接口:"+jknum+",解析:"+jxnum+",云盘:"+ypnum);
- }else{
- log("订阅资源码自动同步口令错误或已失效");
- }
- setItem('dingyuetime',nowtime+"time");
- }
- } catch (e) {
- log('自动订阅更新失败:'+e.message);
- }
+}
+
+//获取数据
+function getDataList(type) {
+ if(type=='yiji'){
+ return JYyiji();
}
}