小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

遷移為知筆記

 析模界 2023-10-23 發(fā)布于四川

為知筆記是一款不錯的筆記軟件,從 2013 年用到現(xiàn)在,整整用了十個年頭。令人難以置信的是,這軟件整整十年居然都沒有漲價,60 元/年的價格,真真是良心價。

從為知筆記遷移,主要基于以下的原因(用其他筆記的道友也可以考慮):

  • 數(shù)據(jù)安全。為知筆記雖然支持本地部署,也支持將數(shù)據(jù)導(dǎo)出到本地,但本地部署過于復(fù)雜,默認(rèn)情況下數(shù)據(jù)文件是保存在網(wǎng)絡(luò)服務(wù)器中的。
  • 不知道軟件還能活多久。我一直使用的是老版的為知筆記,因?yàn)槠渲С掷猛獠?markdown 編輯器進(jìn)行文件編輯,也支持導(dǎo)出 markdown 文件。廠家后面搞了個重構(gòu)版,但不支持外部編輯器,也不能導(dǎo)出 markdown 文件。重構(gòu)版和當(dāng)前滿大街的筆記軟件并無區(qū)別??珊薜氖枪俜剿坪鯇习娴闹С至Χ确浅H酰荒暌搽y得更新一次,我很擔(dān)心官方會在某一天直接宣布關(guān)閉老版本。
  • 軟件比較老,屬于第一代筆記軟件,不支持新一代筆記軟件的各種特性(如雙鏈、知識圖譜等),后續(xù)版本也不可能支持這些特性。
  • 純粹是用膩了。用了這么多年,各種文檔充斥其中缺少整理,臟亂差看著就糟心。

終于在前不久的某天,我實(shí)在是無法忍耐了。

整理文檔看起來簡單,無非就是將原來的文檔從為知筆記導(dǎo)出,再將文檔導(dǎo)入到 Obsidian 中。這里 Obsidian 并不需要導(dǎo)入,只需要將文件拷貝到 Obsidian 的文件夾中即可。所以問題給到了如何導(dǎo)出為知筆記文檔上。

為知筆記提供了手工逐篇導(dǎo)出 markdown 的功能,并不支持批量導(dǎo)出大量文檔。而且對于從未打開過的文檔,還得使用鼠標(biāo)點(diǎn)過讓其下載到本地才能導(dǎo)出。

幾千篇文檔一個個的導(dǎo)出,這簡直就不是人力所能為的事情。不過天無絕人之路之路,當(dāng)將文檔打開時,為知筆記會從服務(wù)器中將對應(yīng)的文件下載到本地,只不過文件格式不是 markdown,而是一個擴(kuò)展名為 ziw 的壓縮文件,解壓出來是一個 html 文件,只需要將 html 中的內(nèi)容提取出來就可以了。

所以后面的問題就是如何批量提取壓縮包中的文件。這顯然可以很容易地通過程序來實(shí)現(xiàn)。下面是用 c# 實(shí)現(xiàn)的核心代碼(從歷史文件中翻出來的,2014 年寫的)。

/// <summary>
/// 解壓文件到當(dāng)前路徑下
/// </summary>
/// <param name="zipFileName">ziw文件名</param>
private void UnZiwFile(string zipFileName)
{
string path = GetPathInfo(zipFileName)[0]; //文件上級目錄
string fileName = GetPathInfo(zipFileName)[1];

//解壓ziw文件,得到index.html文件,解壓后放在當(dāng)前路徑下
(new FastZip()).ExtractZip(zipFileName, path, "");

//修改index.html文件名稱
string path_newfolder = path + "\\temp"; //定義一個新的路徑
if (!Directory.Exists(path_newfolder))
{
Directory.CreateDirectory(path_newfolder);
}

string path_htmlfile = path + "\\index.html";
if (File.Exists(path_htmlfile))
{
FileInfo fi = new FileInfo(path + "\\index.html");
fi.MoveTo(path_newfolder + "\\" + fileName + ".html");
fi.MoveTo(path + "\\" + fileName + ".html");
Directory.Delete(path_newfolder);
}
}

/// <summary>
/// 將wiz文件轉(zhuǎn)化為md文件,放置在原位置
/// </summary>
/// <param name="filePath">html文件完整路徑</param>
private void File_Html2MD(string htmlFilePath)
{
string path = GetPathInfo(htmlFilePath)[0]; //文件上級目錄
string fileName = GetPathInfo(htmlFilePath)[1]; //沒有擴(kuò)展名的文件名

//讀取index.html文件,獲取title及MD中的內(nèi)容
StringBuilder sb = new StringBuilder();
string str = File.ReadAllText(htmlFilePath);

//利用正則表達(dá)式匹配文檔內(nèi)容
string divs = "<div>.+?</div>";
MatchCollection ms = Regex.Matches(str, divs);

foreach (Match m in ms)
{
sb.AppendLine(m.Groups[0].Value.ToString());
}

sb.Replace("<div>&nbsp;</div>", "");
sb.Replace("<div>", "");
sb.Replace("</div>", "");
sb.Replace("&gt;", "> ");
sb.Replace("<br>", "\n");
sb.Replace("</br>", "\n");
sb.Replace("&amp;", "&");
sb.Replace("&lt;", "<");
//將正文存入md文件,因?yàn)閠itle中自帶.md,所以干脆當(dāng)做擴(kuò)展名處理了
File.WriteAllText(path + "\\" + fileName + ".md", sb.ToString());
}

只需要幾秒鐘,幾千篇文檔瞬間轉(zhuǎn)化成了 markdown 文件。

不過過程還是過于麻煩,有空了整一個自動從為知網(wǎng)站上下載文檔,然后自動轉(zhuǎn)換的代碼。

文件轉(zhuǎn)完了,下一步是考慮文件轉(zhuǎn)移的事情。目前的方案是轉(zhuǎn)移到Obsidian及我來筆記。其中我來筆記用于網(wǎng)絡(luò)同步,Obsidian用于備份。

我來筆記支持批量導(dǎo)入和導(dǎo)出markdown文件,可以快速將從為知筆記轉(zhuǎn)化的大量文檔迅速轉(zhuǎn)移到筆記中。Obsidian則更簡單,直接將文件復(fù)制到相應(yīng)的硬盤目錄中即可。

目前已完成了一部分重要文檔的整理工作。


(完)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多