Twinhead Extract Pins

Adds a button to turn Twinhead map pins into TomTom coordinates

// ==UserScript==
// @name         Twinhead Extract Pins
// @namespace    http://tampermonkey.net/
// @version      1.0
// @license      GPLv3
// @description  Adds a button to turn Twinhead map pins into TomTom coordinates
// @author       xdpirate
// @match        https://vanilla-twinhead.twinstar.cz/?*
// @match        https://tbc-twinhead.twinstar.cz/?*
// @match        https://wotlk-twinhead.twinstar.cz/?*
// @match        https://cata-twinhead.twinstar.cz/?*
// @match        https://mop-twinhead.twinstar.cz/?*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=cata-twinhead.twinstar.cz
// @grant        none
// ==/UserScript==

let btn = document.querySelector("div.button.wowhead");
let btnClone = btn.cloneNode(true);
let cloneLink = btnClone.querySelector("a");
cloneLink.innerText = "Extract pins";
cloneLink.removeAttribute("href");
cloneLink.addEventListener("click", function() {
    let name = document.querySelector("div#main-contents > div.text > h1").innerText;
    let map = document.querySelector(`div#mapper-generic div > a[href^="/?zone"]`).innerText;
    let pins = document.querySelectorAll("div.pin");
    let waypoints = "";

    for(let i = 0; i < pins.length; i++) {
        let coords = pins[i].getAttribute("style").match(/left\: ([0-9][0-9]?\.?[0-9]?)[0-9]?%; top\: ([0-9][0-9]?\.?[0-9]?)[0-9]?%;/i);
        if(coords) {
            waypoints += `/way ${map} ${coords[1]} ${coords[2]} ${name}\n`;
        }
    }

    let macroArea = document.querySelector("#extractPinsMacroArea");
    if(!macroArea) {
        macroArea = document.createElement("textarea");
        macroArea.id = "extractPinsMacroArea";
        macroArea.style.width = "500px";
        macroArea.style.height = "250px";
        let refNode = document.querySelectorAll("div.clear")[2];
        refNode.after(macroArea);
    }
    macroArea.innerHTML = waypoints;
});

btn.insertAdjacentElement("beforebegin", btnClone);