-
-
Save karstengresch/578aafbdb5ccfcdf5cad to your computer and use it in GitHub Desktop.
Get blog post from GitHub Pages site in Editorial
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#coding: utf-8 | |
import keychain | |
import console | |
import editor | |
import time | |
import re | |
import requests | |
import json | |
import base64 | |
SITE_BRANCH = 'gh-pages' # either master or gh-pages | |
#keychain.delete_password('GitHub', 'username') | |
#keychain.delete_password('GitHub', 'token') | |
#keychain.delete_password('GitHub', 'repository') | |
# Get Username, API Token and Repository | |
username = keychain.get_password('GitHub', 'username') | |
if not username: | |
username = console.input_alert("Username", "Enter your GitHub Username", '', "Save") | |
keychain.set_password('GitHub', 'username', username) | |
tokn = keychain.get_password('GitHub', 'token') | |
if not tokn: | |
tokn = console.password_alert("API Token", "Enter your GitHub API Token", '', "Save") | |
keychain.set_password('GitHub', 'token', tokn) | |
repo = keychain.get_password('GitHub', 'repository') | |
if not repo: | |
repo = console.input_alert("Repository", "Enter your GitHub Repository name", '', "Save") | |
keychain.set_password('GitHub', 'repository', repo) | |
# Mangle the post ;) | |
post_text = editor.get_text() | |
post_sections = post_text.split('---') | |
if len(post_sections) > 1: | |
yaml_header = post_sections[1].splitlines() | |
# Find the title in the YAML | |
post_title = None | |
date = None | |
for line in yaml_header: | |
if line[:6] == 'title:': | |
post_title = line[6:].strip() | |
elif line[:5] == 'date:': | |
date = line[5:].strip()[:10] | |
if post_title and date: | |
safe_title = re.sub('[^a-zA-Z0-9\s]', '', post_title).replace(' ', '-') | |
safe_title.replace('--', '-') | |
post_filename = '_posts/%s-%s.markdown' % (date, safe_title) | |
URL = 'https://api.github.com/repos/%s/%s/contents/%s' % (username, repo, post_filename) | |
header = { | |
'Authorization': 'token %s' % tokn, | |
'User-Agent': username | |
} | |
get_data = { | |
'path': post_filename, | |
'ref': SITE_BRANCH | |
} | |
response = requests.get(URL, headers=header, params=get_data) | |
response_json = response.json() | |
if response.status_code == 200: | |
new_text = base64.b64decode(response_json['content']) | |
editor.replace_text(0, len(post_text), new_text) | |
console.hud_alert("Post downloaded from GitHub.", 'success', 2.0) | |
else: # Something went wrong! | |
console.alert("This post does not exist.") | |
else: | |
console.alert("Couldn't find a title or date.\n\nAction Halted.") | |
else: | |
console.alert("No YAML header found.\n\nAction Halted.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment