问题分析:我之前在记笔记的markdown中插入图片时,都是用<img style="float: middle;" src="imgs/lw68.png" width="15%" heigth="3%">
这样的形式,好处是方便大小和位置的调节。但用Obsidian直接打开原先的markdown文件时,这些图片是无法显示的,原因是Obsidian无法识别该形式的图片插入,而是需要用这样的形式:![[lw68.png]]
。
在网上找了一圈如何使Obsidian显示这样的形式后发现,暂时还没有很好的解决方案。所以就打算直接写脚<img style="float: middle;" src="imgs/lw68.png" width="15%" heigth="3%">
本把原先的形式改为![[lw68.png]]
这样的形式,具体步骤为:
设置本地图床目录,即指定本地图片保存目录(我之前笔记时把所有markdown用到的图片都保存到了imgs这个文件夹下,图片名字以前缀进行区别它们属于哪个笔记的。),具体操作见:Obsidian:设置本地图床功能
写代码改成Obsidian需要的图片表示形式(最好先对笔记进行备份后操作,以防止发生意外就损失大了):
以下,只需更改notebook_path为你笔记所在目录路径, 更改ori_imgs_dir为你保存图片的文件夹名称即可。
import glob
def convert_typero2obsidian(markdown_path: str, ori_imgs_dir: str) -> None:
with open(markdown_path, "r") as w:
content_l = w.readlines()
for idx, elem in enumerate(content_l):
if "<img style=" in elem:
print(elem)
name = elem.split(f'{ori_imgs_dir}/')[-1].split('\"')[0]
content_l[idx] = f'![[{name}]]\n'
print(content_l[idx])
with open(markdown_path, "w") as w:
w.write(''.join(content_l))
notebook_path = '/Users/jc/Documents/CodeFlying/notebook'
ori_imgs_dir = 'imgs'
md_path_l = glob.glob(notebook_path+'/*.md')
print(md_path_l)
for md_path in md_path_l:
convert_typero2obsidian(md_path, ori_imgs_dir)