Store all posts from an author in markdown files

I would find it very convenient to have all my written posts in one folder on my hard drive. The content of each file should be identical to the blockchain data. I did not found a tool for this task, so I wrote a python script.

The script does the following:

  • it reads the blog section of the given author (limited to the newest 500 posts)
  • skip resteemed posts
  • extracts title, timestamp, permlink and store them as YAML extension at top of the md file
  • saves the content as markdown file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/python
from beem import Steem
from beem.comment import Comment
from beem.account import Account
import os
import io
import argparse


if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("author")
parser.add_argument("path")
args = parser.parse_args()
author = args.author
path = args.path
stm = Steem(node="https://api.steemit.com")
account = Account(author, steem_instance=stm)
for comment in account.get_blog(limit=500):
if comment["author"] != author:
continue
markdown_content = comment.body
title = comment.title
timestamp = comment.json()["created"]
author = comment["author"]
permlink = comment["permlink"]
yaml_prefix = '---\n'
yaml_prefix += 'title: %s\n' % title
yaml_prefix += 'date: %s\n' % timestamp
yaml_prefix += 'permlink %s' % permlink
yaml_prefix += 'author: %s\n---\n' % author
filename = os.path.join(path, timestamp.split('T')[0] + '_' + permlink + ".md")

with io.open(filename, "w", encoding="utf-8") as f:
f.write(yaml_prefix + markdown_content)

Store this file as save_posts_as_md.py. beem need to be installed. The script needs two parameter:

1
python save_posts_as_md.py <author> <path>

The posts from the author are stored in the given path. The filename consists of the date and the permlink.

Result for holger80

1
python save_posts_as_md.py holger80 .

Viewing the markdown files works best using the great typora editor.

Storing one post as markdown file

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/python
from beem import Steem
from beem.comment import Comment
from beem.account import Account
import io
import argparse


if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("authorperm")
parser.add_argument("filename")
args = parser.parse_args()
authorperm = args.authorperm
filename = args.filename
stm = Steem(node="https://api.steemit.com")
comment = Comment(authorperm, steem_instance=stm)
markdown_content = comment.body
title = comment.title
timestamp = comment["created"]
author = comment["author"]
yaml_prefix = '---\n'
yaml_prefix += 'title: %s\n' % title
yaml_prefix += 'date: %s\n' % str(timestamp)
yaml_prefix += 'author: %s\n---\n' % author


with io.open(filename, "w", encoding="utf-8") as f:
f.write(yaml_prefix + markdown_content)

This script works when a authorperm and filename was given:

1
python save_post_as_md.py @holger80/how-to-post-using-typora-and-beempy how-to-post-using-typora-and-beempy.md