概要
- Markdownにローカルなファイルへのリンクを書くには、ちょっとしたプログラムでタイトル付きリンクにした方が便利
詳細
- 文章はほとんどBearを使ってMarkdownで書いている
- httpなリンクは便利に使っているが、ローカルなファイルへのアクセスはあまりMarkdown中に書いてなかった
- そもそもmacosのURLスキーム"File:"がバギーでずっと使ってなかったが、現在は問題ないみたい
- Bearでは単純にURLスキームfile:の後にファイルパスを書いてもいいが、maosだとファイルやフォルダ名に空白などが入る時は面倒なので、素直にタイトル付きリンクを使った方が便利
- で、clipboardにあるフルパスのリストから、タイトル付きリンクのリストに変換しclipboardに入れ直すプログラムを書いた
- フルパスをclipboardにコピーするには、Fiinderでファイルを選択 -> コンテキストメニュー(CTRL+クリック) -> さらにオプションキーを押すと”パス名をコピー"に変わるので、それを選ぶ
- この後に下記プログラムを実行するとclipboardのフルパスのリストが、タイトル付きリンクのリストに置き換わる (主に実行はAlfredのworkflowから)
- 運用として、ほとんどのリンクする様なファイルはDropbox上にあり、macosからだと相対的に同じパスになるので、異なるマシン間でも便利に使える。iOSではダメだけど。あとサーバー上のファイルだとダメ、そこはあとで考える予定..
def path2Linktitle(path):
''' return markdown linktitle of path
ex. [[/Users/myname/foo](file:///Users/myname/foo), ... ]
'''
import urllib.parse
return '['+ path +'](file://'+urllib.parse.quote(path, encoding="utf-8") + ')'
def cb2StrList():
''' copy clipboard to string list
'''
import pyperclip
return pyperclip.paste().split('\n')
def strList2cb(strList):
''' copy strng list to clipboard with \n
'''
import pyperclip
pyperclip.copy('\n'.join(strList))
if __name__ == '__main__':
strList2cb( [path2Linktitle(path) for path in cb2StrList()] )