Para colocar posts num blog — até porque a actividade de “blogar” não é propriamente a minha favorita nem o meu conceito de comunicação preferido — coloquei alguns pressupostos:
- editar os artigos em texto;
- ter facilidade na produção de alguns conteúdos específicos: trechos de código, links, formatações básicas;
- automatizar o mais possível as operações, o que inclui não ter que usar um browser para submeter um artigo.
Para fazer face aos pontos 1 e 2, a solução recaiu no formato markdown e no excelente programa pandoc, de John MacFarlane.
markdown é um formato de texto simples que usa anotações básicas para descrever formatações, à semelhança de outros formatos, como o reStructuredText que é usado para produzir toda a documentação do projecto Python, e na senda de uma série clássica de outros formatos de texto, mais ou menos complexos, desde o ROFF ao HTML.
pandoc é um excelente utilitário que aqui é usado para converter markdown no formato final de apresentação HTML.
Finalmente o ponto 3 foi resolvido usando a aplicação googlecl, que fornece um interface linha de comando para o blogger (e outros serviços do google). Perfeito.
Uma makefile orquestra tudo, permitindo integrar facilmente com outros utilitários de texto (mais uma vantagem de se usar texto). Neste caso o sed
é usado para extrair a primeira linha do ficheiro para título, a segunda para a lista de etiquetas a associar ao artigo e tratar linhas começadas por “#” como comentários.
Makefile usada:
FILE=$$(ls -tr *.txt|tail -1)
T=/tmp/xgcl.html
PANDOC = pandoc -f markdown -t html --no-wrap
B_ID = --blog='tecnosutra'
all:
post-not:
tags="$$(sed -n 's/^tags: *//p' $(FILE))" && \
title="$$(sed -n '1p' $(FILE))" && \
sed '/^\(#\|tags:\)/d; 1d;' $(FILE) | \
iconv -f latin1 -t utf8 | $(PANDOC) -S -s > $(T) && \
echo google blogger post $(B_ID) --tags="$$tags" --title="$$title" $(T)
post:
tags="$$(sed -n 's/^tags: *//p' $(FILE))" && \
title="$$(sed -n '1p' $(FILE))" && \
sed '/^\(#\|tags:\)/d; 1d;' $(FILE) | \
iconv -f latin1 -t utf8 | $(PANDOC) -S -s > $(T) && \
google blogger post $(B_ID) --tags="$$tags" --title="$$title" $(T)
check:
aspell -d portugues -c $(FILE)
clean:
rm -f *.bak
Ligando as peças:
- edito um ficheiro de texto,
make post-not
para verificar se está tudo ok,make post
e já está.
Simples.
Sem comentários:
Enviar um comentário