0%

typecho文章转hexo .md

起因

博客本身使用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

php-converter

converter.php所在目录会把typecho所有文章转成.md文章

文章放入hexo

将转换后的文章下载至 source/_posts/ 目录下

执行hexo clean && hexo g && hexo s