From b7aaa2b7f391ec5761cf8977165a61772f7c5ec8 Mon Sep 17 00:00:00 2001 From: jebbs Date: Wed, 26 Sep 2018 14:27:01 +0800 Subject: [PATCH] url list support --- scripts/content.js | 1 + scripts/extract.js | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/content.js b/scripts/content.js index c7f5e81..03234d1 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -44,6 +44,7 @@ function extract(...args) { function extract(itemsSelector:string, fieldSelectors:string[]) function extract(itemsSelector:string, fieldSelectors:string[], url:string, from:number, to:number, interval:number) function extract(itemsSelector:string, fieldSelectors:string, url:string, pages:number[]) +function extract(itemsSelector:string, fieldSelectors:string[], urls:string[]) ## Examples: ---------------------------- diff --git a/scripts/extract.js b/scripts/extract.js index 8afe6bc..6f8918d 100644 --- a/scripts/extract.js +++ b/scripts/extract.js @@ -2,20 +2,23 @@ * Extract data from current tab / multiple urls. * @param {string} itemsSelector items selectors for selecting items (data rows) * @param {Array} fieldSelectors fields selectors for selecting fields (data columns) under each item - * @param {string} url url template to generate urls by filling with page numers. - * @param {...number} args page numers, either [from, to, interval] or [...pages] + * @param {...any} args url list / url templates, page numers, either [from, to, interval] or [...pages] */ -function extract(itemsSelector, fieldSelectors, url, ...args) { +function extract(itemsSelector, fieldSelectors, ...args) { let urls = []; - if (url) { + let listOrTempl = args.shift(); + if (listOrTempl instanceof Array) { + urls = listOrTempl; + } else if (url) { + let urlTempl = listOrTempl; if (args[0] instanceof Array) { - urls = args[0].map(p => url.replace("${page}", p)); + urls = args[0].map(p => urlTempl.replace("${page}", p)); } else if (args.length >= 3) { let from = args.shift(); let to = args.shift(); let interval = args.shift(); for (let i = from; i <= to; i += interval) { - urls.push(url.replace("${page}", i)); + urls.push(urlTempl.replace("${page}", i)); } } }