53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
const urlPatterns = ['*://danbooru.donmai.us/posts/*'];
|
|
|
|
let pairs;
|
|
let tabsLeft = 0;
|
|
|
|
function saveAs(filename, text) {
|
|
let href = 'data:text/plain;charset=utf-8,' + encodeURIComponent(text);
|
|
|
|
let element = document.createElement('a');
|
|
element.href = href;
|
|
element.download = filename;
|
|
element.click();
|
|
}
|
|
|
|
function onResponse(id, url) {
|
|
pairs.push({ id: id, url: url });
|
|
|
|
tabsLeft--;
|
|
|
|
if (tabsLeft == 0) {
|
|
pairs = pairs.filter(p => p.url != null);
|
|
|
|
let urls = pairs.map(p => p.url);
|
|
urls = [...new Set(urls)];
|
|
urlText = urls.join('\n');
|
|
saveAs('urls', urlText);
|
|
|
|
let ids = pairs.map(p => p.id);
|
|
chrome.tabs.remove(ids);
|
|
}
|
|
}
|
|
|
|
function getURLs() {
|
|
if (tabsLeft > 0) {
|
|
return;
|
|
}
|
|
|
|
chrome.tabs.query({ url: urlPatterns }, tabs => {
|
|
pairs = [];
|
|
tabsLeft = tabs.length;
|
|
|
|
for (tab of tabs) {
|
|
let id = tab.id;
|
|
chrome.tabs.sendMessage(tab.id, "", null, url => onResponse(id, url));
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
chrome.browserAction.onClicked.addListener(getURLs);
|
|
|
|
//TODO: Disable browser action when no booru tab is found
|