SFBA report

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

Tính đến 30-09-2016. Xem phiên bản mới nhất.

// ==UserScript==
// @name         SFBA report
// @namespace    https://trade.aliexpress.com/
// @include      https://trade.aliexpress.com/orderList.htm*
// @include      https://www.banggood.com/index.php?com=account&t=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*
// @version      0.51
// @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==

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(tags[i].children[0].children[0].children[0].children[0].src);
            price = tags[i].children[0].children[3].children[0].children[0].children[1].outerText;
            
            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(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(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(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(picture)
{
    // Picture url format is https://ae01.alicdn.com/kf/blablabla.jpg_50x50.jpg   
    return picture.replace("50x50", "100x100");
}

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