Ghost version
This commit is contained in:
3
data/README.md
Normal file
3
data/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Content / Data
|
||||
|
||||
This is the home of your Ghost database, do not overwrite this folder or any of the files inside of it.
|
BIN
data/ghost-dev.db
Normal file
BIN
data/ghost-dev.db
Normal file
Binary file not shown.
105
data/ghost2hugo.py
Normal file
105
data/ghost2hugo.py
Normal file
@ -0,0 +1,105 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sqlite3
|
||||
import json
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
# optional usage to remove accents on tag names
|
||||
# -------------
|
||||
# import unicodedata
|
||||
# def remove_accents(input_str):
|
||||
# nkfd_form = unicodedata.normalize('NFKD', input_str)
|
||||
# return u"".join([c for c in nkfd_form if not unicodedata.combining(c)])
|
||||
# -------------
|
||||
|
||||
conn = sqlite3.connect('ghost-dev.db')
|
||||
conn.row_factory = sqlite3.Row
|
||||
|
||||
c = conn.cursor()
|
||||
c2 = conn.cursor()
|
||||
|
||||
l = []
|
||||
|
||||
for i in c.execute('''
|
||||
SELECT id, title, meta_description as description, slug, markdown as text,
|
||||
status as draft, page, meta_title, image,
|
||||
DATE(published_at) as date,
|
||||
DATE(created_at) as date2
|
||||
FROM posts'''):
|
||||
g = {i.keys()[e]: tuple(i)[e] for e in range(len(i.keys()))}
|
||||
t = (i['id'],)
|
||||
g['tags'] = [e['name'] for e in c2.execute('''
|
||||
SELECT t.name FROM posts_tags pt JOIN tags t ON pt.tag_id = t.id
|
||||
WHERE pt.post_id=?''', t)]
|
||||
|
||||
if g['date'] == None:
|
||||
g['date'] = g['date2']
|
||||
if g['draft'] == 'published':
|
||||
g['draft'] = False
|
||||
else:
|
||||
g['draft'] = True
|
||||
g.pop('date2')
|
||||
|
||||
# post description
|
||||
if g['description'] == None:
|
||||
g['description'] = ""
|
||||
|
||||
# post content
|
||||
text = g.pop('text')
|
||||
text = text.replace("# ", "#")
|
||||
text = text.replace("#", "# ")
|
||||
text = text.replace("# # # ", "### ")
|
||||
text = text.replace("# # ", "## ")
|
||||
text = text.replace("\# ", "\#")
|
||||
|
||||
# post type
|
||||
if g['page'] == True:
|
||||
page = 'page'
|
||||
else:
|
||||
page = 'post'
|
||||
g['type'] = page
|
||||
g.pop('page')
|
||||
|
||||
published = g['date'].split('-')
|
||||
|
||||
newpath = './content/{}/{}/{}'.format(published[0], published[1], published[2])
|
||||
if not os.path.exists(newpath):
|
||||
os.makedirs(newpath)
|
||||
|
||||
with open('./content/%s/%s/%s/%s.md' % (published[0], published[1], published[2], g['slug']), 'w') as post_file:
|
||||
# with open('./content/%s.md' % (g['slug']), 'w') as post_file:
|
||||
post_file.write('---\n')
|
||||
post_file.write('type: %s\n' % g['type'])
|
||||
post_file.write('date: %s\n' % g['date'])
|
||||
post_file.write('title: "%s"\n' % g['title'])
|
||||
post_file.write('image: "%s"\n' % g['image'])
|
||||
if g['description']:
|
||||
post_file.write('description: %s\n' % g['description'])
|
||||
print(g['description'])
|
||||
post_file.write('slug: %s\n' % g['slug'])
|
||||
|
||||
post_file.write('tags: [')
|
||||
|
||||
# encode each tag to accept accents or removed them
|
||||
# and add a comma to separate each one
|
||||
for i in range(0, len(g['tags'])):
|
||||
if i < len(g['tags']) - 1 :
|
||||
separator = ", "
|
||||
else:
|
||||
separator = ""
|
||||
|
||||
# encode string to keep accents etc. E.g. "Introdução e Avaliações"
|
||||
tag = g['tags'][i]
|
||||
|
||||
# uncomment if you like to remove accents. E.g. "Introducao e Avaliacoes"
|
||||
#tag = remove_accents(g['tags'][i])
|
||||
|
||||
post_file.write('"%s"' % tag+separator)
|
||||
|
||||
post_file.write(']\n')
|
||||
|
||||
post_file.write('---\n\n')
|
||||
post_file.write(text)
|
1
data/zebra.ghost.2016-08-18.json
Normal file
1
data/zebra.ghost.2016-08-18.json
Normal file
File diff suppressed because one or more lines are too long
1
data/zebra.ghost.2016-11-21.json
Normal file
1
data/zebra.ghost.2016-11-21.json
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user