Como criar um script para sincronizar notas com arquivos usando o Geeknote

1

O problema

Eu quero criar um diretório com minhas notas do Evernote em arquivos com o formato Markdown. Descobri que isso pode ser feito usando o Geeknote , mas para cada caderno todas as vezes.

Como criar um script bash que sincronize um diretório, onde cada subdiretório é um bloco de anotações diferente e, dentro deles, os arquivos de marcação?

Enquanto você faz sugestões, vou manter esta questão atualizada.

Alguns comandos em segundo plano a partir de

O comando para sincronização bidirecional usando o Geeknote é o seguinte:

gnsync --path ~/Evernote/Ler --logpath ~/.log/geeknote.log --format markdown --notebook ".Ler" --two-way TWO_WAY

O comando para listar meus cadernos é:

geeknote notebook-list

Solução parcial

@RichardAnderson sugeriu o seguinte código para listar e fazer um loop nos portáteis do Evernote, testei no meu sistema e ele está funcionando. O problema é que o comando geeknote notebook-list aguarda a ação do usuário durante a listagem, eu também não consegui encontrar uma maneira de contornar isso.

Basta criar um arquivo com o seguinte conteúdo:

    #!/bin/bash
    geeknote notebook-list > /tmp/list.txt
    Note_List=$(cat /tmp/list.txt | grep -v Total | cut -d : -f 2)
    for i in $Note_List; do
        gnsync --path ~/evernote --logpath ~/.log/geeknote.log --format markdownn --notebook "$i" --two-way TWO_WAY
    done

Não se esqueça de mudar para o seu caminho.

ATENÇÃO! Se você tiver imagens ou notas muito formatadas em sua conta do evernote, observe que esse método pode potencialmente remover a formatação e os dados das anotações. Então use a seu próprio risco!

Como resolver o último bit?

Se você conhece uma maneira de contornar a necessidade de ação do usuário durante o comando geeknote note-list, por favor, coloque uma linha abaixo.

    
por lf_araujo 04.01.2015 / 11:37

3 respostas

0

Eu fui para a solução bash:

function sync_notebook {
  gnsync --path ~/Evernote/ --logpath ~/.log/geeknote.log --format markdown --notebook "" --two-way TWO_WAY
}


function sync_all {
  for D in *; do sync_notebook $D; done
}

Eu adicionei estes ao meu .bashrc .

O primeiro é apenas um wrapper para gnsync . É preciso um único argumento, o nome de um caderno. O segundo é um loop bash sobre todas as pastas em um diretório. Os nomes das pastas correspondem aos nomes dos cadernos no evernote.

Ainda não entendi como não matar os pdfs em sincronia.

    
por Joshua Cook 09.08.2015 / 19:46
1

Eu estava procurando a mesma coisa. Foi isso que eu criei.

#!/bin/bash
geeknote notebook-list > /tmp/list.txt
Note_List=$(cat /tmp/list.txt | grep -v Total | cut -d : -f 2)
for i in $Note_List; do
    gnsync --path ~/evernote --logpath ~/.log/geeknote.log --format markdown --notebook "$i" --two-way TWO_WAY
done

Você provavelmente terá que pressionar Enter algumas vezes após o início. Não sei como tratar o comando geeknote notebook-list para eliminar a necessidade de ter que pressionar enter.

    
por Richard Anderson 12.01.2015 / 04:00
1

Não sei como contornar a necessidade de interagir, mas sei como automatizá-lo: expect . Você pode instalá-lo com apt-get . Aqui está o meu script de espera, que fez o truque para mim:

#!/usr/bin/expect -f

spawn geeknote "notebook-list"

expect "More"
sleep 2
send "j"
interact

Então você pode usar isso no lugar de geeknote notebook-list :

./geeknote-expect-script > /tmp/list.txt
    
por sxnwlfkk 10.07.2016 / 09:26