SFBA report

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

Version vom 03.10.2016. Aktuellste Version

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

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.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

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;
}