[PYTHON] Abrufen von Daten von MacNote3 und Migrieren zu Write

Über MacNote3

Ich habe eine App namens ** MacNote3 ** als Notebook-App verwendet, die auf einem Mac hierarchisch verwaltet werden kann.

MacNote3 → http://nsek.net/SYW/software/japanese/macnote3/index.html

Ein weiterer Grund, warum ich diese App liebte, war, dass sie eine (manuelle) Synchronisierungsfunktion mit der ** mmNote ** -App auf iOS-Geräten hatte, mit der ich Notizen zwischen meinem Mac und meinem iPhone austauschen konnte. mmNote → http://nsek.net/SYW/software/iPhoneJ/mmnote/index.html

Irgendwann funktionierte mmNote jedoch nicht mehr mit dem iOS-Update und ich suchte nach einer alternativen App, die nur auf meinem Mac verwendet werden konnte.

Die Funktion, die ich wollte

Es war einfach, aber ich konnte nichts finden, das hierarchisch verwaltet werden konnte. (Ich dachte, Microsoft OneNote wäre gut, aber ich habe mich nicht an die Notizen und Abschnitte gewöhnt.)

Begegnung mit Write

Zu dieser Zeit hatte ich zufällig einen Freund, der mir eine App namens ** Write ** vorstellte. Write → http://writeapp.net/ Mit Write können Sie Ihre Notizen in mehreren Ebenen verwalten und die Integration zwischen Mac- und iOS-Geräten durch Synchronisierung mit iCloud oder DropBox nutzen.

Noch aufregender ist, dass es die ** MarkDown-Notation ** unterstützt und die Softtastatur des iPhones so konzipiert wurde, dass Sie problemlos nützliche Symbole für MarkDown eingeben können. ** App für MarkDown beachten **. Es unterstützt auch die Vorschaufunktion von MarkDown, die Konvertierungsausgabe in das HTML-Format und die PDF-Ausgabe. Es ist wunderbar.

Es ist eine kostenpflichtige App, aber ich dachte, sie sei nicht teuer. Deshalb habe ich beschlossen, alle drei (Mac-Version, iPhone-Version und iPad-Version separat) zu kaufen und einen vollständigen Übergang vorzunehmen.

Abrufen von Daten von MacNote 3

Um zu migrieren, müssen Sie jetzt ungefähr 400 (?) Notizen aus MacNote3 entfernen.

Glücklicherweise habe ich keinen Rich-Text verwendet und keine Bilder eingefügt, daher sollte ich nur den Text extrahieren.

Zuerst wollte ich es direkt aus dem von MacNote3 verwendeten Datenordner abrufen, aber die für jede Notiz gespeicherten Daten liegen im XML-Format (?) Und der Textteil in einem Code-konvertierten Format wie BASE64 vor. Also konnte ich es nicht einfach machen. MacNote 3 bietet auch die Möglichkeit, Notizen zu exportieren. Es war jedoch mühsam, dies für jede Notiz manuell zu tun.

Ich wollte aufgeben, aber ich erinnerte mich, dass MacNote3 mit AppleScript kompatibel war, und als ich mir das Glossar von MacNote3 im Skripteditor ansah, gab es Klassen und Methoden, die verwendet werden konnten, also gab es Versuch und Irrtum, aber das Ergebnis Mit einem einfachen Skript konnte ich den Text aller Notizen gleichzeitig abrufen.

Skript zum Extrahieren von Text aller Notendaten aus MacNote3

Ich habe ein Skript erstellt, das den Titel und den Text einer Notiz herausnimmt, jede Trennlinie hinzufügt und sie in eine Textdatei ausgibt. Wenn Sie können, können Sie dies mit einer so geringen Anzahl von Zeilen tun.

ManNote3export.scpt


tell application "MacNote3"
	set titleList to ""
	set saveFile to choose file name
	open for access saveFile with write permission
	set allPages to all pages
	repeat with aPage in allPages
		set pTitle to title of aPage
		set pText to text of aPage
		write "== MacNote title ==" & return to saveFile
		write pTitle & return to saveFile
		write "== MacNote text ==" & return to saveFile
		write pText & return to saveFile
		write "== MacNote end ==" & return to saveFile
		set titleList to titleList & pTitle & return
	end repeat
	close access saveFile
	display dialog "Der Export ist beendet."
	set the clipboard to titleList
end tell

Datenmigration nach Write

Da der Zeichencode der von AppleScript extrahierten Textdaten SHIFT-JIS ist, konvertieren Sie ihn mit einem Texteditor, der den Zeichencode konvertieren kann, in UTF-8. (Als ich es in der Befehlszeile mit iconv konvertierte, wurde eine Fehlermeldung angezeigt, da die internen Daten falsch waren, sodass ich es problemlos mit Jedit X konvertieren konnte.)

In den Daten von MacNote3 war der Ordner (Trennung der Hierarchie) wie Notizdaten ohne Text. Verwenden Sie ihn also, erstellen Sie einen Ordner, machen Sie eine Notiz darin als eine Datei und geben Sie den Titel an Ich habe ein Programm in Python geschrieben, das Textdaten mit Dateinamen erstellt und Notizen sofort konvertiert.

Danach warf ich es in den Write-Ordner von DropBox und synchronisierte es mit meinem Mac, iPhone und iPad.

Zuerst habe ich versucht, es mit AppleScript zu tun, aber ich habe den Dreh raus, und Write war nicht AppleScript-konform. Als ich in Perl schrieb, was ich nicht gewohnt war, sagte mir ein Bekannter, dass "Python einfach ist". Als ich es während des Studiums mit Informationen im Web schrieb, war es relativ einfach, wie empfohlen.

Python-Programm, das Textdateien für Write aufteilt

Ich bin neu in Python, daher ist es kindisch und peinlich, aber ich habe beschlossen, es in der Hoffnung auf Ratschläge aufzudecken. Vorschläge, Ratschläge oder Vorschläge sind willkommen.

SepNote.py


#!/usr/bin/python
# -*- coding: utf-8 -*-

import codecs
import os

odir = 'MacNote'
otitle = ""
odata = ""
ostart = 0

fin  = codecs.open('conv.txt','r','utf-8')

for row in fin:
	linedata = row.rstrip()
	if  '== MacNote title ==' in linedata: 
		ostart = 1
	elif '== MacNote text ==' in linedata: 
		ostart = 2
	elif '== MacNote end ==' in linedata:
		if len(odata)< 2:
			odir = otitle
		else:
			if not os.path.exists(odir): os.mkdir(odir)
			ofname = otitle.replace('/', '_')
			if len(ofname)>20: ofname = ofname[0:20]
			ofneme = odir + '/' + ofname + '.txt'
			fout_utf = codecs.open(ofneme,'w','utf-8')
			fout_utf.write(u'■' + otitle + '\n')
			fout_utf.write(odata)
			fout_utf.close()
		otitle = ''
		odata = ''
		ostart = 0
	elif ostart == 1:
		otitle = linedata
		odata = ''
	else:
		odata = odata + linedata + '\n'

fin.close()

Recommended Posts

Abrufen von Daten von MacNote3 und Migrieren zu Write
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
[Kaggle] Vom Lesen der Daten bis zur Vorverarbeitung und Codierung
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Automatische Datenmigration vom Yahoo Root Lab nach Strava
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Von der Installation von Elasticsearch bis zur Dateneingabe
SIGNATE Quest ① Vom Lesen der Daten bis zur Vorverarbeitung
Binden Sie an die Klasse, um YAML zu lesen und zu schreiben
Migration von Python2 zu Python3 (Python2 wird als virtuelle Umgebung neu erstellt und existiert gleichzeitig)
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Speichern Sie SQLite3-Daten und migrieren Sie zu MySQL
Wie schreibe ich pydoc und mehrzeilige Kommentare
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
Datenvorverarbeitung (2) Ändern Sie die Daten von "Kategorisch" in "Numerisch".
[Python] Fluss vom Web-Scraping zur Datenanalyse
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Datenbereinigung Umgang mit fehlenden und Ausreißern
[AWS] Migrieren Sie Daten von DynamoDB nach Aurora MySQL
Summe von 1 bis 10
Geben Sie Breiten- und Längengradpunktsequenzdaten an und versuchen Sie, die Straße anhand von OpenStreetMap-Daten zu identifizieren
So kratzen Sie Bilddaten von Flickr mit Python
Senden Sie Protokolldaten vom Server an Splunk Cloud
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
Versuchen Sie, Twitter-Daten in SPAM und HAM zu unterteilen
Es ist nicht einfach, Python zu schreiben, es ist einfach, numpy und scipy zu schreiben
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt