SFBA report

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

Від 03.10.2016. Дивіться остання версія.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(У мене вже є менеджер скриптів, дайте мені встановити його!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         SFBA report
// @namespace    https://trade.aliexpress.com/
// @include      https://trade.aliexpress.com/orderList.htm*
// @include      https://www.banggood.com/index.php?*ordersList*
// @include      https://www.amazon.fr/gp/your-account/order-history*
// @include      https://www.amazon.fr/gp/css/order-history*
// @include      https://user.gearbest.com/my-orders.html*
// @include      http://forum.hardware.fr/*
// @version      0.62
// @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);
}


function checkCurrentSite()
{
   if(window.location.href.indexOf("banggood") > -1)
   {
       getBGOrders();
   }
   else if(window.location.href.indexOf("aliexpress") > -1)
   {
       getAEOrders();
   }
   else if (window.location.href.indexOf("amazon") > -1)
   {
       getAZOrders();
   }
   else if (window.location.href.indexOf("gearbest") > -1)
   {
       getGBOrders();
   }
}

function getGBOrders()
{
    var post = "#SFBAreport [b]Gearbest[/b]\n\n";
    var tags = document.getElementsByTagName('dl');
    for (var i = 0; i < tags.length; i++)
    {
        if (tags[i].className == "clearfix")
        {
            var title = [];
            var link = [];
            var img = [];
            var price;
            
            title.push(tags[i].children[0].children[1].children[0].children[0].innerText);
            link.push(tags[i].children[0].children[0].children[0].href);
            img.push(convertToLargePicture("GB", tags[i].children[0].children[0].children[0].children[0].src));
            price = tags[i].children[0].children[3].children[0].children[0].children[1].innerText;
            
            post += formatPost(title, link, img, price);
        }
    }
    GM_setClipboard(post); 
}

function getBGOrders()
{
    var priceList = [];
    var post = "#SFBAreport [b]Banggood[/b]\n\n";
    
    var priceTags = document.getElementsByTagName('td');
    for (var j = 0; j < priceTags.length; j++)
    {
        if (priceTags[j].className == "price")
        {
            priceList.push(priceTags[j].innerText); 
        }
    }
    
    
    var tags = document.getElementsByTagName('div');
    var id = 0;
    for (var i = 0; i < tags.length; i++)
    {
        if (tags[i].className == "picture_box")
        {
            var title = [];
            var link = [];
            var img = [];
            var price;
            for (j = 0; j < tags[i].children[0].children.length; j++)
            {
                title.push(tags[i].children[0].children[j].children[0].title);
                link.push(tags[i].children[0].children[j].children[0].href);
                img.push(convertToLargePicture("BG", tags[i].children[0].children[j].children[0].children[0].src));

            }
            price = priceList[id];
            
            post += formatPost(title, link, img, price);
            
            id++;
        }   
    }
    GM_setClipboard(post);
}

function getAZOrders()
{
    var post = "#SFBAreport [b]Amazon[/b]\n\n";
    var priceList = [];
    var priceTags = document.getElementsByTagName('div');
    for (var j = 0; j < priceTags.length; j++)
    {
        if (priceTags[j].className == "a-fixed-left-grid-col a-col-right")
        {
            if (priceTags[j].children[3].children[0].innerText !== "")
            {
               priceList.push(priceTags[j].children[3].children[0].innerText);  
            }
            else if (priceTags[j].children[2].children[0].innerText !== "")
            {
                priceList.push(priceTags[j].children[2].children[0].innerText);
            }
        }
    }
    
    var tags = document.getElementsByTagName('div');
    var id = 0;
    for (var i = 0; i < tags.length; i++)
    {
        if (tags[i].className == "item-view-left-col-inner")
        {
            var title = [];
            var link = [];
            var img = [];
            var price;
            
            img.push(convertToLargePicture("AZ", tags[i].children[0].children[0].src));
            link.push(tags[i].children[0].href);
            title.push(tags[i].children[0].children[0].title);
            price = priceList[id];
            
            post += formatPost(title, link, img, price);
            
            id++;
        }
    }
    GM_setClipboard(post);
}

function getAEOrders()
{
    var post = "#SFBAreport [b]Aliexpress[/b]\n\n";
    var tags = document.getElementsByTagName('td');
    for (var i = 0; i < tags.length; i++)
    {
        if (tags[i].hasAttribute("class"))
        {
            if (tags[i].className == "product-sets")
            {
                var title = [];
                var link = [];
                var img = [];
                var price;
                
                img.push(convertToLargePicture("AE", tags[i].children[0].children[0].children[0].src));
                link.push(tags[i].children[1].children[0].children[0].href);
                title.push(tags[i].children[1].children[0].children[0].title);
                price = tags[i].children[1].children[2].innerText;
                
                post += formatPost(title, link, img, price);
            }
        }
    }
    GM_setClipboard(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");
            break;
            
        case "AZ":
            resized = picture.replace("SY90", "SY120");
            resized = resized.replace("SX90", "SX120");
            break;
        
        case "BG":
            resized = picture.replace("other_items", "grid");
            break;
            
        case "GB":
            //resized = picture.replace("thumb-img", "goods-img");
            //resized = resized.replace("thumb-", "");
            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;
}