如何从Joplin迁移笔记到Obsdian

如何从Joplin迁移笔记到Obsdian

遇到的问题

如何从Joplin迁移笔记到Obsdian?我安装Joplin导出markdown文件的方法导出,发现诸如
“小于号(这里如果打<会被识别为图片)img width=“780” height=“575” src=“…/_resources/Lily_Screenshot_113f0.jpg”/>”的图片无法被正常识别
仔细叙述你的问题。最好附上自己使用的 Obsidian 版本及环境。

预期的效果

希望能够较为完美的将图片迁移到Obsidian中,我认为Obsidian的移动端对于扩展的支持对我很重要
另外Obsidian有更好的中文论坛,所以有问题能够更好的与各位大神交流

已尝试的解决方案

暂时不知道如何解决,求助各位大神。

1 个赞

解决办法
所以通过Ai写了一段代码将不能被识别的格式修正为可以被识别的格式

import os  
import re  
  
# 正则表达式匹配HTML的img标签,并捕获src属性的值  
img_regex = r'<img[^>]+src="([^"]+)"[^>]*>'  
  
  
# 将HTML图片标签转换为Markdown格式  
def html_img_to_markdown(match):  
    src = match.group(1)  
    # return f'<img src="{src}">'  
    return f'![]({src})'  # 返回正确的格式
  
  
# 处理单个Markdown文件  
def process_md_file(file_path):  
    with open(file_path, 'r', encoding='utf-8') as f:  
        content = f.read()  
  
        # 使用正则表达式替换HTML图片标签为Markdown格式  
    new_content = re.sub(img_regex, html_img_to_markdown, content)  
  
    with open(file_path, 'w', encoding='utf-8') as f:  
        f.write(new_content)  
  
    # 遍历目录并处理所有Markdown文件  
  
  
def process_md_files(directory):  
    for root, dirs, files in os.walk(directory):  
        for file in files:  
            if file.endswith('.md'):  
                file_path = os.path.join(root, file)  
                process_md_file(file_path)  
  
            # 主函数  
  
  
def main():  
    # 设置相对目录路径(相对于当前脚本所在的目录)  
    relative_directory_path = './no'  
    # './no'  为相对路径,我这里将md文件全保存到了no文件夹下
  
    # 获取绝对路径,以确保正确处理文件  
    absolute_directory_path = os.path.abspath(relative_directory_path)  
  
    # 处理目录下的所有Markdown文件  
    process_md_files(absolute_directory_path)  
    print(f"All Markdown files in '{absolute_directory_path}' have been processed.")  
  
  
# 如果脚本作为主程序运行,则调用主函数  
if __name__ == '__main__':  
    main()

其所需要的目录树为

project_root/ 
	├── main.py # 包含上述Python脚本的文件 
	├── no
		├──1.md
		├──2.md
		├──... # 其他md文件
		└── _resources/ # 图片和其他资源存放的目录 
			├── Lily_Screensh3f0.jpg 
			├── another_image.jpg 
			└── ... # 其他图片文件