sábado, 3 de setembro de 2016

Usando um CLI para blogger (instalando Python no Mac OS X)

Esta postagem está sendo escrita em Markdown usando Vim e Atom e será interpretada para HTML com pandoc, para depois ser postada com crankyblogger, um CLI para blogger.com escrito em Python.
Ele é muito simples e capaz basicamente apenas de criar novas postagens no blogger. Desde que se tenha uma conta nele, claro. Para usá-lo, eu tive que instalar algumas
dependências. Estes são os pacotes que crankyblogger.py chama ao inicializar:
import json, webbrowser, getopt, os.path, sys
import httplib2
from oauth2client import client
from apiclient.discovery import build
from oauth2client.file import Storage
Meu sistema é Mac OS X 10.11.6 El Capitan. A versão de Python que vem embarcada é 2.7.10, instalada no diretório /usr/bin/python. Por definição, o sistema protege as pastas /System /bin /sbin /usr contra edição, mesmo usando usuário root. A Apple chama isso de SIP - System Integrity Protection. Na verdade, é uma característica interessante do ponto de vista de organização. Usando o Homebrew é possível fazer instalações seguras e funcionais que ficarão localizadas na pasta /usr/local/bin, eliminando problemas de compatibilidade. Como eu não poderia instalar as dependências necessárias no Python nativo do OS X, tive que instalar a última versão estável do Python 2.7. Antes de fazer isso, é necessário instalar as ferramentas de desenvolvedor do Xcode (via Apple Store) e o Command Line Tools:
$ xcode-select --install
Depois, é só instalar o Homebrew, se já não estiver no sistema:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
E, antes de instalar o Python, colocar a pasta de destino no $PATH:
export PATH=/usr/local/bin:$PATH
Esta linha pode ser acrescentada no ~/.bash_profile para maior comodidade.
Por fim, para instalar a nova versão do Python:
$ brew install python
Checando a versão e o local:
$ which python
/usr/local/bin/

$ python --version
Python 2.7.12
Usar o Homebrew para instalar outra versão de Python permite que a versão nativa conviva harmoniosamente com a nova. É possível até instalar o Python 3.X e usá-lo separadamente, sem interferir com as outras. As instruções de Marina Mele são esclarecedoras. A melhor forma de instalar dependências específicas no Python é usando um ambiente virtual, para assegurar separação e organização das diversas instâncias.
Para instalar virtualenv e virtualenvwrapper:
$ pip install virtualenv
$ pip install virtualenvwrapper
Em seguida, criar uma pasta que vai conter os ambientes virtuais.
$ mkdir ~/.virtualenvs
Abrir ou criar o arquivo ~/.bashrc e colocar:
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Por fim, ativar estas mudanças:
$ source ~/.bashrc
Dessa forma, será possível criar um novo ambiente virtual:
$ mkvirtualenv myenviroment
Na pasta ~/.vitualenvs/myenvironment que será criada pelo script. O ambiente será automaticamente ativo. Trocar de ambiente é simples como:
$ workon myenvironment
E, para desativar os ambientes:
$ deactivate
Deletar e listar os ambientes:
$ rmvirtualenv <nome_do_ambiente>
$ lsvirtualenv
Finalmente, instalar pacotes à vontade será fácil apenas usando o comando pip install. Instalei as dependências do crankyblogger.py dessa forma e pude usá-lo.
$ pip install httplib2
$ pip install oauth2client
$ pip install --upgrade google-api-python-client
Seu uso também é muito simples, consistindo apenas numa ferramenta para publicar novas postagens em formato rascunho (padrão) ou publicação final. Igualmente, pode-se configurar o título e marcadores para a postagem. A publicação é realmente simples com o uso desta ferramenta bem básica. Sua documentação traz uma explicação sumária, porém suficiente para usá-lo. Para minha comodidade, mudei o nome do executável para bloggercli e copiei-o para a pasta /usr/local/bin. Dessa forma, posso usar o comando em qualquer local. Usei-o com um ambiente virtual:
$ workon myenvironment
$ bloggercli -f "newpost.html" -t "Usando um CLI para blogger (instalando Python no Mac OS X)" -l "Mac OS X, Blogger, CLI, Python"
Para criar o arquivo em html, escrevi newpost.txt usando Markdown e usei o pandoc para convertê-lo:
$ pandoc -f markdown_strict -t html -o newpost.html newpost.txt
Este é meu primeiro teste.

Clique aqui!

2015 A.C. Camargo academic journals acesso aberto adverse drug reactions alergia alquilantes alto custo ambiente analgésicos anomalias vasculares anti-eméticos anti-helmínticos anti-histamínico antianêmicos antiangiogênico anticâncer anticoagulantes antifúngicos antiprotozoários antivirais artemisinina arXiv asma asthma atopia atualização aula aulas auto-arquivamento avastin avermectina bevacizumab biologicals bioRxiv Blogger brain tumor cancer cancerologia pediátrica Carlos Chagas carne vermelha cauterização Ceará child chronic fatigue syndrome ciência ciência brasileira ciências biológicas e da saúde cientistas influentes cirurgia CLI conselho internacional crime virtual CT scans Curtis Harris darbopoietina dermatite diabetes dieta disautonomia dislipidemias doença renal doenças cardíacas doenças parasitárias dor DPOC eczema editoras predatórias efeitos adversos eficácia ensino e pesquisa eritropoietina erlotinib ESA escleroterapia estatinas esteróides estilo de vida exercícios F1000Research farmacogenética farmacologia fatores de crescimento fibromialgia Figshare Fisiologia e Medicina fitness flu FMJ fosfoetanolamina fraude acadêmica fraude eletrônica genetics glioblastoma gliomas Google Books gordos Harald zur Hausen hemangiomas hemophagocytic lymphohistiocytosis horário imagem immunology imunossupressores imunoterapia infecção urinária inibidores de ECA inibidores tirosina-quinase iniciação científica insulina ivermectina Jeffrey Beall journal hijack Lectures lepra leucemia leukemia linfangiomas Mac OS X macrophage activation syndrome magrinhas mal-formações medicina personalizada meta-análise Milton Santos modelos monoclonais monoclonal antibody mortalidade morte mudança Mulliken neuro-oncologia neuroblastoma neurology ngram viewer Nobel Nobel em Medicina ou Fisiologia novas drogas novos tratamentos obesidade ômega 3 osteoporose Osvaldo Cruz pediatria pediatric cancer pediatric tumors pediatrics PeerJ personalized medicine PET/CT pharmacogenetics pharmacological treatment pharmacology plágio posters postprints predatory publishers Preprints pressão arterial prevenção projeto de pesquisa propranolol próstata publicação publicação científica publicações publication pubmed Python quimioterapia radiation radioterapia rapamycin recidiva regressão espontânea resposta resultados retrospectiva revisão por pares risco Satoshi Ömura Scholarly Open Access science ScienceNOW seguimento selênio self-archiving sequestro de periódico científico serotonina SIDA sildenafil slides sobrevida sulfa suplementos survival tacerva targeted therapy temozolamida temozolomide terapia alternativa tireóide tratamento tuberculose tumores cerebrais tumores pediátricos vaccine vacina via dourada via verde vitamina E vitaminas William C. Campbell Youyou Tu

Postagens populares