麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

把博客園的博客導(dǎo)出為MovableType的文本格式

2019-11-14 13:38:24
字體:
供稿:網(wǎng)友

最近把以前的WordPRess建的博客刪了,用textpattern重新建了一個(gè)獨(dú)立博客,http://www.shenlongbin.com,可以把它當(dāng)成博客園上內(nèi)容的備份,但導(dǎo)入我以前的一大堆文章非常有難度。經(jīng)過一番折騰,終于把博客園的內(nèi)容導(dǎo)出為文本,再導(dǎo)入到textpattern中了。

第一步:C#編程把博客園內(nèi)容讀取出來

博客園的管理端提供了博客備份功能,可以生成一個(gè)xml文件,但只能備份博客的主要內(nèi)容,并不包含博客的摘要信息和關(guān)鍵詞信息,需要用metaweblogAPI進(jìn)行訪問才能獲得詳細(xì)的信息。快速學(xué)習(xí)了metaweblog編程知識(shí),內(nèi)部采用了XML-RPC調(diào)用,從網(wǎng)上搜索相關(guān)資料和類庫。很多地方都引用了XML-RPC.NET項(xiàng)目的類庫(名字空間以CookComputing開頭),并修改了相關(guān)代碼,可惜下載網(wǎng)址被偉大的墻擋住了,通過VPN才好不容易把xml-rpc.net.2.5.0.zip(.NET framework 2.0)下載下來。原始地址在這里:http://xmlrpcnet.googlecode.com/files/xml-rpc.net.2.5.0.zip。大CC有一篇文章介紹了metaweblogAPI,另外這篇文章介紹了調(diào)用方法,只需要稍微修改一點(diǎn),就可以獲取博客園上的博客內(nèi)容了。

博客園的metaweblog的訪問接口可以訪問:http://www.companysz.com/speeding/services/metaweblog.aspx,從而獲得詳細(xì)的描述信息。實(shí)際上在xml-rpc.net2.5.0壓縮包中的interfaces/MetaWeblogAPI.cs文件中可以找到主要類或結(jié)構(gòu)的定義,稍微添加或修改即可。

    [XmlRpcMissingMapping(MappingAction.Ignore)]    public struct Post    {        [XmlRpcMissingMapping(MappingAction.Error)]        [XmlRpcMember(Description = "Required when posting.")]        public DateTime dateCreated;        [XmlRpcMissingMapping(MappingAction.Error)]        [XmlRpcMember(Description = "Required when posting.")]        public string description;        [XmlRpcMissingMapping(MappingAction.Error)]        [XmlRpcMember(Description = "Required when posting.")]        public string title;        public string[] categories;        public Enclosure enclosure;        public string link;        public string permalink;        [XmlRpcMember(           Description = "Not required when posting. Depending on server may "           + "be either string or integer. "           + "Use Convert.ToInt32(postid) to treat as integer or "           + "Convert.ToString(postid) to treat as string")]        public object postid;        public Source source;        public string userid;        public object mt_allow_comments;        public object mt_allow_pings;        public object mt_convert_breaks;        public string mt_text_more;        public string mt_excerpt;        public string mt_keywords; // add by shenlb, for VEVb        public string wp_slug;     // add by shenlb, for VEVb;    }

 

我們單位訪問互聯(lián)網(wǎng)要用到代理,還要密碼驗(yàn)證,所以關(guān)鍵代碼得添加幾行:

MetaWeblogCnblogs blog = new MetaWeblogCnblogs();blog.Url = "http://www.companysz.com/speeding/services/metaweblog.aspx";Uri proxyURI = new Uri("http://myproxyhost.myproxydomain.com:80");System.Net.WebProxy proxyObject = new System.Net.WebProxy(proxyURI, false);proxyObject.Credentials = new System.Net.NetworkCredential("proxy_username", "proxy_password");blog.Proxy = proxyObject;Post[] posts = blog.getRecentPosts("speeding", "speeding", "my_blog_admin_password", 50);


這樣就可以獲得博客內(nèi)容了,但需要再調(diào)用getPost才能獲得詳細(xì)的信息,這里就可以看到摘要和關(guān)鍵詞了。

Post detail = blog.getPost(post.postid.ToString(), "speeding", "my_blog_admin_password");

第二步:利用pandoc把html內(nèi)容轉(zhuǎn)換為textile標(biāo)記

Post中的description中都是html標(biāo)記,而textpattern默認(rèn)的標(biāo)記語言是textile,所以需要將其轉(zhuǎn)換為textile,關(guān)于textile標(biāo)記的百科知識(shí)見這里。

這里要用到著名的pandoc了,這個(gè)神奇的工具竟然是用haskell寫成了,以前學(xué)習(xí)haskell語言的時(shí)候以為只是一種教學(xué)語言,真有人寫出了實(shí)用程序!

把博客中內(nèi)容寫入temp.html文件中,再用下面的命令行就可以轉(zhuǎn)換了。

pandoc.exe -t textile -o textile.txt temp.html

主要代碼:

ProcessStartInfo startInfo = new ProcessStartInfo();startInfo.CreateNoWindow = false;startInfo.UseShellExecute = false;startInfo.FileName = "..//..//pandoc.exe";startInfo.WindowStyle = ProcessWindowStyle.Hidden;startInfo.Arguments = "-t textile -o textile.txt temp.html";using (Process exeProcess = Process.Start(startInfo))            {     exeProcess.WaitForExit(); }    return File.ReadAllText("textile.txt"); 

第三步:生成import.txt文件

對(duì)幾百篇博客文章循環(huán)處理,追加到import.txt文件即可,最后的文件用UTF8保存。

Movable Type博客的文本格式說明文檔可以看這里: https://movabletype.org/documentation/appendices/import-export-format.html#example

簡(jiǎn)單說明一下:文件用UTF8編碼存儲(chǔ),前面幾行是單行文本信息,后面的BODY、KEYWORDS和EXCERPT是多行文本,多行文本需要用5個(gè)短橫分開,每篇文章用8個(gè)短橫分開,最簡(jiǎn)單的一個(gè)例子:

TITLE: A dummy title

AUTHOR: shenlongbin

DATE: 01/31/2012 03:31:05 PM

PRIMARY CATEGORY: reading

CATEGORY: reading

-----

BODY:

This is the body.

Another paragraph here.

Another paragraph here.

-----

EXCERPT:

See, this entry does not have an extended piece; but it does have an excerpt. It is special.

-----

--------

里面的日期格式有要格要求,關(guān)鍵代碼:

IFormatProvider culture = new CultureInfo("en-US", true);

string date = post.dateCreated.ToString("dd/MM/yyyy hh:mm:ss tt", culture); // 08/05/2002 04:05:23 PM  

第四步:上傳import.txt文件,導(dǎo)入

文件必須放在public_html/textpattern/include/import目錄下,并且文件名一定是import.txt。實(shí)際上textpattern的管理端可以導(dǎo)入Movable Type(File/MySQL)、Blogger、b2、WordPress等格式的博客,但支持文本文件導(dǎo)入的只有Movable Type和Blogger。

在textpattern的管理界面上執(zhí)行import操作,導(dǎo)入成功時(shí)會(huì)出現(xiàn)博客文章的列表。

3787-20151225081538812-115235259

其它

以前都是用blog_backup這個(gè)小程序來備份我的博客,現(xiàn)在發(fā)現(xiàn)自己寫的這個(gè)小程序可以備份得更為徹底,還可以稍微修改導(dǎo)出到wordpress。一番折騰,學(xué)到了這些知識(shí)點(diǎn):movableType, metaweblog, xml-rpc, textile, pandoc, c# culture in date.ToString(), WebProxy……


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: av电影在线网站 | 欧美18—19sex性护士中国 | 成年人网站视频免费 | 99精品视频在线看 | 成人在线观看地址 | 亚州精品国产 | 国产一区二区三区色淫影院 | 国产二区三区视频 | 在线播放黄色网址 | 精品国产一区二区三区四区在线 | 日韩视频在线不卡 | 免费的性生活视频 | 中文亚洲视频 | 久久久久se | 国产成年人小视频 | 久章草在线视频 | 视频一区二区三区在线播放 | 最新中文字幕日本 | 有色视频在线观看 | 黄a大片 | 久久蜜桃精品一区二区三区综合网 | 久久久久久久久久久久久久国产 | 久久密 | 亚洲精品a在线观看 | 国产亚洲综合一区二区 | 久色亚洲 | 老司机免费福利午夜入口ae58 | 女人叉开腿让男人桶 | 国产精品av久久久久久网址 | 日韩在线毛片 | 青久草视频 | 国产精品一区网站 | 中文字幕极速在线观看 | 91精品国产乱码久久久久久久久 | 久久久久国产成人精品亚洲午夜 | 亚洲天堂成人在线 | 一级片999| 国产成人精品区一区二区不卡 | 龙床上的呻吟高h | 精品国产91久久久久久浪潮蜜月 | 特黄一级小说 |