Como posso exportar todas as páginas do OneNote para arquivos de remarcação individuais?


14

Estou migrando para o Linux e o último obstáculo é sair do OneNote. Gostaria de exportar todos os meus cadernos para que cada página vá para um arquivo de remarcação individual.

Eu tentei muitas coisas - esse tópico teve várias sugestões, mas todas estão desatualizadas.

Se eu conseguisse que o OneNote exportasse todas as páginas como arquivos .docx individuais, seria fácil usar o pandoc para convertê-los em arquivos de remarcação individuais. Porém, o OneNote exportará apenas várias páginas como um único arquivo. Portanto, uma rota seria encontrar uma maneira de automatizar a exportação de cada página individualmente.

Outra opção é exportar blocos de anotações inteiros de cada vez como arquivos .docx, convertê-los em markdown com pandoc e depois dividir os arquivos - mas, eu não sou um assistente de regex suficiente para fazer com que o csplit corte os arquivos corretamente apenas com os recursos básicos. expressões regulares e um assistente awk insuficiente para que ele produza arquivos com a expressão regular correta e completa.

Alguém pode me ajudar com isso?

Respostas:


12

Acabei encontrando um pipeline de exportação, mas foi uma dor. Aqui estão minhas anotações para fazer isso:

fluxo de trabalho:

  1. Desative suas redes para impedir que o OneNote execute uma sincronização longa do OneDrive após cada exportação.

  2. Na lista Cadernos, expanda o caderno para ver todas as guias.

  3. Clique com o botão direito do mouse em uma guia e clique em "Exportar ...".

  4. Clique no menu suspenso do tipo de arquivo e pressione Mpara selecionar o .docxformato. Pressione Enterpara selecioná-lo.

  5. Pressione Enternovamente para salvar o arquivo exportado.

  6. Repita as etapas 2 a 5 para cada guia do notebook.

  7. Configure o pandoc e abra uma janela do PowerShell ou cmd.

  8. cd no diretório em que os .docxarquivos exportados estão localizados.

  9. Para cada .docxarquivo exportado , use o seguinte comando pandoc para convertê-lo em markdown (substitua journalpelo nome do seu arquivo):

    pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
    

    Aqui está uma explicação do comando: --extract-media=''diz ao pandoc para extrair imagens do .docxarquivo e colocá-las na subpasta padrão (denominada 'mídia' por padrão). --wrap=preservediz ao pandoc para não quebrar o arquivo de saída com quebras de linha (que é o padrão). O próximo campo é o nome do arquivo de entrada e -osignifica 'output', assim journal.mdcomo o nome do arquivo de saída.

    Se você não deseja dividir este arquivo (por exemplo, se sua guia contiver apenas uma página), pule para a etapa 15.

    (Quando você faz várias delas, pode pressionar a tecla (seta para cima) para recuperar o comando anterior no shell e editar o nome do arquivo.)

  10. Crie uma nova pasta para armazenar as páginas na guia. Neste exemplo, no momento, todas as páginas da guia Diário no OneNote são agrupadas journal.md. Crie uma pasta chamada journalque armazenará as páginas separadas finais como arquivos .md individuais.

  11. Se houver alguma imagem no .docxarquivo, elas serão exportadas para uma nova pasta chamada media. Arraste a pasta de mídia, se existir, para a pasta que você acabou de criar agora. (É por isso que precisamos executar cada operação pandoc separadamente, porque cada exportação criará uma pasta de mídia separada e queremos mantê-las separadas para que os links nos arquivos de marcação funcionem corretamente. Poderíamos escrever um script inteligente para fazer tudo isso automaticamente, mas levará menos tempo para fazê-lo manualmente, a menos que você tenha um grande número de notebooks.) (Observação: você pode salvar uma etapa colocando o nome da pasta desejado entre aspas simples do --extract-media=''argumento - por.docx arquivos com imagens, uma pasta será criada automaticamente para você.)

  12. Abra um terminal bash e cd no diretório que contém o .mdarquivo. A pasta que você criou na etapa 10 deve ser uma subpasta desta (a menos que você corrija o caminho no comando a seguir).

  13. Se você ainda não o fez, clique no ícone da janela do Windows Bash, clique em Propriedades, verifique o Modo Edição Rápida e clique em OK. Agora clique no ícone da janela do Windows Bash novamente, desta vez clique em Padrões, marque o Modo de Edição Rápida e clique em OK (para que as novas janelas do Bash criadas no futuro lembrem dessa configuração). Agora você pode selecionar o texto no terminal e pressionar Ctrl+ Cpara copiar, ou clique com o botão direito do mouse na janela do terminal para colar o texto na área de transferência. Agora podemos preparar nosso comando em um local separado e colar rapidamente cada versão no Bash.

  14. Personalize o seguinte comando e execute-o para cada .mdarquivo que você deseja dividir em páginas individuais:

    csplit ./journal.md --keep-files --prefix='journal/journalentry ' --suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'

    (Digite como uma linha.)

    Como você pode ver, journal.mdé o nome do nosso arquivo de remarcação (no diretório atual, indicado por ./), a segunda ocorrência de journal(depois --prefix=') é o nome da nossa subpasta que conterá os arquivos divididos ejournalentry será o nome de cada arquivo (seguido por um número de índice).

    Se você deseja entender o comando, aqui está uma explicação: --keep-filesainda imprime arquivos quando erros ou o final do arquivo é encontrado, garantindo que a última página seja impressa corretamente (já que não termina no padrão de nossa expressão regular). --prefixdefine o esquema de nomeação dos arquivos de saída. --suffix-formatpermite definir nossa extensão de arquivo ( .mdnesse caso), mas devemos incluir %ia instrução sprintf que gera o número de índice do arquivo.  --elide-empty-filespula a saída de arquivos vazios, com os quais não nos importamos. Finalmente, a expressão regular, que começa '/e termina com/-2', define quando dividir o arquivo: diz "Quando você encontra (/) no início da linha (^) o seguinte (() segunda ou (\ |) terça ou quarta ou quinta ou quinta ou sexta ou sábado ou domingo () ) seguido por vírgula, retroceda duas linhas (-2) "e divida o arquivo lá, exibindo o que temos até agora. O bit final'{*}', repete o comando anterior indefinidamente, até o final do arquivo ser atingido.

  15. Arraste os arquivos .docxe .mdpara uma pasta, digamos que uma pasta criada agora seja chamada intermediates. Ou você pode simplesmente excluí-los. É bom salvá-los por um tempo, até você se sentir confortável com seu novo formato de arquivo, caso deseje voltar e fazer referência a algo que aconteceu durante o processo de conversão. Movê-los para a pasta intermediários agora terá poucas chances de esquecer onde estamos e de repetir etapas.

  16. Repita as etapas 9 a 14 para cada .docxarquivo exportado do OneNote.

  17. Agora você tem uma pasta para cada guia, com um monte de .mdarquivos separados , uma para cada página! Além disso, uma mediapasta em cada subpasta que tinha imagens na guia OneNote.

  18. Eu recomendo exportar cada um dos blocos de anotações do OneNote como um .mhtarquivo (página da web de arquivo único) ou, se preferir, a .pdf. Dessa forma, se houver perda de formatação ou outras informações em alguns dos seus arquivos de remarcação, devido à conversão múltipla, você sempre poderá voltar e ver com facilidade como deveria aparecer no .mhtarquivo. Além disso, eu recomendo exportar cada um dos seus blocos de anotações do OneNote como um .onepkgarquivo (pacote OneNote), para que você tenha uma boa cópia final de exportação, se desejar reabrir o Notebook no OneNote em seu formato de arquivo nativo / original (isso pode ser útil se, por exemplo, .mhttambém estiver faltando alguma formatação original no arquivo que você deseja recuperar).

  19. Ao terminar cada bloco de anotações, clique com o botão direito do mouse no OneNote e clique em "Fechar este bloco de anotações" para não editar acidentalmente o bloco de anotações e ter que reexportar suas novas alterações. Para as pastas de remarcação, também criei uma pasta para cada bloco de anotações e coloquei todas as pastas da guia.

  20. Ao concluir todo o projeto de exportação, você pode ir para o OneDrive e excluir todos os originais dos blocos de anotações do OneNote que foram sincronizados (verifique se você está fazendo backup de seus próprios arquivos agora, é claro! Existe o OneDrive para Linux ou você poderia tentar algo como Syncthing).

  21. Por fim, podemos renomear todos os nossos arquivos .md para o título da página do OneNote, que é a primeira linha de cada arquivo, usando dois scripts. Faça os seguintes arquivos:

    Arquivo 1: ~/scripts/rename-files-to-first-line.sh

    for i in *md ; do mv -n "$i" "$(cat "$i"|head -n1|tr -d '\000-\037[]{}()/\?*')".md; done
    

    Arquivo 2: ~/scripts/recurse.sh

    CDIR=$(pwd)
    for i in $(ls -R | grep :); do
        DIR=${i%:}                    # Strip ':'
        cd $DIR
        $1                            # Your command
        cd $CDIR
    done
    

    Em seguida, navegue até a pasta do Notes e execute o recurse.shcomando usando o rename-files-to-first-line.shcomando como argumento:

    $ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
    

    Você verá o script percorrer todos os seus arquivos recursivamente, lançando alguns erros em arquivos com primeiras linhas estranhas (que não serão convertidas em um nome de arquivo) e em outros casos extremos. No entanto, o mvcomando in rename-files-to-first-lineé executado com argumento -n, o que impedirá a substituição de arquivos. Pode haver algumas notas que não são renomeadas, porque a primeira linha nelas está em branco ou é outra coisa estranha, mas você pode corrigir esses poucos arquivos manualmente.

  22. Aproveite o seu escape limpo do OneNote.

Ressalvas:

  • Isso não captura subpáginas - você terá que recriar aquelas com subpastas, se quiser.

  • Eu não sei o quão bem ele funciona com as tabelas - a remarcação é um pouco desagradável para as tabelas de qualquer maneira.

  • Provavelmente existem outros tipos de formatação, como fontes, que são perdidas ou estragadas na exportação. Mas para rich text e imagens, ele funciona muito bem!


1
Não funcionará se você tiver anexos no OneNote
Nikhil

4
Uau, que bagunça. Eu nunca deveria ter começado a tomar notas com este software. Obrigado por escrever tudo isso! Observe que, atualmente, ainda não há recurso de exportação para o OneNote no macOS.
Slhck

Alguém já tentou importar os arquivos MD resultantes para o Notion? funcionou?
JayPex 3/01

Além disso, isso não é realista se você tiver centenas de páginas em uma seção de caderno, cada uma com um título exclusivo, só funcionará se você tiver um estilo de nomeação específico que o OP usou. Eu aprecio o esforço embora.
JayPex 5/01

6

A outra resposta não serviu para mim, porque minhas anotações não são entradas de diário, mas encontrei uma solução usando a API Graph da Microsoft . Isso significa que você nem precisa executar o OneNote, apenas exige que suas anotações sejam sincronizadas com sua conta da Microsoft e você poderá obtê-las como HTML perfeitamente formatado (que você pode visualizar no navegador ou converter para o formato que preferir) usando Pandoc).

A mágica acontece neste script Python . Ele executa um servidor Web local simples que você pode usar para fazer login na sua conta da Microsoft e, depois disso, baixa todas as suas anotações como HTML, além de imagens e anexos em seus formatos originais, e as armazena na hierarquia de arquivos, preservando a estrutura original. dos seus notebooks (incluindo ordem das páginas e subpáginas).

Antes de executar o script, é necessário registrar um "aplicativo" no Microsoft Azure para que ele possa acessar a API do Graph:

  1. Vá para https://aad.portal.azure.com/ e faça login com sua conta da Microsoft.
  2. Selecione "Azure Active Directory" e, em seguida, "Registros de aplicativos" em "Gerenciar".
  3. Selecione "Novo registro". Escolha qualquer nome, defina "Tipos de conta suportados" como "Contas em qualquer diretório organizacional e contas pessoais da Microsoft" e, em "Redirecionar URI", selecione Web e insira http://localhost:5000/getToken. Registro.
  4. Copie o "ID do aplicativo (cliente)" e cole-o como client_idno início do script Python.
  5. Selecione "Certificados e segredos" em "Gerenciar". Pressione "Novo segredo do cliente", escolha um nome e confirme.
  6. Copie o segredo do cliente e cole-o como secretno script Python.
  7. Selecione "Permissões da API" em "Gerenciar". Pressione "Adicionar uma permissão", role para baixo e selecione OneNote, escolha "Permissões delegadas" e marque "Notas.Leia" e "Notas.Leia.All". Pressione "Adicionar permissões".

Então você precisa instalar as dependências do Python. Certifique-se de ter o Python 3.7 (ou mais recente) instalado e instalar as dependências usando o comando pip install flask msal requests_oauthlib.

Agora você pode executar o script. Em um terminal, navegue até o diretório em que o script está localizado e execute-o usando python onenote_export.py. Isso iniciará um servidor web local na porta 5000.

No navegador, navegue até http: // localhost: 5000 e faça login na sua conta da Microsoft. Na primeira vez que você fizer isso, você também precisará aceitar que o aplicativo possa ler suas anotações do OneNote. (Isso não concede a terceiros acesso aos seus dados, desde que você não compartilhe a ID do cliente e o segredo que criou no portal do Azure). Depois disso, volte ao terminal para acompanhar o progresso.

Nota: A Microsoft limita quantas solicitações você pode fazer dentro de um determinado período. Portanto, se você tiver muitas anotações, poderá ver mensagens como esta no terminal: Too many requests, waiting 20s and trying again.Isso não é um problema, mas significa que todo o processo pode demorar um pouco. Além disso, a sessão de login pode expirar após um tempo, o que resulta em um TokenExpiredError. Se isso acontecer, basta recarregar http: // localhost: 5000 e o script continuará (ignorando os arquivos que já foram baixados).


Boa solução mais simples, mas isso obtém os arquivos em HTML, não MD
JayPex 03/01

1
Como mencionei brevemente na resposta, você pode usar o pandoc para converter HTML em descontos (por exemplo pandoc --from html --to markdown -o output.md input.html). No entanto, observe que nem todas as páginas do OneNote podem ser representadas perfeitamente na remarcação, para que você possa perder alguns detalhes de formatação. Além disso, o pandoc suporta vários tipos de descontos, portanto, você pode ler a documentação para encontrar um que se adapte ao seu uso.
danmou 4/01

Ok, certamente vale a pena tentar antes de seguir o longo caminho na primeira resposta. Obrigado!
JayPex

4

Para exportar suas páginas do OneNote para descontos individuais ( .md), você deve instalar o Joplin e o Evernote .

Conforme sugerido neste link , primeiro importe as notas para o Evernote. Em seguida, exporte todas as notas para um .enexarquivo do Evernote e importe-as para o Joplin.

Joplin tem a opção de exportar as notas como .mdarquivos.

Nota: Sugiro o uso de sinalizadores no Evernote antecipadamente, se você deseja agrupar suas anotações, pois a maneira do Evernote de manter a hierarquia entre as notas é diferente do OneNote.


1
Você é demais! Sua resposta me inspirou a importar seções do caderno para o Evernote e depois importá-las do Evernote para o Notion! Obrigado
JayPex

0

Eu encontrei um trabalho não programático para isso.

TLDR;

Exporte notas do OneNote para o Evernote e depois para o Notion (Opcional) e exporte como arquivos individuais com o formato de sua escolha.


Eu tenho realmente me esforçado para exportar minhas anotações do Notion, uma aparência on-line retornará algumas maneiras realmente impuras de exportar e dividir páginas do OneNote e transformá-las em arquivos md ou html. Que bagunça!

Basicamente, você pode importar facilmente suas seções do OneNote para o Evernote; depois de baixar o Evernote para desktop, é muito fácil fazer isso; então, a partir daí, também é igualmente fácil importá-las para o Notion.

Esteja ciente de que você pode importar seções individuais se quiser manter a mesma organização; caso contrário, você pode importar em massa todas as seções, as páginas serão marcadas com os nomes das seções e também serão incluídas no Noion.

Observe que você precisará sincronizar seus blocos de anotações do OneNote fazendo login na sua conta do Microsoft / Outlook e verificando se eles estão sincronizados usando o OneNote 2016.

Espero que isto ajude.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.