Skip to content

Instantly share code, notes, and snippets.

@fernandojsg
Created October 6, 2014 21:43
Show Gist options
  • Save fernandojsg/8f8e769de90e9d941dbf to your computer and use it in GitHub Desktop.
Save fernandojsg/8f8e769de90e9d941dbf to your computer and use it in GitHub Desktop.
Blog migration script to jekyll
var mysql = require('mysql');
var toMarkdown = require('to-markdown').toMarkdown;
var fs = require('fs');
var os = require('os');
var connection = mysql.createConnection({
host : 'localhost',
user : 'user',
password : 'password',
database : 'database'
});
connection.connect();
connection.query("select type, categories, keywords, title, content, date_format(date,'%Y-%m-%d %H:%i:%s') as datetime, date_format(date,'%Y-%m-%d') as date, titleurl from articles", function(err, rows, fields) {
if (err) throw err;
for ( var i = 0; i < rows.length; i++ ) {
var row = rows[i];
var tags = row.categories ? '[' + row.categories.split(" ").join(", ")+"]" : '';
var keywords = row.keywords ? '[' + row.keywords.split(" ").join(", ")+"]" : '';
var type = ( row.type == 'new' ) ? 'blog' : 'project';
var layout = ( row.type == 'new' ) ? 'post' : 'project';
var title = ( row.title.indexOf(":") !== false || row.title.indexOf("-") !== false ) ? '"' + row.title + '"' : row.title;
var post = [
'---',
'layout: ' + layout,
'title: ' + title,
'category: ' + type,
'comments: true',
'share: true',
'date: '+ row.datetime,
//'modified: '+ row.date,
'tags: ' + tags,
'keywords: ' + keywords,
'---',
toMarkdown(row.content)
].join( os.EOL );
var filename = row.date + "-" + row.titleurl + ".md";
fs.writeFile( "output/" + type + "/" + filename, post, function( err ) {
if( err )
console.log( err );
else
console.log("Filename saved");
});
}
});
connection.end();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment