Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Postando fotos no picasa pela linha de comando

Creio que depois de ler o meu último post, todo mundo já está com suas fotos arrumadinhas. Sendo assim é hora de compartilhá-las com seus amigos. Eu uso o Picasa para isso pois gosto dele e sempre me atendeu bem. Muitos amigos dizem que o Flickr é melhor mas prefiro meu bom e satisfatório picasa. Muitos fariam é baixar o picasa desktop (nem sei se tem para o Ubuntu) e a partir dele iriam organizar suas fotos e montar seus albuns e por fim, publicá-los na grande rede.

Como, se lembrarem bem do último post,  eu estou afim de me aprimorar no uso do console, principalmente, em Bash, resolvi pedir novamente “ajuda” ao google e busquei por envio por linha de comando. Para minha grata surpresa, o pessoal da própria google disponibiliza um google command line para diversos de seus produtos incluido o picasa.  Por enquanto só funciona para os que tem gdata (disclamer traduzido do próprio site do googlecl)

Para instalá-lo, no Ubuntu, é bem simples:

sudo apt-get install googlecl

Pelo que eu entendi ele na verdade é uma biblioteca python por isso nos outros sistemas operacionais deve bastar instalar via pip

pip install googlecl

Não sei dizer se com isso, instalando via pip, você perder o binário – comando – para usar.
Uma vez instalado é só alegria e usar:

andre@vermelhinho:~$ google help
Welcome to the Google CL tool!
Commands are broken into several parts:
service, task, options, and arguments.
For example, in the command
"> picasa post --title "My Cat Photos" photos/cats/*"
the service is "picasa", the task is "post", the single
option is a title of "My Cat Photos", and the argument is the
path to the photos.

The available services are
'picasa', 'blogger', 'youtube', 'docs', 'contacts', 'calendar', 'finance'
Enter "> help " for more information on a service.
Or, just "quit" to quit.
andre@vermelhinho:~$

E para enviar suas foto fica mais ou menos assim:

google picasa create "Cat Photos" ~/photos/cats/*.jpg
Published by Andre, on maio 6th, 2011 at 4:00 pm. Filled under: atualidades Tags: , , , , , , 1 Comment

Problema para escrever um arquivo com UTF-8 em Groovy

No meu trabalho precisei realizar uma tarefa que consistia em pegar um arquivo xml e gerar um outro arquivo, também em xml,  a partir dos dados do primeiro.  A princípio pediram que fizesse “na mão” mas como sou pago para pensar e não para executar as coisas feito uma máquina, parti para criar algo que fizesse isso de forma automática.

Para fazer o trabalho criei um script em Groovy por ter uma certa intimidade com a linguagem e pela facilidade que ela oferece para manipular dados em formato xml (veja o trecho abaixo).

def mudaArquivoCidade(arquivo)
{
    def select = new XmlParser().parse("${folderLeitura}\\${arquivo}");
    File  file_xml_out  = new File ("${folderCidadesDestino}\\${arquivo}");
   
      file_xml_out  .append('<?xml version="1.0" encoding="UTF-8"?>');
      file_xml_out  .append("\n");
      file_xml_out  .append(''' <select id="cidade" name="cidade" onblur="campoObrig(this)">''');
      file_xml_out  .append("\n");
      select.option.each(){
       valor    = it.text();
       texto  = valor;
       id = it.@value;
       if(valor == "Selecione a Cidade")
       {
      valor = "";
       }
       else
       {
       geraArquivoUpdateParaCidade(file_sql_out,valor,id)
       }
       file_xml_out  .append("""<option value="${valor}">${texto}</option> """);
       file_xml_out  .append("\n");
       
...

O script após pronto funcionou perfeitamente, porém com um problema residente no fato do arquivo de saída ter sido salvo com codificação padrão do sistema operacional (o lixo do Microsoft grava tudo em ANSI ).  No primeiro teste que fiz com os dados acusou o erro com caracteres acentuados.

O desafio foi achar uma forma, simples, de alterar o encoding do arquivo de saída para o valor que eu quero. Após muitas pesquisas no google, leituras de doc, etc… A solução extremamente elegante que achei foi (veja trecho abaixo).

def mudaArquivoCidade(arquivo)
{
    def select = new XmlParser().parse("${folderLeitura}\\${arquivo}");
    File  file_xml_out  = new File ("${folderCidadesDestino}\\${arquivo}");
    file_xml_out.<strong>withWriter('UTF-8')</strong> { saida ->
      saida.append('<?xml version="1.0" encoding="UTF-8"?>');
      saida.append("\n");
      saida.append(''' <select id="cidade" name="cidade" onblur="campoObrig(this)">''');
      saida.append("\n");
      select.option.each(){
       valor    = it.text();
       texto  = valor;
       id = it.@value;
       if(valor == "Selecione a Cidade")
       {
      valor = "";
       }
       else
       {
       geraArquivoUpdateParaCidade(file_sql_out,valor,id)
       }
       saida.append("""<option value="${valor}">${texto}</option> """);
       saida.append("\n");
        }
...

Aqui você informe que ao invés do objeto file usar um writer com valor de caracter padrão, ele deve usar um que use o UTF-8. Para quem está familiarizado com padrões de projeto é um Decorator.

Published by Andre, on dezembro 23rd, 2009 at 3:46 pm. Filled under: Groovy,Informática,Scala,Sem categoria Tags: , , , No Comments