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