// ==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()

})();