// ==UserScript== // @name netzradar-yourls-downloader // @namespace http://tampermonkey.net/ // @version 2024-12-20_08-39 // @description Lädt Daten aus unserer Yourls-Instanz als CSV herunter // @author You // @match https://x.swr.de/a/admin/* // @grant none // ==/UserScript== (function() { 'use strict'; const getDataFromRow = (d) => { const shortURL = d.querySelector("td.keyword > a").href const title = d.querySelector("td.url > a").title const link = d.querySelector("td.url > a").href const unixTime = d.querySelector("span.timestamp").innerText const dateObj = new Date(unixTime *1000) const dateStr = dateObj.toISOString().split("T")[0] const clicks = d.querySelector("td.clicks").innerText return '"' + [shortURL, title, link, dateStr, clicks].join('";"') + '"' } const createCSV = () => { const rows = document.querySelectorAll("tr[id^='id-']") const rowData = [...rows].map((d) => getDataFromRow(d)) const csv = rowData.join("\n") return csv } const createDownload = () => { const csv = createCSV() const a = document.createElement('a'); a.href = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv); //supported by chrome 14+ and firefox 20+ a.download = 'yourls-data.csv'; //needed for firefox document.getElementsByTagName('body')[0].appendChild(a); //supported by chrome 20+ and firefox 5+ a.click(); } const createDownloadButton = () => { let btn = document.createElement("input") btn.type = "button" btn.value = "Download csv" btn.className = "button" btn.onclick = () => createDownload() document.getElementById("filter_buttons").appendChild(btn) } createDownloadButton() })();