diff --git a/SrcJu.js b/SrcJu.js index 9ae8b9f3..b104afa4 100644 --- a/SrcJu.js +++ b/SrcJu.js @@ -97,16 +97,8 @@ function sousuo() { putMyVar('SrcJuSousuo', '1'); let name = MY_URL.split('##')[1]; let d = []; - d.push({ - title: "搜索中...", - url: "hiker://empty", - extra: { - id: "sousuoloading" - } - }); + search(name,'sousuo'); setResult(d); - java.lang.Thread.sleep(1000); - search(name); } //二级+源搜索 @@ -178,13 +170,13 @@ function erji() { MY_URL = surl; sauthor = parse["作者"] || sauthor; let detailsmark; - if(getMyVar('SrcJuloading')){ + if(getMyVar('是否取缓存文件')){ let detailsdata = fetch(detailsfile); if (detailsdata != "") { try{ eval("let detailsjson=" + detailsdata + ";"); if(detailsjson.sname==sname && detailsjson.surl==surl){ - detailsmark = detailsjson; + detailsmark = detailsjson;//本地缓存接口+链接对得上则取本地,用于切换排序和样式时加快 } }catch(e){ } } @@ -479,7 +471,7 @@ function erji() { 最新(surl,公共); }, surl, parse['最新'], 公共)) } - putMyVar('SrcJuloading','1');//判断是否取本地缓存文件,软件打开初次必需在线取同名数据 + putMyVar('是否取缓存文件','1');//判断是否取本地缓存文件,软件打开初次必需在线取同名数据 } else { if(!detailload){ d.push({ @@ -509,46 +501,59 @@ function erji() { } //搜索接口 -function search(name, sdata) { +function search(keyword, mode, sdata) { if(getMyVar('SrcJuSearching')=="1"){ return "toast://上次搜索线程还未结束,等等再来" } - let searchMark = storage0.getMyVar('searchMark') || {}; - let loadid = getMyVar('SrcJuSousuo') == "1" ? 'sousuoloading' : 'listloading'; - if (searchMark[name] && !sdata) { - //log("重复搜索>"+name+",调用搜索缓存"); - addItemBefore(loadid, searchMark[name]); - updateItem(loadid, { title: getMyVar('SrcJuSousuo') == "1" ? "当前搜索为缓存" : "‘‘’’当前搜索为缓存" }) - } else { - showLoading('搜源中,请稍后.'); - let searchMark = storage0.getMyVar('searchMark') || {}; - let i = 0; - let one = ""; - for (var k in searchMark) { - i++; - if (i == 1) { one = k } + putMyVar('SrcJuSearching','1'); + let name = keyword.split(' ')[0]; + let success = 0; + let beresults = []; + let beerrors = []; + if (sdata) { + erdatalist = []; + erdatalist.push(sdata); + } + + let task = function (obj) { + try { + let parse; + let 公共; + eval("let source = " + obj.erparse); + if (source.ext && /^http/.test(source.ext)) { + requireCache(source.ext, 48); + parse = erdata; + } else { + parse = source; + } + if(parse){ + eval("let gonggong = " + obj.public); + 公共 = gonggong || parse['公共'] || {}; + } + let data = []; + eval("let 搜索 = " + parse['搜索']) + data = 搜索(name) || []; + return {result:data, success:1}; + } catch (e) { + log(obj.name + '>搜索失败>' + e.message); + return {result:[], success:0}; } - if (i > 20) { delete searchMark[one]; } - let success = 0; - let task = function (obj) { - try { - let parse; - let 公共; - eval("let source = " + obj.erparse); - if (source.ext && /^http/.test(source.ext)) { - requireCache(source.ext, 48); - parse = erdata; - } else { - parse = source; - } - if(parse){ - eval("let gonggong = " + obj.public); - 公共 = gonggong || parse['公共'] || {}; - } - let data = []; - eval("let 搜索 = " + parse['搜索']) - data = 搜索(name) || []; - if (data.length > 0) { + } + let list = erdatalist.map((item) => { + return { + func: task, + param: item, + id: item.name + } + }); + if (list.length > 0) { + //deleteItemByCls('loadlist'); + be(list, { + func: function (obj, id, error, taskResult) { + let i = taskResult.success;//是否成功,用于判断有无报错1为成功无错 + if(i==1){ + let data = taskResult.result; + success++; data.forEach(item => { let extra = item.extra || {}; extra.name = extra.name || item.title; @@ -558,83 +563,87 @@ function search(name, sdata) { extra.pageTitle = extra.name; extra.surl = item.url ? item.url.replace(/#immersiveTheme#|#autoCache#|#noRecordHistory#|#noHistory#|#readTheme#|#autoPage#/, "") : ""; item.extra = extra; - if (getMyVar('SrcJuSousuo') == "1") { - item.url = $("hiker://empty#immersiveTheme##autoCache#").rule(() => { - require(config.依赖); - erji(); - }) - } else { - item.url = item.url + $("#noLoading#").lazyRule((extra) => { - putMyVar('JuSouSuoStoptask','1'); - if(getMyVar('SrcJuSearching')){ - return "toast://等待搜索线程结束..."; - }else if(getMyVar('SrcJuselectsname')){ - return "toast://请勿重复点击,稍等..."; - }else{ - putMyVar('SrcJuselectsname','1'); - clearMyVar(extra.sname+"_"+extra.name); - storage0.putMyVar('erjiextra', extra); - refreshPage(false); - return "toast://已切换源:" + extra.sname; - } - }, extra); - } + item.url = mode=="sousuo" ? $("hiker://empty#immersiveTheme##autoCache#").rule(() => { + require(config.依赖); + erji(); + }) : item.url + $("#noLoading#").lazyRule((extra) => { + if(getMyVar('SrcJuselectsname')){ + return "toast://请勿重复点击,稍等..."; + }else{ + putMyVar('SrcJuselectsname','1'); + clearMyVar(extra.sname+"_"+extra.name); + storage0.putMyVar('erjiextra', extra); + refreshPage(false); + return "toast://已切换源:" + extra.sname; + } + }, extra); item.content = item.desc; item.sdesc = extra.sdesc || item.desc; - item.desc = getMyVar('SrcJuSousuoTest')?item.desc:getMyVar('SrcJuSousuo') ? MY_RULE.title + ' · ' + obj.name : obj.name + item.sdesc?(' · ' + item.sdesc):""; - item.col_type = getMyVar('SrcJuSousuoTest')?"movie_1_vertical_pic":getMyVar('SrcJuSousuo') ? "video" : "avatar"; + item.desc = mode=="sousuo" ? MY_RULE.title + ' · ' + obj.name : obj.name + (item.sdesc?(' · ' + item.sdesc):""); + item.col_type = mode=="sousuo" ? "video" : "avatar"; }) - searchMark[name] = searchMark[name] || []; - searchMark[name] = searchMark[name].concat(data); - addItemBefore(loadid, data); - success++; - hideLoading(); + if(mode=="list"){ + searchMark[name] = searchMark[name] || []; + searchMark[name] = searchMark[name].concat(data); + if(!getMyVar('SrcJuselectsname')){ + addItemBefore("listloading", data); + } + hideLoading(); + } + obj.results = obj.results.concat(data); + }else{ + obj.errors.push(id); } - } catch (e) { - log(obj.name + '>搜源失败>' + e.message); + }, + param: { + results: beresults, + errors: beerrors } - return 1; + }); + if(mode=="sousuo"){ + return beresults; } - if (sdata) { - erdatalist = []; - erdatalist.push(sdata); + /* + if (!sdata) { + storage0.putMyVar('searchMark', searchMark); } - let list = erdatalist.map((item) => { - return { - func: task, - param: item, - id: item.name - } - }); + let sousuosm = getMyVar('SrcJuSousuo') == "1" ? success + "/" + list.length + ",搜索完成" : "‘‘’’" + success + "/" + list.length + ",搜索完成"; + updateItem(loadid, { title: sousuosm }) + */ + } else { + let sousuosm = "无接口"; + updateItem(loadid, { title: sousuosm }) + } - if (list.length > 0) { - putMyVar('SrcJuSearching','1'); - deleteItemByCls('loadlist'); - be(list, { - func: function (obj, id, error, taskResult) { - if (getMyVar('JuSouSuoStoptask')) { - toast("线程已中止"); - clearMyVar('JuSouSuoStoptask'); - return "break"; - } - }, - param: { - } - }); - if (!sdata) { - storage0.putMyVar('searchMark', searchMark); - } - let sousuosm = getMyVar('SrcJuSousuo') == "1" ? success + "/" + list.length + ",搜索完成" : "‘‘’’" + success + "/" + list.length + ",搜索完成"; - updateItem(loadid, { title: sousuosm }) - } else { - let sousuosm = "无接口"; - updateItem(loadid, { title: sousuosm }) +/* + + let searchMark = storage0.getMyVar('searchMark') || {}; + let loadid = getMyVar('SrcJuSousuo') == "1" ? 'sousuoloading' : 'listloading'; + if (searchMark[name] && !sdata) { + //log("重复搜索>"+name+",调用搜索缓存"); + addItemBefore(loadid, searchMark[name]); + updateItem(loadid, { title: getMyVar('SrcJuSousuo') == "1" ? "当前搜索为缓存" : "‘‘’’当前搜索为缓存" }) + } else { + showLoading('搜源中,请稍后.'); + let searchMark = storage0.getMyVar('searchMark') || {}; + let i = 0; + let one = ""; + for (var k in searchMark) { + i++; + if (i == 1) { one = k } } + if (i > 20) { delete searchMark[one]; } + + + + + clearMyVar('SrcJuSearching'); clearMyVar('SrcJuSousuo'); clearMyVar('SrcJuSousuoTest'); hideLoading(); } + */ } //取本地足迹记录