Skip to content

Instantly share code, notes, and snippets.

@0x401
Created May 16, 2022 07:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 0x401/4c87b764b0c3c0a86d87e94ff9b36cdf to your computer and use it in GitHub Desktop.
Save 0x401/4c87b764b0c3c0a86d87e94ff9b36cdf to your computer and use it in GitHub Desktop.
将 Typecho 文章转为 Hexo 格式
const mysql = require('mysql')
const fs = require('fs');
const moment = require('moment')
var con = mysql.createConnection({
host: "",
user: "",
password: "",
database: ""
});
con.connect(function (err) {
if (err) {
console.log(err.message);
return;
};
});
var sql = "select title,slug,text,created,modified,category,tags from typecho_contents c,(select cid,group_concat(m.name) tags from typecho_metas m,typecho_relationships r where m.mid=r.mid and m.type='tag' group by cid ) t1,(select cid,m.name category from typecho_metas m,typecho_relationships r where m.mid=r.mid and m.type='category') t2 where t1.cid=t2.cid and c.cid=t1.cid"
con.query(sql, function (err, posts) {
if (err) {
console.log(err.message);
return;
};
posts.forEach(function(post){
var title = post.title;
var slug = post.slug;
var text = post.text.replace('<!--markdown-->','');
var tags = post.tags;
var cat = post.category;
var created = moment.unix(post.created).format("YYYY-MM-DD HH:mm:ss");
var updated = moment.unix(post.modified).format("YYYY-MM-DD HH:mm:ss");
var filename = "./post/" + slug + ".md";
fs.appendFileSync(filename, "---\n");
fs.appendFileSync(filename, "title: " + title + "\n");
fs.appendFileSync(filename, "date: " + created + "\n");
fs.appendFileSync(filename, "updated: " + updated + "\n");
fs.appendFileSync(filename, "categories: " + cat + "\n");
fs.appendFileSync(filename, "tags:\n- " + tags.replace(',',"\n- ") + "\n");
fs.appendFileSync(filename, "---\n");
fs.appendFileSync(filename, text);
})
})
con.end()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment