Greasy Fork

Greasy Fork is available in English.

Pandabuy converter

Converts price to GBP on pandabuy

// ==UserScript==
// @name         Pandabuy converter
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Converts price to GBP on pandabuy
// @author       You
// @match        https://www.pandabuy.com/product*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=pandabuy.com
// @grant        none
// @license MIT
// ==/UserScript==

// Bulky but makes the script nicer overall

let data = [
    {
      "currency": "Albania Lek",
      "abbreviation": "ALL",
      "symbol": "Lek"
    },
    {
      "currency": "Afghanistan Afghani",
      "abbreviation": "AFN",
      "symbol": "؋"
    },
    {
      "currency": "Argentina Peso",
      "abbreviation": "ARS",
      "symbol": "$"
    },
    {
      "currency": "Aruba Guilder",
      "abbreviation": "AWG",
      "symbol": "ƒ"
    },
    {
      "currency": "Australia Dollar",
      "abbreviation": "AUD",
      "symbol": "$"
    },
    {
      "currency": "Azerbaijan New Manat",
      "abbreviation": "AZN",
      "symbol": "ман"
    },
    {
      "currency": "Bahamas Dollar",
      "abbreviation": "BSD",
      "symbol": "$"
    },
    {
      "currency": "Barbados Dollar",
      "abbreviation": "BBD",
      "symbol": "$"
    },
    {
      "currency": "Belarus Ruble",
      "abbreviation": "BYR",
      "symbol": "p."
    },
    {
      "currency": "Belize Dollar",
      "abbreviation": "BZD",
      "symbol": "BZ$"
    },
    {
      "currency": "Bermuda Dollar",
      "abbreviation": "BMD",
      "symbol": "$"
    },
    {
      "currency": "Bolivia Boliviano",
      "abbreviation": "BOB",
      "symbol": "$b"
    },
    {
      "currency": "Bosnia and Herzegovina Convertible Marka",
      "abbreviation": "BAM",
      "symbol": "KM"
    },
    {
      "currency": "Botswana Pula",
      "abbreviation": "BWP",
      "symbol": "P"
    },
    {
      "currency": "Bulgaria Lev",
      "abbreviation": "BGN",
      "symbol": "лв"
    },
    {
      "currency": "Brazil Real",
      "abbreviation": "BRL",
      "symbol": "R$"
    },
    {
      "currency": "Brunei Darussalam Dollar",
      "abbreviation": "BND",
      "symbol": "$"
    },
    {
      "currency": "Cambodia Riel",
      "abbreviation": "KHR",
      "symbol": "៛"
    },
    {
      "currency": "Canada Dollar",
      "abbreviation": "CAD",
      "symbol": "$"
    },
    {
      "currency": "Cayman Islands Dollar",
      "abbreviation": "KYD",
      "symbol": "$"
    },
    {
      "currency": "Chile Peso",
      "abbreviation": "CLP",
      "symbol": "$"
    },
    {
      "currency": "China Yuan Renminbi",
      "abbreviation": "CNY",
      "symbol": "¥"
    },
    {
      "currency": "Colombia Peso",
      "abbreviation": "COP",
      "symbol": "$"
    },
    {
      "currency": "Costa Rica Colon",
      "abbreviation": "CRC",
      "symbol": "₡"
    },
    {
      "currency": "Croatia Kuna",
      "abbreviation": "HRK",
      "symbol": "kn"
    },
    {
      "currency": "Cuba Peso",
      "abbreviation": "CUP",
      "symbol": "₱"
    },
    {
      "currency": "Czech Republic Koruna",
      "abbreviation": "CZK",
      "symbol": "Kč"
    },
    {
      "currency": "Denmark Krone",
      "abbreviation": "DKK",
      "symbol": "kr"
    },
    {
      "currency": "Dominican Republic Peso",
      "abbreviation": "DOP",
      "symbol": "RD$"
    },
    {
      "currency": "East Caribbean Dollar",
      "abbreviation": "XCD",
      "symbol": "$"
    },
    {
      "currency": "Egypt Pound",
      "abbreviation": "EGP",
      "symbol": "£"
    },
    {
      "currency": "El Salvador Colon",
      "abbreviation": "SVC",
      "symbol": "$"
    },
    {
      "currency": "Estonia Kroon",
      "abbreviation": "EEK",
      "symbol": "kr"
    },
    {
      "currency": "Euro Member Countries",
      "abbreviation": "EUR",
      "symbol": "€"
    },
    {
      "currency": "Falkland Islands (Malvinas) Pound",
      "abbreviation": "FKP",
      "symbol": "£"
    },
    {
      "currency": "Fiji Dollar",
      "abbreviation": "FJD",
      "symbol": "$"
    },
    {
      "currency": "Ghana Cedis",
      "abbreviation": "GHC",
      "symbol": "¢"
    },
    {
      "currency": "Gibraltar Pound",
      "abbreviation": "GIP",
      "symbol": "£"
    },
    {
      "currency": "Guatemala Quetzal",
      "abbreviation": "GTQ",
      "symbol": "Q"
    },
    {
      "currency": "Guernsey Pound",
      "abbreviation": "GGP",
      "symbol": "£"
    },
    {
      "currency": "Guyana Dollar",
      "abbreviation": "GYD",
      "symbol": "$"
    },
    {
      "currency": "Honduras Lempira",
      "abbreviation": "HNL",
      "symbol": "L"
    },
    {
      "currency": "Hong Kong Dollar",
      "abbreviation": "HKD",
      "symbol": "$"
    },
    {
      "currency": "Hungary Forint",
      "abbreviation": "HUF",
      "symbol": "Ft"
    },
    {
      "currency": "Iceland Krona",
      "abbreviation": "ISK",
      "symbol": "kr"
    },
    {
      "currency": "India Rupee",
      "abbreviation": "INR",
      "symbol": null
    },
    {
      "currency": "Indonesia Rupiah",
      "abbreviation": "IDR",
      "symbol": "Rp"
    },
    {
      "currency": "Iran Rial",
      "abbreviation": "IRR",
      "symbol": "﷼"
    },
    {
      "currency": "Isle of Man Pound",
      "abbreviation": "IMP",
      "symbol": "£"
    },
    {
      "currency": "Israel Shekel",
      "abbreviation": "ILS",
      "symbol": "₪"
    },
    {
      "currency": "Jamaica Dollar",
      "abbreviation": "JMD",
      "symbol": "J$"
    },
    {
      "currency": "Japan Yen",
      "abbreviation": "JPY",
      "symbol": "¥"
    },
    {
      "currency": "Jersey Pound",
      "abbreviation": "JEP",
      "symbol": "£"
    },
    {
      "currency": "Kazakhstan Tenge",
      "abbreviation": "KZT",
      "symbol": "лв"
    },
    {
      "currency": "Korea (North) Won",
      "abbreviation": "KPW",
      "symbol": "₩"
    },
    {
      "currency": "Korea (South) Won",
      "abbreviation": "KRW",
      "symbol": "₩"
    },
    {
      "currency": "Kyrgyzstan Som",
      "abbreviation": "KGS",
      "symbol": "лв"
    },
    {
      "currency": "Laos Kip",
      "abbreviation": "LAK",
      "symbol": "₭"
    },
    {
      "currency": "Latvia Lat",
      "abbreviation": "LVL",
      "symbol": "Ls"
    },
    {
      "currency": "Lebanon Pound",
      "abbreviation": "LBP",
      "symbol": "£"
    },
    {
      "currency": "Liberia Dollar",
      "abbreviation": "LRD",
      "symbol": "$"
    },
    {
      "currency": "Lithuania Litas",
      "abbreviation": "LTL",
      "symbol": "Lt"
    },
    {
      "currency": "Macedonia Denar",
      "abbreviation": "MKD",
      "symbol": "ден"
    },
    {
      "currency": "Malaysia Ringgit",
      "abbreviation": "MYR",
      "symbol": "RM"
    },
    {
      "currency": "Mauritius Rupee",
      "abbreviation": "MUR",
      "symbol": "₨"
    },
    {
      "currency": "Mexico Peso",
      "abbreviation": "MXN",
      "symbol": "$"
    },
    {
      "currency": "Mongolia Tughrik",
      "abbreviation": "MNT",
      "symbol": "₮"
    },
    {
      "currency": "Mozambique Metical",
      "abbreviation": "MZN",
      "symbol": "MT"
    },
    {
      "currency": "Namibia Dollar",
      "abbreviation": "NAD",
      "symbol": "$"
    },
    {
      "currency": "Nepal Rupee",
      "abbreviation": "NPR",
      "symbol": "₨"
    },
    {
      "currency": "Netherlands Antilles Guilder",
      "abbreviation": "ANG",
      "symbol": "ƒ"
    },
    {
      "currency": "New Zealand Dollar",
      "abbreviation": "NZD",
      "symbol": "$"
    },
    {
      "currency": "Nicaragua Cordoba",
      "abbreviation": "NIO",
      "symbol": "C$"
    },
    {
      "currency": "Nigeria Naira",
      "abbreviation": "NGN",
      "symbol": "₦"
    },
    {
      "currency": "Korea (North) Won",
      "abbreviation": "KPW",
      "symbol": "₩"
    },
    {
      "currency": "Norway Krone",
      "abbreviation": "NOK",
      "symbol": "kr"
    },
    {
      "currency": "Oman Rial",
      "abbreviation": "OMR",
      "symbol": "﷼"
    },
    {
      "currency": "Pakistan Rupee",
      "abbreviation": "PKR",
      "symbol": "₨"
    },
    {
      "currency": "Panama Balboa",
      "abbreviation": "PAB",
      "symbol": "B/."
    },
    {
      "currency": "Paraguay Guarani",
      "abbreviation": "PYG",
      "symbol": "Gs"
    },
    {
      "currency": "Peru Nuevo Sol",
      "abbreviation": "PEN",
      "symbol": "S/."
    },
    {
      "currency": "Philippines Peso",
      "abbreviation": "PHP",
      "symbol": "₱"
    },
    {
      "currency": "Poland Zloty",
      "abbreviation": "PLN",
      "symbol": "zł"
    },
    {
      "currency": "Qatar Riyal",
      "abbreviation": "QAR",
      "symbol": "﷼"
    },
    {
      "currency": "Romania New Leu",
      "abbreviation": "RON",
      "symbol": "lei"
    },
    {
      "currency": "Russia Ruble",
      "abbreviation": "RUB",
      "symbol": "руб"
    },
    {
      "currency": "Saint Helena Pound",
      "abbreviation": "SHP",
      "symbol": "£"
    },
    {
      "currency": "Saudi Arabia Riyal",
      "abbreviation": "SAR",
      "symbol": "﷼"
    },
    {
      "currency": "Serbia Dinar",
      "abbreviation": "RSD",
      "symbol": "Дин."
    },
    {
      "currency": "Seychelles Rupee",
      "abbreviation": "SCR",
      "symbol": "₨"
    },
    {
      "currency": "Singapore Dollar",
      "abbreviation": "SGD",
      "symbol": "$"
    },
    {
      "currency": "Solomon Islands Dollar",
      "abbreviation": "SBD",
      "symbol": "$"
    },
    {
      "currency": "Somalia Shilling",
      "abbreviation": "SOS",
      "symbol": "S"
    },
    {
      "currency": "South Africa Rand",
      "abbreviation": "ZAR",
      "symbol": "R"
    },
    {
      "currency": "Korea (South) Won",
      "abbreviation": "KRW",
      "symbol": "₩"
    },
    {
      "currency": "Sri Lanka Rupee",
      "abbreviation": "LKR",
      "symbol": "₨"
    },
    {
      "currency": "Sweden Krona",
      "abbreviation": "SEK",
      "symbol": "kr"
    },
    {
      "currency": "Switzerland Franc",
      "abbreviation": "CHF",
      "symbol": "CHF"
    },
    {
      "currency": "Suriname Dollar",
      "abbreviation": "SRD",
      "symbol": "$"
    },
    {
      "currency": "Syria Pound",
      "abbreviation": "SYP",
      "symbol": "£"
    },
    {
      "currency": "Taiwan New Dollar",
      "abbreviation": "TWD",
      "symbol": "NT$"
    },
    {
      "currency": "Thailand Baht",
      "abbreviation": "THB",
      "symbol": "฿"
    },
    {
      "currency": "Trinidad and Tobago Dollar",
      "abbreviation": "TTD",
      "symbol": "TT$"
    },
    {
      "currency": "Turkey Lira",
      "abbreviation": "TRY",
      "symbol": null
    },
    {
      "currency": "Turkey Lira",
      "abbreviation": "TRL",
      "symbol": "₤"
    },
    {
      "currency": "Tuvalu Dollar",
      "abbreviation": "TVD",
      "symbol": "$"
    },
    {
      "currency": "Ukraine Hryvna",
      "abbreviation": "UAH",
      "symbol": "₴"
    },
    {
      "currency": "United Kingdom Pound",
      "abbreviation": "GBP",
      "symbol": "£"
    },
    {
      "currency": "United States Dollar",
      "abbreviation": "USD",
      "symbol": "$"
    },
    {
      "currency": "Uruguay Peso",
      "abbreviation": "UYU",
      "symbol": "$U"
    },
    {
      "currency": "Uzbekistan Som",
      "abbreviation": "UZS",
      "symbol": "лв"
    },
    {
      "currency": "Venezuela Bolivar",
      "abbreviation": "VEF",
      "symbol": "Bs"
    },
    {
      "currency": "Viet Nam Dong",
      "abbreviation": "VND",
      "symbol": "₫"
    },
    {
      "currency": "Yemen Rial",
      "abbreviation": "YER",
      "symbol": "﷼"
    },
    {
      "currency": "Zimbabwe Dollar",
      "abbreviation": "ZWD",
      "symbol": "Z$"
    }
  ]

  function decodeHTMLEntities(text) {
    let textArea = document.createElement('textarea');
    textArea.innerHTML = text;
    return textArea.value;
  }

function GetSymbol(abbreviation){
    for (let i = 0; i < data.length; i++){
        let OBJ = data[i]
        let CHECK = OBJ["abbreviation"]
        if (CHECK == abbreviation){
            return decodeHTMLEntities(OBJ.symbol)
        }
    }
    return null
}

let Currency = "GBP"

let PossibleCurrency = localStorage.getItem("MOJAVEMF_CURRENCY")

  
if (PossibleCurrency === undefined){
    localStorage.setItem("MOJAVEMF_CURRENCY",Currency)
} else {
    Currency = PossibleCurrency
}

localStorage.setItem("MOJAVEMF_CURRENCY",Currency)

function Wait(MS){
    return new Promise((res,rej) => {
        try{
            setTimeout(() => {
                res()
            }, MS);
        } catch(err){
            rej(err)
        }
    })
}

let main = async function() {
    'use strict';

    let Currenceys = []
    
    let Fetched = await fetch("https://open.er-api.com/v6/latest/CNY")
    
    let JSON_FETCH = await Fetched.json();

    let ConversionRate = JSON_FETCH.rates[Currency]
    
    for (const key in Object.keys(JSON_FETCH.rates)){
        Currenceys.push(key)
    }

    let Defined = false;
    let PriceHolder //= document.getElementsByClassName("price-title")
    let Layout 

    while (Defined == false){
        await Wait(250);
        const holders = document.getElementsByClassName("price-goods-discount-layout");
        if (holders.length > 0){
            Layout = holders[0]
            /*
            PriceHolder = holders[0]
            Defined = true;
            */
            for (const child of holders[0].children){
                if (child.className == ""){
                    PriceHolder = child;
                    Defined = true;
                }
            }
        }
    }


    let text = PriceHolder.innerText
    let data = +text.replace(/[^0-9.]/g,"")
    let Symbol = GetSymbol(Currency)
    let newText = `| ${Currency} ${Symbol} ${Math.round((data*ConversionRate)*100)/100}` //`${text} | ${Currency} ${Symbol} ${Math.round((data*ConversionRate)*100)/100}`
    let ConvertedHolder = document.createElement("span")
    ConvertedHolder.style = PriceHolder.style
    ConvertedHolder.innerText = newText
    Layout.appendChild(ConvertedHolder)
    let ChangeCurrency = document.createElement("button")
    ChangeCurrency.className = "el-button margin-left-10 change-price el-button--text el-button--mini"
    Layout.appendChild(ChangeCurrency)
    let change = document.getElementsByClassName("el-button margin-left-10 change-price el-button--text el-button--mini")[0]
    Layout.appendChild(change)
    let Text = document.createElement("span")
    Text.innerText = "Change currency"
    ChangeCurrency.appendChild(Text)
    ChangeCurrency.onclick = function(){
        let input = window.prompt("Input currency (3 letter abbriviation)")


        if (!(JSON_FETCH.rates[input] == undefined)){
            localStorage.setItem("MOJAVEMF_CURRENCY",input)
            location.reload()
            return;
        }
        alert("Invalid currency")
    }

    document.getElementsByClassName("text-refreash")[0].addEventListener("click",function(){
        main();
    })
    PriceHolder.addEventListener("DOMSubtreeModified",function(){
        let text = PriceHolder.innerText
    let data = +text.replace(/[^0-9.]/g,"")
    let Symbol = GetSymbol(Currency)
        let newText = `| ${Currency} ${Symbol} ${Math.round((data*ConversionRate)*100)/100}` 
        ConvertedHolder.innerText = newText
    })
}

main();