Copiar anúncios de uma conta para outra no MercadoLivre

Se você precisa copiar vários anúncios de uma conta do MercadoLivre para outra estes dois Userscripts vão ajudar.

Um dos scripts faz o Backup dos anúncios e o outro faz o Upload dos anúncios na nova conta.

O processo de uso não é tão fácil, fiz estes scripts para minha necessidade então não criei uma interface visual, é preciso um conhecimento razoável sobre Ferramentas do Administrador do Chrome, API do ML e o básico de JS.

O aplicativo é em formato de Userscript e foi desenvolvido para ser usado no Chrome com o complemento Tampermonkey, Primeiro instale o complemento Tampermonkey no Google Chrome: //chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo

Abaixo o script para fazer o backup dos anúncios:

// ==UserScript==
// @name	ML - Baixar Anuncios
// @author	Daniel Plácido ([email protected])
// @website //www.ideias.pw
// @description	Script para efetuar backup dos anuncios
// @version	1.3
// @downloadURL	//
// @updateURL	//
// @require	//www.ideias.pw/userscripts/jquery3.3.1.min.js
// @connect 
// @match	//myaccount.mercadolivre.com.br/summary/?EXPORTAR=TUDO
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_listValues
// @grant GM_log
// @run-at	document-end
// ==/UserScript==

$(document).ready(function(){
    //CONVERTER PARA SALVAR EM XML
    var my_id = "xxxxxx"; //COLOQUER AQUI SUA ID
    var access_token = "xxxxxxxxxxxxxxxxxxxx"; //COLOQUE AQUI SEU ACCESS TOKEN (NÃO SE ESQUEÇA QUE ELE VENCE A CADA 6 HORAS)


    //função que baixa os anuncios, é chamada automaticamente pelo $.getJSON
    function baixar(n1, n2) {
        console.log('Ok! ' + n1 + ' até ' + n2);
        //Requisita a lista com ID dos anuncios, de 10 em 10
        $.getJSON('//api.mercadolibre.com/users/'+my_id+'/items/search?access_token='+access_token+'&offset='+n1+'&limit=10&status=active', function(retorno){
            //Cria um loop para ler cada anuncio
            for (c=0;c<100;c++){
                let temp = retorno.results[c];
                //se existir a variavel com a ID (pois ela pode ter vindo vazio caso tinha menos de 100 anuncios neste loop)
                if(temp){
                    //Baixa os detalhes do produto
                    $.getJSON('//api.mercadolibre.com/items/'+temp+'?access_token='+access_token, function(retorno){
                        //console.log("Baixando " + temp);
                        let titulo =  retorno.title;
                        let tipo_anuncio = retorno.listing_type_id;
                        let preco = retorno.base_price;
                        let categoria = retorno.category_id;
                        let estoque = retorno.available_quantity;
                        let condicao = retorno.condition;
                        let permalink = retorno.permalink;
                        let qtd_fotos = retorno.pictures.length;
                        let imagem;
                        //Cria um "for-else"
                        find: {
                            let pics = new Object();
                            //Cria um loop para salvar a URL das imagens
                            for (i=0;i<qtd_fotos;i++){
                                pics[i] = retorno.pictures[i].url;
                            } // else do loop for
                            //Baixa a Descrição do produto
                            $.getJSON('//api.mercadolibre.com/items/'+ temp +'/description', function(retorno){
                                let desc = retorno.plain_text;
                                let body_obj = { link: permalink, title: titulo, category_id: categoria, stock: estoque, price: preco, listing_type_id: tipo_anuncio, condition: condicao, description: desc, pictures: pics };
                                let body = JSON.stringify(body_obj);
                                GM_setValue(temp, body);
                            });
                        }
                    });
                }
            }
        });
    }

    //Cria um loop para salvar todos os anuncios
    //Requisita o número total de anuncios Ativos
    $.getJSON('//api.mercadolibre.com/users/'+my_id+'/items/search?access_token='+access_token+'&status=active', function(retorno){
        var total = retorno.paging.total;
        var lotesConsultas = Math.trunc((total-1)/10);
        for(i=0;i<=lotesConsultas;i++) {
            if (i<lotesConsultas) {
                console.log('Baixando de: ' + i*10 + ' até ' + (((i+1)*10)-1));
                baixar(i*10, (((i+1)*10)-1));
            } else {
                console.log('Baixando de ' + i*10 + ' até ' + (total-1));
                baixar(i*10, (total-1));
            }
        }
    });

});

Você vai precisar criar um Aplicativo de integração com o MercadoLivre para poder usar a API: //developers.mercadolivre.com.br/apps/

Você vai precisar do Access Token: //developers.mercadolibre.com/pt-br/produto-autenticacao-autorizacao/#token

Você vai precisar da sua ID do MercadoLivre

Cole seu Access Token e sua ID nas linhas correspondentes (var access_token e var my_id)

Para salvar todos os anúncios acesse a URL: //myaccount.mercadolivre.com.br/summary/?EXPORTAR=TUDO

Não vai surgir nenhum aviso que os anúncios foram salvos, abra as “Ferramentas do Desenvolvedor” do Chrome e fique observando na aba Network que irão aparecer várias linhas uma para cada anuncio salvo, elas tem de ter o status 200 (sucess)

Quando terminar de exportar todos anúncios estão salvos no banco de dados do navegador, para acessar abra o TamperMonkey e o script “ML – Baixar Anúncios”, vá na guia “Armazenamento”

 

 

 

 

Agora para importar estes anúncios na outra conta sugiro criar um novo perfil no Google Chrome para acessar a outra conta do MercadoLivre, instale o TamperMonkey neste perfil e segue abaixo o script para importar os anúncios para esta nova conta:

// ==UserScript==
// @name	ML - Subir Anuncios
// @author	Daniel Plácido ([email protected])
// @website //
// @description	Script para efetuar backup dos anuncios
// @version	1.1
// @downloadURL	//
// @updateURL	//
// @require	//www.ideias.pw/userscripts/jquery3.3.1.min.js
// @connect
// @match	//myaccount.mercadolivre.com.br/summary/?IMPORTAR=TUDO
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_listValues
// @grant GM_log
// @run-at	document-end
// ==/UserScript==
$(document).ready(function(){
    var access_token = "xxxxxxxxxxxxxxxxxxxx"; //COLOQUE AQUI SEU ACCESS TOKEN (NÃO SE ESQUEÇA QUE ELE VENCE A CADA 6 HORAS)

    var produtos = GM_listValues(); //Verifica a quantidade de anuncios
    //Cria um loop para ver todos os anuncios
    for (var i=0; i < produtos.length; i++) {
        //Este anuncio
        let produto = JSON.parse(GM_getValue(produtos[i]));

        //Pega 12 fotos (como não tenho anuncio com mais de 12 fotos preferi fazer assim que deu menos trabalho)
        if(produto.pictures[0]){t1 = {source: produto.pictures[0] }}else{t1 = {source: "//www.ml.com"} };
        if(produto.pictures[1]){t2 = {source: produto.pictures[1] }}else{t2 = {source: "//www.ml.com"} };
        if(produto.pictures[2]){t3 = {source: produto.pictures[2] }}else{t3 = {source: "//www.ml.com"} };
        if(produto.pictures[3]){t4 = {source: produto.pictures[3] }}else{t4 = {source: "//www.ml.com"} };
        if(produto.pictures[4]){t5 = {source: produto.pictures[4] }}else{t5 = {source: "//www.ml.com"} };
        if(produto.pictures[5]){t6 = {source: produto.pictures[5] }}else{t6 = {source: "//www.ml.com"} };
        if(produto.pictures[6]){t7 = {source: produto.pictures[6] }}else{t7 = {source: "//www.ml.com"} };
        if(produto.pictures[7]){t8 = {source: produto.pictures[7] }}else{t8 = {source: "//www.ml.com"} };
        if(produto.pictures[8]){t9 = {source: produto.pictures[8] }}else{t9 = {source: "//www.ml.com"} };
        if(produto.pictures[9]){t9 = {source: produto.pictures[9] }}else{t10 = {source: "//www.ml.com"} };
        if(produto.pictures[10]){t9 = {source: produto.pictures[10] }}else{t11 = {source: "//www.ml.com"} };
        if(produto.pictures[11]){t9 = {source: produto.pictures[11] }}else{t12 = {source: "//www.ml.com"} };
        var fotos = [t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11];

        //Variável com todos os dados do anuncio para serem enviados
        var dados_post = {"title": produto.title,
                          "category_id": produto.category_id,
                          "price": produto.price,
                          "currency_id": "BRL",
                          "available_quantity": produto.stock,
                          "buying_mode": "buy_it_now",
                          "listing_type_id": produto.listing_type_id,
                          "condition": produto.condition,
                          "description":{"plain_text": produto.description},
                          "pictures": fotos };

        //faz o Post dos dados
        $.ajax({
            url: "//api.mercadolibre.com/items?access_token="+access_token,
            type: 'POST',
            dataType : "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(dados_post),
            success: function(result){
                alert("Publicado com sucesso!");
                $('h1').before('<div id="cadastro_ml"><a href="'+result.permalink+'" target="_blank">Ver anuncio</a> <br/><a href="//vender.mercadolivre.com.br/item/update?itemId='+result.id+'" target="_blank">Editar anuncio</a> <br/><a href="//vender.mercadolivre.com.br/spa/item/'+result.id+'/update/category?itemId='+result.id+'&metricsEnabled=1" target="_blank">Editar categoria</a> <br/><a href="//myaccount.mercadolivre.com.br/listings/closeModal?itemId='+result.id+'" id="remover" id_item="'+result.id+'" target="_blank">Remover anuncio</a></div>');
                console.log(result);
            },
            error: function(result){
                alert("Erro, verifique o console.");
                console.log(result.responseJSON.error);
            }
        });
    }
});

Neste script vai precisar do Access Token, mesma coisa cole na linha correspondente (não se esqueça ce autorizar sua App criada da outra conta acessando a URL para obter o Access Token).

Abra a aba Armazenamento e cole todo o conteúdo gerado no outro script, estes são os seus anuncios em formato JSON.

Para importar todos os anúncios acesse a URL: //myaccount.mercadolivre.com.br/summary/?IMPORTAR=TUDO

Abra o Console do navegador e observe as mensagens pois vai começar a surgir avisando que o anuncio foi salvo, para cada anuncio uma notificação então podem ser centenas ou milhares de dependendo da quantidade de anúncios.

Se tudo deu certo todos os anúncios foram replicados.

Ps1.: Isto não vai copiar as frescuras das Fichas Técnicas.

Ps2.: Não se esqueça de Desativar os scripts após o uso.