[PYTHON] Récupération des données de MacNote3 et migration vers Write

À propos de MacNote3

J'utilisais une application appelée ** MacNote3 ** en tant qu'application de bloc-notes pouvant être gérée de manière hiérarchique sur un Mac.

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

Une autre raison pour laquelle j'ai aimé cette application était qu'elle avait une fonction de synchronisation (manuelle) avec l'application ** mmNote ** disponible sur les appareils iOS qui me permettait de partager des notes entre mon Mac et mon iPhone. mmNote → http://nsek.net/SYW/software/iPhoneJ/mmnote/index.html

Cependant, à un moment donné, mmNote a cessé de fonctionner avec la mise à jour iOS et je cherchais une application alternative, en l'utilisant uniquement sur mon Mac.

La fonction que je voulais

C'était simple, mais je n'ai rien trouvé qui puisse être géré de manière hiérarchique. (Je pensais que Microsoft OneNote serait bon, mais je ne me suis pas habitué aux notes et aux sections.)

Rencontre avec Write

À ce moment-là, un ami m'a présenté une application appelée ** Write **. Write → http://writeapp.net/ Write vous permet de gérer vos notes dans plusieurs couches et vous pouvez utiliser l'intégration entre les appareils Mac et iOS en synchronisant avec iCloud ou DropBox.

Ce qui est encore plus excitant, c'est qu'il prend en charge la ** notation MarkDown **, et le clavier virtuel de l'iPhone a été conçu pour que vous puissiez facilement saisir des symboles utiles pour MarkDown. ** Note application pour MarkDown **. Il prend également en charge la fonction d'aperçu de MarkDown, la sortie de conversion au format HTML et la sortie PDF. C'est incroyable.

C'est une application payante, mais je pensais que ce n'était pas cher, j'ai donc décidé d'acheter les trois (version Mac, version iPhone et version iPad séparément) et de faire une transition à grande échelle.

Récupération des données de MacNote 3

Maintenant, pour migrer, vous devez retirer environ 400 (?) Notes que vous avez actuellement de MacNote3.

Heureusement, je n'ai pas utilisé de texte enrichi et je n'ai pas collé d'images, je devrais donc simplement extraire le texte.

Au début, je voulais le récupérer directement à partir du dossier de données utilisé par MacNote3, mais les données enregistrées pour chaque note sont au format XML (?), Et la partie texte est dans un format converti en code tel que BASE64. Donc je ne pouvais pas le faire simplement. MacNote 3 a également la possibilité d'exporter des notes, mais il était fastidieux de le faire manuellement pour chaque note.

J'étais sur le point d'abandonner, mais je me suis souvenu que MacNote3 était compatible avec AppleScript, et quand j'ai regardé le glossaire de MacNote3 dans l'éditeur de script, il y avait des classes et des méthodes qui pouvaient être utilisées, donc il y avait des essais et des erreurs, mais le résultat J'ai pu récupérer le texte de toutes les notes à la fois avec un script simple.

Script pour extraire le texte de toutes les données de note de MacNote3

J'ai créé un script qui supprime le titre et le corps d'une note, ajoute chaque ligne de délimitation et le produit dans un fichier texte. Si vous le pouvez, vous pouvez le faire avec un si petit nombre de lignes.

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 "L'exportation est terminée."
	set the clipboard to titleList
end tell

Migration des données vers l'écriture

Puisque le code de caractère des données texte extraites par AppleScript est SHIFT-JIS, convertissez-le en UTF-8 avec un éditeur de texte qui peut convertir le code de caractère. (Quand je l'ai converti sur la ligne de commande avec iconv, j'ai eu une erreur parce que les données internes étaient fausses, donc je l'ai converti facilement avec Jedit X)

Dans les données de MacNote3, le dossier (séparation de la hiérarchie) était comme des données de note sans texte, donc en l'utilisant, créez un dossier, faites-y une note en un seul fichier et donnez le titre J'ai écrit un programme en Python qui crée des données texte avec des noms de fichiers et convertit des notes à la fois.

Après cela, je l'ai jeté dans le dossier Write de DropBox et l'ai synchronisé avec mon Mac, iPhone et iPad.

Au début, j'ai essayé de le faire avec AppleScript, mais je n'ai pas maîtrisé le code des caractères et Write n'était pas compatible avec AppleScript. Donc, quand j'écrivais en Perl, ce à quoi je n'avais pas l'habitude, une connaissance m'a dit que "Python est facile", donc quand je l'ai écrit en étudiant avec des informations sur le Web, c'était relativement facile comme conseillé.

Programme Python qui divise les fichiers texte pour l'écriture

Je suis nouveau sur Python, donc c'est enfantin et embarrassant, mais j'ai décidé de l'exposer dans l'espoir d'un conseil. Toutes suggestions, conseils ou suggestions sont les bienvenus.

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

Récupération des données de MacNote3 et migration vers Write
Compressez les données python et écrivez sur sqlite
[Kaggle] De la lecture des données au prétraitement et au codage
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Migration automatique des données de Yahoo Root Lab vers Strava
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
De l'installation d'Elasticsearch à la saisie des données
SIGNATURE Quête ① De la lecture des données au prétraitement
Lier à la classe pour lire et écrire YAML
Migration de Python2 vers Python3 (Python2 est reconstruit comme un environnement virtuel et coexiste)
Portage et modification du solveur de doublets de python2 vers python3.
Vider les données SQLite3 et migrer vers MySQL
Comment écrire des commentaires pydoc et multi-lignes
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
Prétraitement des données (2) Changez les données de catégorielles à numériques.
[Python] Flux du scraping Web à l'analyse des données
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Nettoyage des données Comment gérer les valeurs manquantes et aberrantes
[AWS] Migrer les données de DynamoDB vers Aurora MySQL
Somme de 1 à 10
Donnez les données de séquence de points de latitude et de longitude et essayez d'identifier la route à partir des données d'OpenStreetMap
Comment récupérer des données d'image de Flickr avec Python
Envoyer les données du journal du serveur vers Splunk Cloud
Envoyer des données de Python au traitement via une communication socket
Essayez de diviser les données Twitter en SPAM et HAM
Ce n'est pas facile d'écrire Python, c'est facile d'écrire numpy et scipy
Écrire des tests en Python pour profiler et vérifier la couverture
Écrire des données dans KINTONE à l'aide du module de requêtes Python
DataNitro, implémentation de la fonction de lecture des données de feuille