Thursday, October 31, 2013

Copiar a lista de links de um blogue para outro

Na criação do Sirocco, uma dificuldade que me apareceu pela frente foi como copiar os blogrolls do Vento Sueste (claro que podia ter copiado só alguns blogs, mas isso ia dar ainda mais trabalho).

Na net, encontrei uma semi-solução, mas não iria criar uma "lista de links" ou uma "lista de blogs", simplesmente uma sequência de código HTML, que teria que ser sempre actualizada à mão.

No entanto, uma maneira de copiar a lista de blogues de um blog do Blogger para outro pode ser esta -  para quem use o Firefox e a extensão Greasemonkey, copiar este script:


// ==UserScript==
// @name        ImportarLinks
// @namespace   importar.miguelmadeira.no.sapo.pt
// @include     http://www.blogger.com/*
// @version     1
// @grant       none
// ==/UserScript==

switch(navigator.language.substr(0,2))
    {
    case "pt":
        E_IMPORTAR="Importar HTML"
        E_HTMLLINKS="HTML dos links"
        E_CONCLUIDA="Importação concluida"
        break
    default:
        E_IMPORTAR="Import HTML"
        E_HTMLLINKS="HTML of the links"
        E_CONCLUIDA="Importation concluded"
    }

function blog(codigo_html)
    {
    var b=new Object
    ponto1=codigo_html.indexOf("<a href=")
    ponto2=codigo_html.indexOf(">")
    ponto3=codigo_html.indexOf("</a>")
    b.url=codigo_html.slice(ponto1+9,ponto2-1)
    b.nome=codigo_html.slice(ponto2+1,ponto3)
    return b
    }
    
function criar_lista_blogs()
    {
    codigo=prompt(E_HTMLLINKS)
    lista_codigos=codigo.split("<li>")
    var lista=new Array
    for (var i=1;i<lista_codigos.length;i++)
        {
        lista[i-1]=blog(lista_codigos[i])    
        }
    return lista
}

function importar()
    {
    var lista_blogs=new Array
    var evento2 = document.createEvent("KeyboardEvent");
    evento2.initKeyEvent("keyup", true, false, window, 0, 0, 0, 0, 0, 0);
    lista_blogs=criar_lista_blogs()    
    var entradas=document.getElementsByName("additem")
    for (var i=0;i<lista_blogs.length;i++)
        {
        entradas[0].value=lista_blogs[i].nome
        entradas[1].value=lista_blogs[i].url
        entradas[1].dispatchEvent(evento2);
        document.getElementById("additem-button").click()
        }
    }
    
function adicionar_url(lista,j)
    {
    document.getElementById("url").value=lista[j].url
    document.getElementById("url-button").click()
    if (j<lista.length-1)
        {
        setTimeout(function(){registar(lista,j+1)},200)
        }
    else
        {
        alert(E_CONCLUIDA)
        }
    }

function registar(lista,j=0)
    {
    document.getElementById("add-button").click()
    setTimeout(function(){adicionar_url(lista,j)},1000)
    }

function importar2()
    {
    var lista_blogs=new Array
    lista_blogs=criar_lista_blogs()
    registar(lista_blogs)
    }

percurso=location.href
if (percurso.indexOf("LinkList")>-1)
    {
    area=document.getElementById("buttons")
    area.innerHTML=area.innerHTML.replace('<div class="clear">','<a id="import-button1" class="kd-button">'+E_IMPORTAR+'</a><div class="clear">')
    document.getElementById('import-button1').addEventListener ("click",importar, true)
    }
if (percurso.indexOf("BlogList")>-1)
    {
    area=document.getElementById("buttons")
        area.innerHTML=area.innerHTML.replace('<div class="clear">','<a id="import-button2" class="kd-button">'+E_IMPORTAR+'</a><div class="clear">')
    document.getElementById('import-button2').addEventListener ("click",importar2, true)
    }

E agora?

Depois do script estar instalado, é fazer como se escreve aqui e copiar o código HTML da lista de blog; o código deve ser copiado para a área de transferência do computador (isto é, pronto a ser colado quando se clicar "colar").

Após isso, é ir à área "Esquema" do blogger e editar (ou criar) uma "lista de links" ou uma "lista de blogs"; aí, hão-de reparar que aparece mais um botão: "Importar HTML.

 Clicando nesse botão, há-de aparecer uma caixa com uma linha para se colar o tal HTML com a lista dos links (a linha parece muito pequena para o que se vai colar lá, mas não há problema). Depois é fazer OK e pronto. Se se estiver na caixa "lista de links", a lista vai ficar preenchida quase instantaneamente; na caixa "lista de blogs" demora um bocado porque os blogs vão ser carregados um-a-um (e ocasionalmente vai ser necessário a intervenção do utilizador para responder a enventuais mensagens de erro); na "lista de blogs" muitas vezes também não funciona à primeira: se aparecer a caixa para "Adicionar por URL" mas não fazer mais nada, é fazer "Cancelar" e voltar a clicar no "IMportar HTML".

Nota1: se alguém usar este script, será por sua conta e risco - não me responsabilizo por nenhum eventual dano

Nota2: eu desconfio que deve haver uma maneira muito mais fácil de fazer isto



No comments: