MCPcopy Index your code
hub / github.com/hoothin/UserScripts / addCustomSites

Function addCustomSites

Easy offline/Easy offline.user.js:875–975  ·  view source on GitHub ↗
(cb)

Source from the content-addressed store, hash-verified

873 }
874
875 function addCustomSites(cb){
876 storage.getItem("siteRule",v=>{
877 siteRule=v;
878 if(siteRule){
879 var rules=siteRule.split("\n");
880 rules.forEach(rule=>{
881 if(/^\s*\/\//.test(rule))return;
882 var ruleArr=rule.split(/\s*@@\s*/);
883 var siteConfig={custom:true};
884 if(ruleArr[1] && (ruleArr[0].indexOf("$url")!=-1 || ruleArr[0].indexOf("$hash")!=-1 || ruleArr[0].indexOf("${")!=-1 || ruleArr[0].indexOf("$base64")!=-1)){
885 siteConfig.noTxt=true;
886 siteConfig.directUrl=function(offUrl, targetNode){
887 let regIndex=ruleArr[0].indexOf("${");
888 if(regIndex!=-1){
889 var strMatch=ruleArr[0].match(/\${(.*?)}/);
890 var regStr=strMatch?strMatch[1]:"";
891 if(!regStr)return;
892 var linkReg,linkMatch,linkResult;
893 if(regIndex==0 || (regIndex==2 && /^[cp]:/.test(ruleArr[0]))){
894 linkReg=new RegExp(regStr,"i");
895 return offUrl.replace(linkReg, ruleArr[0].replace(strMatch[0],""));
896 }
897 //全匹配为提取模式
898 linkReg=new RegExp("^"+regStr+"$","i");
899 linkMatch=offUrl.match(linkReg);
900 if(linkMatch){
901 linkResult=linkMatch[1]||linkMatch[0];
902 return linkResult?ruleArr[0].replace(/\${.*?}/,linkResult):ruleArr[0];
903 }else{
904 //部分匹配为替换模式
905 linkReg=new RegExp(regStr,"gi");
906 return offUrl.replace(linkReg,"");
907 }
908 }
909 var hash=offUrl.replace("magnet:?xt=urn:btih:","").replace(/&.*/,"");
910 var base64Str=btoa(offUrl);
911 return ruleArr[0].replace("$url", offUrl).replace("$hash", hash).replace("$base64", base64Str).replace("$title", targetNode&&targetNode.title?targetNode.title:document.title).replace("$text", targetNode&&targetNode.innerText?targetNode.innerText:offUrl).replace("$random", Math.random());
912 };
913 if(ruleArr[3]) siteConfig.bgImg=ruleArr[3];
914 else siteConfig.bgImg=downIconBg;
915 if(ruleArr[4]) siteConfig.bgColor=ruleArr[4];
916 else siteConfig.bgColor="f2f2f2";
917 if(ruleArr[2]) {
918 siteConfig.linkRegExp=new RegExp(ruleArr[2],"i");
919 if(ruleArr[5]) {
920 siteConfig.overToShow=true;
921 overRegs.push(ruleArr[2]);
922 }else{
923 regs.push(ruleArr[2]);
924 }
925 }
926 sites[ruleArr[1]]=siteConfig;
927 }else if(ruleArr[1] && ruleArr[0].indexOf("$text")!=-1){
928 siteConfig.directUrl=function(offUrl, targetNode){
929 ruleArr[0]=ruleArr[0].replace("$text{","${");
930 let regIndex=ruleArr[0].indexOf("${");
931 if(regIndex!=-1){
932 var strMatch=ruleArr[0].match(/\${(.*?)}/);

Callers 1

Calls 1

setLinkCustomRegFunction · 0.85

Tested by

no test coverage detected