Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
GitHub APIのアクセストークンを使ってGistにアップロードしたファイルについての情報を読み出し、そのリストをmarkdown形式で生成するためのPython3のプログラム。Gistの貼り付け先となるWordpressの記事の情報はMariaDBより取得している。
#!/usr/bin/env python3
import os
import re
import json
from requests_oauthlib import OAuth2Session
import mysql.connector
github_client_key_file = 'github_client_key.json'
client_id = ''
client_secret = ''
access_token = ''
with open(github_client_key_file) as infile:
text =
keys = json.loads(text)
access_token = keys["access_token"]
db_config_file = 'db_config.json'
dbconfig = {}
with open(db_config_file) as dbfile:
t =
dbconfig = json.loads(t)
github = OAuth2Session()
github.headers['Authorization'] = 'token '+access_token;
r = github.get('')
if r.status_code != 200:
rr = r.json()
count = rr['public_gists']+rr['private_gists']
pages = int((count+99)/100)
conn = mysql.connector.connect(user=dbconfig["user"],password=dbconfig["password"],host=dbconfig["host"],database=dbconfig["dbname"])
pattern = re.compile('.*/([0-9a-f]+)$')
title_pattern = re.compile('^([^_]+_[^_]+_[^_]+_[^_]+_)')
for i in range(pages):
r = github.get(''+str(i+1)+'&per_page=100')
rr = r.json()
for j in range(len(rr)):
for k in rr[j]["files"].keys():
cur = conn.cursor()
print("## "+title_pattern.sub('\\1<br/>',k))
print("* Created at: "+rr[j]["created_at"])
if rr[j]["created_at"] != rr[j]["updated_at"]:
print("* Updated at: "+rr[j]["updated_at"])
print("* Descrption: "+rr[j]["description"])
if rr[j]["public"]:
print("* [Link to Gist]("+rr[j]["html_url"]+")")
m = pattern.match(rr[j]["url"])
#print("* "
cur.execute("select id,post_title from wp_posts where post_content like '%/""%' and post_status='publish'")
reflist = {}
for (id,post_title) in cur:
reflist[id] = post_title
if len(reflist)>0:
print("* Referenced from: ")
for k,v in reflist.items():
print(" * ["+v+"]("+str(k)+")")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment