起因
博客本身使用typecho,因为一直想用Markdown写文章,觉得很简洁。其他开源程序兼容又不那么完美。就入坑hexo了
网搜资料
typecho2Hexo:https://github.com/NewbMiao/typecho2Hexo
README
typecho2Hexo
Typecho 文章批量转 Hexo Markdown 文档。
Usage
1.修改数据库配置,表前缀
// 根据实际情况更改
$db->connect('localhost','username','password','database'); $prefix = 'tc_';
2.运行
php converter.php
typecho2Hexo代码:
<?php
// 运行 php converter.php
$db = new mysqli();
// 根据实际情况更改
$db->connect( 'localhost', 'username', 'password', 'database' );
$prefix = 'typecho_';
$sql = <<<TEXT
select title,text,created,category,tags from {$prefix}contents c,
(select cid,group_concat(m.name) tags from {$prefix}metas m,{$prefix}relationships r where m.mid=r.mid and m.type='tag' group by cid ) t1,
(select cid,m.name category from {$prefix}metas m,{$prefix}relationships r where m.mid=r.mid and m.type='category') t2
where t1.cid=t2.cid and c.cid=t1.cid
TEXT;
$res = $db->query( $sql );
if ( $res ) {
if ( $res->num_rows > 0 ) {
while ( $r = $res->fetch_object() ) {
$_c = @date( 'Y-m-d H:i:s', $r->created );
$_t = str_replace( '<!--markdown-->', '', $r->text );
$_tmp = <<<TMP
title: {$r->title}
categories: {$r->category}
tags: [{$r->tags}]
date: {$_c}
---
{$_t}
TMP;
// windows下把文件名从UTF-8编码转换为GBK编码,避免出现生成的文件名为乱码的情况
if ( strpos( PHP_OS, "WIN" ) !== false ) {
$name = iconv( "UTF-8", "GBK//IGNORE", $r->title );
echo $name . '<br>';
} else {
$name = $r->title;
echo $name . '<br>';
}
// 替换不合法文件名字符
file_put_contents( str_replace( array( " ", "?", "\\", "/", ":", "|", "*" ), '-', $name ) . ".md", $_tmp );
}
}
$res->free();
}
$db->close();
解决办法
网站根目录下新建目录typecho2Hexo,目录下新建converter.php
文件,把上面代码拷贝进去
登录ssh
执行
php converter.php
converter.php所在目录会把typecho所有文章转成.md文章
文章放入hexo
将转换后的文章下载至 source/_posts/
目录下
执行hexo clean && hexo g && hexo s
评论(0)