63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { ExtractResult } from "./result";
|
|
|
|
const URL_REG = /^\s*(https?):\/\//im;
|
|
|
|
export function parseUrls(...args) {
|
|
if (!args.length) return [];
|
|
let arg = args.shift();
|
|
if (arg instanceof Array) {
|
|
return arg;
|
|
} else if (arg instanceof ExtractResult) {
|
|
return arg.squash().filter(v => URL_REG.test(v));
|
|
} else {
|
|
let urlTempl = arg;
|
|
if (urlTempl) {
|
|
if (args[0] instanceof Array) {
|
|
return args[0].map(p => urlTempl.replace("${page}", p));
|
|
} else if (args.length >= 3) {
|
|
let urls = [];
|
|
let from = args.shift();
|
|
let to = args.shift();
|
|
let interval = args.shift();
|
|
for (let i = from; i <= to; i += interval) {
|
|
urls.push(urlTempl.replace("${page}", i));
|
|
}
|
|
return urls;
|
|
}
|
|
}
|
|
}
|
|
return [];
|
|
}
|
|
|
|
export function saveFile(data: string, mimeType: string, fileName?: string) {
|
|
fileName = fileName || document.title || "result";
|
|
let blob: Blob;
|
|
if (typeof window.Blob == "function") {
|
|
blob = new Blob([data], {
|
|
type: mimeType
|
|
})
|
|
} else {
|
|
var BlobBuiler = 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
|
|
}
|
|
}
|