Skip to content

Instantly share code, notes, and snippets.

@ykpythemind
Last active May 31, 2022 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ykpythemind/1e5e381c0151d51729dcfa4fb2370b91 to your computer and use it in GitHub Desktop.
Save ykpythemind/1e5e381c0151d51729dcfa4fb2370b91 to your computer and use it in GitHub Desktop.
Mac Notes.app to Evernote
# Notes.app -> Evernote
#
# 1. mac app exporterでmdファイルを抽出 ( https://apps.apple.com/jp/app/exporter/id1099120373?mt=12 )
# 2. このスクリプトをmdファイルがあるフォルダに配置して走らせる (要調整)
# % ruby export.rb
# 3. out-xxxxxxフォルダに吐かれる
# 4. evernote -> ファイル -> インポート -> enexファイルたちを選んでインポート
require 'rexml/document'
require 'pp'
require "cgi"
def generate(src_file, dest_file)
doc = REXML::Document.new(
'<!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export4.dtd">'
)
doc << REXML::XMLDecl.new('1.0', 'UTF-8')
x = doc.add_element('en-export', { 'export-date' => '20220701T152226Z', 'application' => 'Evernote', 'version' => '10.38.1' })
note = x.add_element('note')
f = File.open(src_file)
title = f.each_line.first.chomp
note.add_element('title').text = title.delete_prefix('# ')
created = File.stat(f).mtime.strftime("%Y%m%dT000000Z")
note.add_element('created').text = created
note.add_element('updated').text = created
note.add_element('note-attributes')
content = note.add_element('content')
text = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"><en-note><div>'
body = f.read.split("\n").map { CGI.escapeHTML(_1) }.join("<br />")
text += body
text += '</div></en-note>'
cdata = REXML::CData.new(text, true)
content.add(cdata)
f2 = File.open(dest_file + '.enex', "w")
doc.write(f2)
f.close
f2.close
end
i = Time.now.to_i
dir = "out-#{i}"
puts dir
# textファイルがあるところ
Dir.chdir('iCloud/Notes') do
Dir.mkdir(dir)
# convert対象ファイルのglob
files = Dir.glob("*.md") # *.md
# files[0...100].each do |f|
files.each do |f|
generate(f, "#{dir}/#{f}")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment