get-booru-urls/background.js

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