【追加情報】markedを用いてEvernote上でMarkdown記法の即時プレビュを実現する
【追加情報】markedを用いてEvernote上でMarkdown記法の即時プレビュを実現する
仕組みを作りこんでる場合は、用意にappのアップデートはできないな。
困ったこと
以前用意したEvernote + markedの環境がOSやappをアップデートした関係で動かなくなった。
環境
原因
ネット上に情報がなかったのだが、潜って見るといろいろわかった。簡単に言うとEvernoteにおけるノートのローカル保管場所等が変更になったことが原因。具体的には、
${HOME}/Library/Application Support/com.evernote.Evernote/accounts/www.evernote.com/${ACCOUNT}/content
- 上記
${ACCOUNT}
は以前はユーザ名だったが、数字7文字に置き換わった(セキュリテイの関係) - 以前は
content.html
だったのが、content.enml
に変更になった。
修正方法
以前作成したシェルを以下の用に修正する。あとはAutomatorでapp化して終了
ACCOUNT=“数字7桁" # your evernote account name CHECK_INTERVAL=2 # content update check interval (sec) MARKED_REFRESH_BG=yes # [yes/no] yes:background, no:background VERBOSE=no # [yes/no] yes:check result output, no:silent CONTENT_DIR="${HOME}/Library/Application Support/com.evernote.Evernote/accounts/www.evernote.com/${ACCOUNT}/content" CONTENT_HTML=content.enml # read file CONTENT_MD=content.md # write file while true; do LATEST_DIR=`stat -l -t '%FT%T' "${CONTENT_DIR}"/* | cut -d' ' -f6- | sort | tail -1 | cut -d' ' -f2-` NEW_HASH=`md5 "${LATEST_DIR}/${CONTENT_HTML}" | cut -d= -f2` if [ "${HASH}"x == "${NEW_HASH}"x ]; then test "${VERBOSE}"x == "yes"x && echo "content not been updated." sleep ${CHECK_INTERVAL} continue fi HASH=${NEW_HASH} cat "${LATEST_DIR}/${CONTENT_HTML}" | sed -e 's/<img src=\"\([^"]*\)\"[^>]*>/![](\1)/g' | textutil -stdin -format html -convert txt -stdout >"${LATEST_DIR}/${CONTENT_MD}" test "${VERBOSE}"x == "yes"x && echo "content updated, refresh markdown." open -a Marked "${LATEST_DIR}/${CONTENT_MD}" $(test "${MARKED_REFRESH_FG}"x != "yes"x && echo '-g') sleep ${CHECK_INTERVAL} done
ちなみにtextutil -stdin -format html -convert txt -stdout
の箇所も修正した。textutil
のオプションで、-format html
を明示している。enml
ファイルはhtml
とは微妙に違うみたいだ。
おまけ そもそもenml
ってなに?
ENML とは、Evernote ノートの記述に使用されるマークアップ言語です。ENML は XHTM ベースの言語るため、Evernote ノート内のリッチコンテキストを容易に表現できます。
以上です。