SFBA report

Copie les dernières commandes des sites SFBA dans le presse papier et met en forme en bbcode

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name         SFBA report
// @namespace    https://trade.aliexpress.com/
// @match      https://www.aliexpress.com/p/order/index.html*
// @match      https://www.amazon.fr/gp/css/order-history*
// @match      https://forum.hardware.fr/*
// @version      1.0
// @description  Copie les dernières commandes des sites SFBA dans le presse papier et met en forme en bbcode
// @grant        GM_setClipboard
// @grant        GM_registerMenuCommand
// ==/UserScript==


// Reécriture des liens aliexpress s'ils pointent sur le fr
if(window.location.href.indexOf("hardware") > -1)
{
    var urls = document.getElementsByTagName("a");
    for (var i = 0; i < urls.length; i++)
    {
        if (urls[i].href.startsWith("https://fr.aliexpress.com"))
        {
            var newUrl = urls[i].href.replace("https://fr.aliexpress.com", "https://aliexpress.com");
            urls[i].setAttribute("href", newUrl);
        }
    }
}
else
{
    GM_registerMenuCommand('Copier les produits', checkCurrentSite);
}

var postEntete = "[:deejayboulette:5]\n#SFBAreport\n";


function checkCurrentSite()
{
    if(window.location.href.indexOf("aliexpress") > -1)
    {
        if (window.location.href.indexOf("wishlist") > -1)
        {
            getAEWishes();
        }
        else
        {
            getAEOrders();
        }
    }
    else if (window.location.href.indexOf("amazon") > -1)
    {
        getAZOrders();
    }
}



function getAZOrders()
{
    var post = "[:sfba:5]\n\n";
    var orders = document.getElementsByClassName('order-card');
    for (var i = 0; i < orders.length; i++)
    {
        var title = [];
        var link = [];
        var img = [];
        var price;

        var items = orders[i].getElementsByClassName('item-box')
        for (var j = 0; j < items.length; j++)
        {
            try {
                title.push(items[j].querySelector(".yohtmlc-product-title").textContent.trim());
                link.push(items[j].querySelector(".product-image a").href);
                img.push(convertToLargePicture("AZ", items[j].querySelector(".product-image img").src));
            } catch (error) {
                console.log("Formattage de merde AZ")
            }
        }
        price = orders[i].querySelector(".yohtmlc-order-total").textContent.trim();
        post += formatPost(title, link, img, price);
    }
    GM_setClipboard(postEntete+post);
}

function getAEOrders()
{
    var post = "[:lugz:5]\n\n";
    var items = document.getElementsByClassName('order-item-content-body');
    for (var i = 0; i < items.length; i++)
    {
        var title = [];
        var link = [];
        var img = [];
        var price;

        try {
            link.push(items[i].querySelector(".order-item-content-body a:first-of-type").href);
            title.push(items[i].querySelector(".order-item-content-info-name span").textContent);
            var image = items[i].querySelector(".order-item-content-img");
            if (image !== null) {
                var style = window.getComputedStyle(image);
                img.push(style.backgroundImage.slice(4, -1).replace(/"/g, ""));
            }

            var p = items[i].querySelector(".order-item-content-info-number");
            if (p !== null) {
                price = p.textContent.trim();
            }
            post += formatPost(title, link, img, price);
        } catch (error) {
            console.log("Formattage de merde AE")
        }

    }
    GM_setClipboard(postEntete+post);
}

function getAEWishes()
{
    var post = "Wish list [:lugz:5]\n\n";
    var tags = document.getElementsByTagName('li');

    for (var i = 0; i < tags.length; i++)
    {
        if (tags[i].className.indexOf("product") > -1)
        {
            var title = [];
            var link = [];
            var img = [];
            var price;

            img.push(convertToLargePicture("AE", tags[i].children[0].children[1].src));
            link.push(tags[i].children[0].href);
            title.push(tags[i].children[1].children[0].innerText);
            price = tags[i].children[1].children[1].children[0].innerText;

            post += formatPost(title, link, img, price);
        }
    }
    GM_setClipboard(postEntete+post);
}

function convertToLargePicture(site, picture)
{
    var resized = picture;

    switch(site)
    {
        case "AE":
            // Picture url format is https://ae01.alicdn.com/kf/blablabla.jpg_50x50.jpg
            resized = picture.replace("50x50", "120x120");
            /* Remplace l'image en https par sa version en http */
            resized = resized.replace("https", "http");
            break;

        case "AZ":
            resized = picture.replace("SY90", "SY120");
            resized = resized.replace("SX90", "SX120");
            break;

        default:
            break;

    }

    return resized;

}

function truncate(str, n)
{
    var isTooLong = str.length > n,
    s_ = isTooLong ? str.substr(0,n-1) : str;
    s_ = isTooLong ? s_.substr(0,s_.lastIndexOf(' ')) : s_;
    return isTooLong ? s_ + '...' : s_;
}

function formatPost(title, link, img, price)
{
    var post = "";

    for(var i=0; i<img.length; i++)
    {
        post += "[img]" + img[i] + "[/img]";
    }
    post += "\n";
    for (i=0; i<link.length; i++)
    {
        post += "[b][url=" + link[i] + "]" + truncate(title[i],80) + "[/url][/b]\n";
    }

    post += price + "\n";
    post += "Mon avis: \n\n";

    return post;
}