摘要
习惯用有道云笔记多年了,最近想将部分笔记能快速通过wordpress发布到自己的个人主页,对于普通笔记,可以直接通过共享链接抓取数据,然后显示。但对于markdown笔记,原有方法不适用,原因是有道笔记使用了js对markdown进行解析。最终采用的解决办法是:通过共享链接抓取markdown源数据,然后用SegmentFault Markdown 解析库 HyperDown进行解析。
解析库下载地址https://github.com/SegmentFault/HyperDown
当前页面即解析自有道共享笔记页http://note.youdao.com/noteshare?id=56f69...。
部分代码如下
$url = "http://note.youdao.com/yws/public/note/{$note_id}";/* 抓取笔记内容 */$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 50);
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);/*TJP:判断是否是markdown文档*/if($json->domain==1){
$md_file=$json->p; /* 根据md_file以及id拼凑md源文件的url */
$url ="http://note.youdao.com/yws/api/personal/file".$md_file."%20%20%20%20%20%20"."?method=download&read=true&shareKey=".$note_id."&cstk=false"; /* 抓取md笔记内容 */
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 50);
$response = curl_exec($ch);
curl_close($ch); // 解析markdown to html,提供HyperDown的安装位置
require_once 'HyperDown-master/Parser.php';
$parser = new HyperDown\Parser;
$content=$parser->makeHtml($response);
进一步完善
对解析后的代码使用特定的CSS样式。这里使用的是markdownpad带的CSS样式。下载链接https://pan.baidu.com/s/1kV6S1Af
段内代码缩进显示。默认情况下段内代码不会自动换行,在上述的markdownpad-github.css
中需要增加<code>
代码块的CSS样式如下,这样就可以实现自动换行了。例如$url ="http://note.youdao.com/yws/api/personal/file".$md_file."%20%20%20%20%20%20"."?method=download&read=true&shareKey=".$note_id."&cstk=false"
code {white-space: normal;word-break: break-all;
}
<link rel="stylesheet" href="highlight/styles/github.css"><script src="highlight/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script>
<script>// 对转换后的链接标签,增加target属性,使用新页面打开var links = document.links;for (var i = 0, linksLength = links.length; i < linksLength; i++) { if (links[i].hostname != window.location.hostname) {
links[i].target = '_blank';
}
}</script>
其它