98 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const signitures = `
 | |
| # DataExtracter Help
 | |
| ----------------------------
 | |
| 
 | |
| ## Usage
 | |
| new Extractor().task(...args).task(...args).start();
 | |
| 
 | |
| ## Extractor.task() Signitures:
 | |
| ----------------------------
 | |
| 
 | |
| task(itemsSelector:string, fieldSelectors:string[])
 | |
| task(itemsSelector:string, fieldSelectors:string[], url:string, from:number, to:number, interval:number)
 | |
| task(itemsSelector:string, fieldSelectors:string, url:string, pages:number[])
 | |
| task(itemsSelector:string, fieldSelectors:string[], urls:string[])
 | |
| task(itemsSelector:string, fieldSelectors:string[], urls:ExtractResult)
 | |
| 
 | |
| See detail help in:
 | |
| https://git.jebbs.co/jebbs/data-extracter-extesion
 | |
| `.trim();
 | |
| 
 | |
| 
 | |
| function saveFile(data, mimeType, fileName) {
 | |
|     fileName = fileName || document.title || "result";
 | |
|     var blob;
 | |
|     if (typeof window.Blob == "function") {
 | |
|         blob = new Blob([data], {
 | |
|             type: mimeType
 | |
|         })
 | |
|     } else {
 | |
|         var BlobBuiler = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder;
 | |
|         var builer = new BlobBuiler();
 | |
|         builer.append(data);
 | |
|         blob = builer.getBlob(mimeType)
 | |
|     }
 | |
|     var URL = window.URL || window.webkitURL;
 | |
|     var url = URL.createObjectURL(blob);
 | |
|     var link = document.createElement("a");
 | |
|     if ('download' in link) {
 | |
|         link.style.visibility = "hidden";
 | |
|         link.href = url;
 | |
|         link.download = fileName;
 | |
|         document.body.appendChild(link);
 | |
|         var j = document.createEvent("MouseEvents");
 | |
|         j.initEvent("click", true, true);
 | |
|         link.dispatchEvent(j);
 | |
|         document.body.removeChild(link)
 | |
|     } else if (navigator.msSaveBlob) {
 | |
|         navigator.msSaveBlob(blob, fileName)
 | |
|     } else {
 | |
|         location.href = url
 | |
|     }
 | |
| }
 | |
| 
 | |
| function testArgs(...args) {
 | |
|     switch (args.length) {
 | |
|         case 0, 1:
 | |
|             return false;
 | |
|         case 2:
 | |
|             return args[0] && args[1] &&
 | |
|                 (typeof args[0] == "string") &&
 | |
|                 (args[1] instanceof Array) &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string");
 | |
|         case 3:
 | |
|             return args[0] && args[1] &&
 | |
|                 typeof args[0] == "string" &&
 | |
|                 args[1] instanceof Array &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string") &&
 | |
|                 (
 | |
|                     (
 | |
|                         args[2] instanceof Array &&
 | |
|                         testArrayVals(args[2], v => typeof v == "string")
 | |
|                     ) || (
 | |
|                         args[2] instanceof ExtractResult
 | |
|                     )
 | |
|                 );
 | |
|         case 4:
 | |
|             return args[0] && args[1] &&
 | |
|                 typeof args[0] == "string" &&
 | |
|                 args[1] instanceof Array &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string") &&
 | |
|                 typeof args[2] == "string" &&
 | |
|                 args[3] instanceof Array &&
 | |
|                 testArrayVals(args[3], v => typeof v == "number");
 | |
|         case 6:
 | |
|             return args[0] && args[1] &&
 | |
|                 typeof args[0] == "string" &&
 | |
|                 args[1] instanceof Array &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string") &&
 | |
|                 typeof args[2] == "string" &&
 | |
|                 !isNaN(args[3]) && !isNaN(args[4]) && !isNaN(args[5]);
 | |
|         default:
 | |
|             return false;
 | |
|     }
 | |
| 
 | |
|     function testArrayVals(arr, tester) {
 | |
|         return arr.reduce((p, c) => p && tester(c), true);
 | |
|     }
 | |
| } |