W końcu znalazłem rurociąg eksportowy, ale to był problem. Oto moje notatki z tego:
Wyłącz swoje sieci, aby uniemożliwić OneNote wykonywanie długiej synchronizacji OneDrive po każdym eksporcie.
Na liście Notatniki rozwiń notatnik, aby wyświetlić wszystkie karty.
Kliknij kartę prawym przyciskiem myszy i kliknij polecenie „Eksportuj ...”.
Kliknij menu typu pliku i naciśnij, Maby wybrać .docx
format. Naciśnij, Enteraby go wybrać.
Naciśnij Enterponownie, aby zapisać wyeksportowany plik.
Powtórz kroki 2-5 dla każdej karty w notatniku.
Skonfiguruj pandoc i otwórz okno PowerShell lub cmd.
cd do katalogu, w którym znajdują się wyeksportowane .docx
pliki.
Dla każdego eksportowanego .docx
pliku użyj następującego polecenia pandoc, aby przekonwertować go na markdown (zamień journal
na nazwę swojego pliku):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Oto wyjaśnienie polecenia: --extract-media=''
mówi pandoc, aby wyodrębnił obrazy z .docx
pliku i umieścił je w domyślnym podfolderze (domyślnie zwanym „nośnikiem”). --wrap=preserve
informuje pandoc, aby nie zawijał pliku wyjściowego łamaniem wierszy (co jest ustawieniem domyślnym). Następne pole to wejściowa nazwa pliku i -o
oznacza „wynik”, podobnie journal.md
jak wyjściowa nazwa pliku.
Jeśli nie chcesz dzielić tego pliku (na przykład jeśli karta zawiera tylko jedną stronę), przejdź do kroku 15.
(Kiedy robisz kilka z nich, możesz nacisnąć klawisz ↑(strzałka w górę), aby przywołać poprzednie polecenie w powłoce, a następnie edytować nazwę pliku).
Utwórz nowy folder do przechowywania stron na karcie. W tym przykładzie teraz wszystkie strony z naszej karty Dziennik w OneNote są połączone journal.md
. Utwórz folder o nazwie, journal
który będzie przechowywać końcowe oddzielone strony jako osobne pliki .md.
Jeśli w .docx
pliku były jakieś obrazy , zostaną one wyeksportowane do nowego folderu o nazwie media
. Przeciągnij folder multimediów, jeśli istnieje, do właśnie utworzonego folderu. (Dlatego właśnie musimy wykonać każdą operację pandoc osobno, ponieważ każdy eksport utworzy osobny folder multimediów i chcemy zachować te osobne, aby linki w plikach przeceny działały poprawnie. Moglibyśmy napisać sprytny skrypt, aby to wszystko zrobić automatycznie, ale zajmie to mniej czasu, aby zrobić to ręcznie, chyba że masz ogromną liczbę notatników.) (Uwaga: Możesz zapisać krok, umieszczając żądaną nazwę folderu w pojedynczych cudzysłowach --extract-media=''
argumentu - w przypadku .docx
plików z obrazami, folder zostanie utworzony automatycznie).
Otwórz terminal bash i cd do katalogu zawierającego .md
plik. Folder utworzony w kroku 10 musi być podfolderem tego folderu (chyba że naprawisz ścieżkę w poniższym poleceniu).
Jeśli jeszcze tego nie zrobiłeś, kliknij ikonę okna Windows Bash, kliknij Właściwości, zaznacz Tryb QuickEdit, a następnie kliknij OK. Teraz kliknij ponownie ikonę okna Windows Bash, tym razem kliknij Domyślne, sprawdź Tryb QuickEdit, a następnie kliknij OK (aby nowe okna Bash, które utworzysz w przyszłości, zapamiętały to ustawienie). Teraz możesz zaznaczyć tekst w terminalu i nacisnąć Ctrl+, Caby skopiować, lub kliknąć prawym przyciskiem myszy okno terminala, aby wkleić tekst do schowka. Teraz możemy przygotować nasze polecenie w osobnym miejscu i szybko wkleić każdą wersję do Bash.
Dostosuj następujące polecenie i uruchom je dla każdego .md
pliku, który chcesz podzielić na poszczególne strony:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Wpisz jako jedną linię.)
Jak widać, journal.md
jest to nazwa naszego pliku przeceny (w bieżącym katalogu oznaczonym przez ./
), drugie wystąpienie journal
(po --prefix='
) to nazwa naszego podfolderu, który będzie zawierał podzielone pliki i journalentry
to, jak każdy plik będzie się nazywał (po którym następuje numer indeksu).
Jeśli chcesz zrozumieć polecenie, oto wyjaśnienie: --keep-files
nadal drukuje pliki po napotkaniu błędów lub końca pliku, zapewniając, że ostatnia strona zostanie wydrukowana poprawnie (ponieważ nie kończy się ona na wzorcu naszego wyrażenia regularnego). --prefix
ustawia schemat nazewnictwa plików wyjściowych. --suffix-format
pozwala nam ustawić nasze rozszerzenie pliku ( .md
w tym przypadku), ale musimy dołączyć %i
do instrukcji sprintf, która wyświetla numer indeksu pliku. --elide-empty-files
pomija wyświetlanie pustych plików, na których nam nie zależy. Wreszcie wyrażenie regularne, które zaczyna się '/
i kończy na/-2'
, określa, kiedy podzielić plik: napis „Gdy znajdziesz (/) na początku wiersza (^), następujący (() poniedziałek lub (\ |) wtorek lub środa lub czwartek lub piątek lub sobota lub niedziela () ), po którym następuje przecinek, cofnij się o dwie linie (-2) ”i podziel plik tam, uzyskując to, co mamy do tej pory. Ostatni bit, '{*}'
powtarza poprzednie polecenie w nieskończoność, aż do osiągnięcia końca pliku.
Przeciągnij pliki .docx
i .md
do folderu, powiedz folder, który teraz utworzysz intermediates
. Lub możesz je po prostu usunąć. Przyjemnie jest je zapisać przez chwilę, dopóki nie poczujesz się komfortowo z nowym formatem pliku, na wypadek gdybyś chciał wrócić i odwołać się do czegoś, co wydarzyło się podczas procesu konwersji. Przeniesienie ich teraz do folderu pośredniego zwiększy szansę zapomnienia, gdzie jesteśmy i powtórzenia kroków.
Powtórz kroki 9-14 dla każdego .docx
pliku wyeksportowanego z OneNote.
Teraz masz jeden folder dla każdej karty, z garstką oddzielnych .md
plików, po jednym dla każdej strony! Plus media
folder w każdym podfolderze, który miał obrazy na karcie OneNote.
Zalecam wyeksportowanie każdego ze swoich notesów OneNote jako .mht
pliku (pojedyncza strona sieci Web) lub, jeśli wolisz, pliku .pdf
. W ten sposób, jeśli utraciłeś formatowanie lub inne informacje w niektórych plikach przeceny, z powodu wielokrotnej konwersji, zawsze możesz wrócić i łatwo zobaczyć, jak miało to wyglądać w .mht
pliku. Ponadto zaleciłbym wyeksportowanie każdego ze swoich notesów OneNote jako .onepkg
pliku (pakiet OneNote), więc masz fajną ostateczną kopię eksportu, jeśli kiedykolwiek chcesz ponownie otworzyć notes w OneNote w jego natywnym / oryginalnym formacie (może to być przydatne jeśli na przykład w .mht
pliku brakuje również oryginalnego formatowania, które chcesz odzyskać).
Po zakończeniu każdego notatnika kliknij prawym przyciskiem myszy notes w programie OneNote i kliknij polecenie „Zamknij ten notatnik”, aby nie przypadkowo edytować notesu i trzeba ponownie wyeksportować nowe zmiany. Dla folderów przeceny utworzyłem również folder dla każdego notatnika i umieściłem w nim wszystkie foldery z kartami.
Po zakończeniu całego projektu eksportu możesz przejść do OneDrive i usunąć wszystkie oryginały notesów OneNote, które zostały tam zsynchronizowane (oczywiście upewnij się, że teraz tworzysz kopie zapasowe własnych plików! Istnieje OneDrive dla systemu Linux lub może spróbować czegoś takiego jak Syncthing).
Wreszcie możemy zmienić nazwę wszystkich plików .md na tytuł strony OneNote, który jest pierwszym wierszem każdego pliku, za pomocą dwóch skryptów. Utwórz następujące pliki:
Plik 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
Plik 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Następnie przejdź do folderu notatek i uruchom recurse.sh
polecenie, używając rename-files-to-first-line.sh
polecenia jako argumentu:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Zobaczysz skrypt przechodzący rekurencyjnie przez wszystkie twoje pliki, generujący błędy w plikach z dziwnymi pierwszymi wierszami (które nie zostaną przekonwertowane na nazwę pliku) i w innych przypadkach krawędzi. Jednak mv
polecenie w rename-files-to-first-line
jest wykonywane z argumentem -n
, co zapobiegnie zastąpieniu jakichkolwiek plików. Może być kilka notatek, których nie można zmienić nazwy, ponieważ pierwszy wiersz w nich jest pusty lub coś innego dziwnego, ale możesz po prostu naprawić te kilka plików ręcznie.
Zanurz się w czystej ucieczce z OneNote.
Druga odpowiedź nie ucięła go, ponieważ moje notatki nie są wpisami do dziennika, ale znalazłem rozwiązanie, używając Microsoft Graph API . Oznacza to, że nie musisz nawet uruchamiać programu OneNote, wystarczy, że notatki zostaną zsynchronizowane z kontem Microsoft, a następnie otrzymasz notatki w formacie doskonale sformatowanego HTML (który możesz wyświetlić w przeglądarce lub przekonwertować na dowolny preferowany format) za pomocą Pandoc).
Magia dzieje się w tym skrypcie Python . Obsługuje prosty lokalny serwer WWW, którego można użyć do zalogowania się na konto Microsoft, a następnie pobiera wszystkie notatki w formacie HTML, a także obrazy i załączniki w ich oryginalnych formatach, i przechowuje je w hierarchii plików, zachowując oryginalną strukturę Twoich notatników (w tym kolejności stron i podstron).
Przed uruchomieniem skryptu musisz zarejestrować „aplikację” na Microsoft Azure, aby mogła uzyskać dostęp do interfejsu API Graph:
http://localhost:5000/getToken
. Zarejestrować.client_id
na początku skryptu Python.secret
w skrypcie Python.Następnie musisz zainstalować zależności Python. Upewnij się, że masz zainstalowany Python 3.7 (lub nowszy) i zainstaluj zależności za pomocą polecenia
pip install flask msal requests_oauthlib
.Teraz możesz uruchomić skrypt. W terminalu przejdź do katalogu, w którym znajduje się skrypt i uruchom go, używając
python onenote_export.py
. Spowoduje to uruchomienie lokalnego serwera WWW na porcie 5000.W przeglądarce przejdź do http: // localhost: 5000 i zaloguj się na swoje konto Microsoft. Za pierwszym razem będziesz musiał zaakceptować fakt, że aplikacja może czytać Twoje notatki OneNote. (To nie daje stronom trzecim dostępu do twoich danych, o ile nie udostępniasz identyfikatora klienta i tajnego hasła utworzonego w portalu Azure). Następnie wróć do terminala, aby śledzić postępy.
Uwaga: Microsoft ogranicza liczbę żądań, które możesz wykonać w danym okresie. Dlatego, jeśli masz wiele notatek, możesz w końcu zobaczyć takie komunikaty w terminalu:
Too many requests, waiting 20s and trying again.
To nie jest problem, ale oznacza, że cały proces może trochę potrwać. Ponadto sesja logowania może wygasnąć po pewnym czasie, co powoduje, żeTokenExpiredError
. Jeśli tak się stanie, po prostu załaduj ponownie http: // localhost: 5000, a skrypt będzie kontynuował (pomijając pliki, które już pobrał).źródło
pandoc --from html --to markdown -o output.md input.html
.). Należy jednak zauważyć, że nie wszystkie strony OneNote mogą być idealnie reprezentowane w systemie markdown, więc możesz stracić niektóre szczegóły formatowania. Ponadto, pandoc obsługuje kilka odmian obniżki cen, więc możesz przeczytać dokumentację, aby znaleźć taki, który najbardziej ci odpowiada.Aby wyeksportować strony OneNote do indywidualnego markdown (
.md
), zainstaluj Joplin i Evernote .Jak sugeruje ten link , najpierw zaimportuj notatki do Evernote. Następnie wyeksportuj wszystkie notatki do
.enex
pliku z Evernote i zaimportuj je do Joplin.Joplin ma opcję eksportu notatek jako
.md
plików.Uwaga: sugeruję wcześniejsze użycie flag w Evernote, jeśli chcesz pogrupować swoje notatki, ponieważ sposób Evernote do utrzymywania hierarchii notatek różni się od OneNote.
źródło
Znalazłem nieprogramowe rozwiązanie tego problemu.
TLDR;
Eksportuj notatki z OneNote do Evernote, a następnie do Notion (opcjonalnie), a następnie eksportuj jako pojedyncze pliki w wybranym przez siebie formacie.
Naprawdę staram się eksportować swoje notatki z Notion, spojrzenie online zwróci kilka naprawdę nieczystych sposobów eksportowania i dzielenia stron OneNote i przekształcania ich w pliki md lub html. Co za bałagan!
Zasadniczo możesz bardzo łatwo zaimportować swoje sekcje OneNote do Evernote, po pobraniu Evernote na komputery dość łatwo to zrobić, a następnie równie łatwo zaimportować je do Notion.
Pamiętaj, że możesz chcieć zaimportować poszczególne sekcje, jeśli chcesz zachować tę samą organizację, w przeciwnym razie możesz po prostu zaimportować zbiorczo wszystkie sekcje, strony zostaną otagowane nazwami sekcji, a to samo w Notion.
Pamiętaj, że musisz zsynchronizować swoje notesy OneNote, logując się na konto Microsoft / Outlook i sprawdzając, czy są one zsynchronizowane za pomocą OneNote 2016.
Mam nadzieję że to pomoże.
źródło