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

Function customDown

DownloadAllContent/DownloadAllContent.user.js:1761–1991  ·  view source on GitHub ↗
(urls)

Source from the content-addressed store, hash-verified

1759 }
1760
1761 function customDown(urls){
1762 processFunc = null;
1763 useIframe = false;
1764 if(urls){
1765 urls=decodeURIComponent(urls.replace(/%/g,'%25'));
1766 GM_setValue("DACrules_"+document.domain, urls);
1767 var processEles=[];
1768 let urlsArr=urls.split("@@"),eles=[];
1769 if(/^http|^ftp/.test(urlsArr[0])){
1770 [].forEach.call(urlsArr[0].split(","),function(i){
1771 var curEle;
1772 var varNum=/\[\d+\-\d+\]/.exec(i);
1773 if(varNum){
1774 varNum=varNum[0].trim();
1775 }else{
1776 curEle=document.createElement("a");
1777 curEle.href=i;
1778 curEle.innerText="Added Url";
1779 processEles.push(curEle);
1780 return;
1781 }
1782 var num1=/\[(\d+)/.exec(varNum)[1].trim();
1783 var num2=/(\d+)\]/.exec(varNum)[1].trim();
1784 var num1Int=parseInt(num1);
1785 var num2Int=parseInt(num2);
1786 var numLen=num1.length;
1787 var needAdd=num1.charAt(0)=="0";
1788 if(num1Int>=num2Int)return;
1789 for(var j=num1Int;j<=num2Int;j++){
1790 var urlIndex=j.toString();
1791 if(needAdd){
1792 while(urlIndex.length<numLen)urlIndex="0"+urlIndex;
1793 }
1794 var curUrl=i.replace(/\[\d+\-\d+\]/,urlIndex).trim();
1795 curEle=document.createElement("a");
1796 curEle.href=curUrl;
1797 curEle.innerText="Added Url " + processEles.length.toString();
1798 processEles.push(curEle);
1799 }
1800 });
1801 }else{
1802 let urlSel=urlsArr[0].split(">>");
1803 try{
1804 eles=document.querySelectorAll(urlSel[0]);
1805 eles=[].filter.call(eles, ele=>{
1806 return ele.nodeName=='BODY'||(!!ele.offsetParent&&getComputedStyle(ele).display!=='none');
1807 })
1808 }catch(e){}
1809 if(eles.length==0){
1810 eles=[];
1811 var eleTxts=urlsArr[0].split(/(?<=[^\\])[,,]/),exmpEles=[],excludeTxts={};
1812 [].forEach.call(document.querySelectorAll("a"),function(item){
1813 if(!item.offsetParent)return;
1814 eleTxts.forEach(txt=>{
1815 var txtArr=txt.split("!");
1816 if(item.innerText.indexOf(txtArr[0])!=-1){
1817 exmpEles.push(item);
1818 excludeTxts[item]=txtArr.splice(1);

Callers 2

filterListFunction · 0.85
startCustomFunction · 0.85

Calls 3

addItemFunction · 0.85
filterListFunction · 0.85
canonicalUriFunction · 0.70

Tested by

no test coverage detected