// ==UserScript== // @name TheTVDB Export Episodes // @namespace https://www.thetvdb.com/ // @version 1.0 // @license GPLv3 // @description Export TV show episode names and air dates from Aired Order pages on TheTVDB // @author xdpirate // @match https://thetvdb.com/series/*/allseasons/* // @match https://www.thetvdb.com/series/*/allseasons/* // @icon https://www.google.com/s2/favicons?sz=64&domain=thetvdb.com // @grant GM_addStyle // @run-at document-end // @downloadURL https://update.greasyfork.icu/scripts/526603/TheTVDB%20Export%20Episodes.user.js // @updateURL https://update.greasyfork.icu/scripts/526603/TheTVDB%20Export%20Episodes.meta.js // ==/UserScript== GM_addStyle(` .EADButton { background-color: #0DA; color: black; } `); document.querySelector("h1").insertAdjacentHTML("afterend", `
`); function downloadFile(filename, text) { let element = document.createElement('a'); element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); element.setAttribute("download", filename); element.style.display = "none"; document.body.appendChild(element); element.click(); document.body.removeChild(element); } let exportData = function() { let episodes = document.querySelectorAll(".list-group-item"); let showName = document.querySelector("div.crumbs > a[href*='/series/']").innerText.trim(); let showArr = []; for(let i = 0; i < episodes.length; i++) { let epName = episodes[i].querySelector("h4.list-group-item-heading > a").innerText.trim(); let epNum = episodes[i].querySelector(".episode-label").innerText.trim(); let epDate = episodes[i].querySelector("ul.list-inline > li:first-child").innerText.trim(); let epObj = { showName: showName, epNum: epNum, epName: epName, epDate: epDate, } showArr.push(epObj); } let seriesID = location.href.match(/^https:\/\/(?:www\.)?thetvdb\.com\/series\/(.+)\/allseasons\/(.+)/)[1]; if(document.querySelector("#EADChoiceCSV").checked) { showName = `"${showName.replaceAll(`"`, `""`)}"`; let outputText = `showName,epNum,epName,epDate\n`; for(let i = 0; i < showArr.length; i++) { let epNum = `"${showArr[i].epNum.replaceAll(`"`, `""`)}"`; let epName = `"${showArr[i].epName.replaceAll(`"`, `""`)}"`; let epDate = `"${showArr[i].epDate.replaceAll(`"`, `""`)}"`; outputText = `${outputText}${showName},${epNum},${epName},${epDate}\n`; } downloadFile(`export-${seriesID}-${Date.now()}.csv`, outputText); } else { downloadFile(`export-${seriesID}-${Date.now()}.json`, JSON.stringify(showArr)); } }; document.querySelector("#EADExportButton").addEventListener("click", exportData);