如题。
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)
SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。
OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。
昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。
Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。
脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。
你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!
App(应用程序,Application 的缩写)一般指手机软件。
Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
Github 地址:https://github.com/Hi-Windom/Sillot
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。
一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。
程序员是从事程序开发、程序维护的专业人员。
Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。
CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网
NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。
域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于