如题。
obsidian 里有七八百篇笔记,想迁移到思源,请问有没有什么无痛的方法。
如题。
obsidian 里有七八百篇笔记,想迁移到思源,请问有没有什么无痛的方法。
我来回答。
答案是没有这种东西。
你可以试试 obsidian 迁移到 logseq,或者是 logseq 迁移到 obsidian,也可以是 notion 迁移到 logseq。
答案是,没有什么无痛的方法,必然会有痛苦。
1.如果使用了 obsidian 的特有语法的 md 文件(比如 wikilink)。在 vscode、typora 等 md 编辑器里,一样无法渲染这种特有语法。你需要自己去改过来。
2.使用了插件污染 md 文件。都说“污染”了,比 1.的情况更严重。那就要自己去删除这些“乱码”,再用新软件的功能去实现相同的效果。
说到底,md 本身就不适合拿来做什么笔记。只能简单拿来写点东西,想要复杂的功能?要么是添加私有语法,要么是软件本身的功能。前者不适合迁移,后者同样不适合迁移。
用這個 Obsidian plugin 便可將某個筆記本的筆記 收集至 "output",以及將筆記內的相片收集至 "output/attachment"
https://github.com/bingryan/obsidian-markdown-export-plugin
但 import 之後 要做點工夫 才可正常顯示那些相片
因为凑合用就行,代码比较 ugly,只能参考一下思路吧。主要做了两件事:1)处理了三种 link 形式 [[]]
![]()
[]()
,2)把所有附件都放到了 md 同目录。注意处理前先备份整个 vault。。
import sys
import re
import os
import shutil
pattern_markdown = r'\!\[[^\]]*\]\(([^\)]+)\)'
pattern_wikilink = r'\!\[\[([^\]]+)\]\]'
pattern_pdf = r'\[\[([^\]]+)\]\]'
base_path = '/Path/to/Obsidian/vault/assets'
def replace_markdown(matchobj):
orig = matchobj.group(0)
image = matchobj.group(1)
image_dir = os.path.dirname(image)
image_filename = os.path.basename(image)
image_description = ''
ext = os.path.splitext(image_filename)[1]
if ext not in ('.jpg', '.jpeg', '.png', '.gif', '.pdf', '.svg'):
if '|' in image_filename: # format [[a.png|500]]
rets = image_filename.split('|')
image_filename = rets[0]
print('image splited by | ')
else:
rets = image_filename.split()
image_filename = rets[0] # format ![](a.png "some description")
image_description = ' '.join(rets[1:])
print('image splited out description: %s.' % image_description)
orig_image = os.path.join(image_dir, image_filename)
orig_path = os.path.join(base_path, orig_image)
#dest_path = os.path.join('assets', image_filename)
dest_path = image_filename
#if not os.path.isdir('assets'):
# os.mkdir('assets')
#if image_dir:
# new_dir = os.path.join('assets', image_dir)
# if not os.path.isdir(new_dir):
# os.mkdir(new_dir)
#print('rename from %s to %s' % (orig_path, dest_path))
try:
shutil.move(orig_path, dest_path)
except:
print('failed to move %s!!!' % orig_path)
output = '![](%s)' % dest_path
if image_description:
output += '\n' + image_description
return output
def process(infile):
outlines = []
with open(infile, "r") as fp:
lcnt = 0
for line in fp:
lcnt += 1
if lcnt in (1, 2, 4): # skip front matter
continue
if line.startswith('[['):
ret = re.sub(pattern_pdf, replace_markdown, line)
else:
ret = re.sub(pattern_markdown, replace_markdown, line)
ret = re.sub(pattern_wikilink, replace_markdown, ret)
outlines.append(ret)
output = "".join(outlines)
with open(infile, "w") as fp:
fp.write(output)
if __name__ == "__main__":
infile = sys.argv[1]
process(infile)
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。
CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。
程序员是从事程序开发、程序维护的专业人员。
ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。
NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。
Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。
持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
FlowUs.息流 个人及团队的新一代生产力工具。
让复杂的信息管理更轻松、自由、充满创意。
Mobi.css is a lightweight, flexible CSS framework that focus on mobile.
CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。
Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。
小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。
一些有用的避坑指南。
希望你我能在旅途中找到人生的下一站。
Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。
Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于