C'est le code pour exporter les articles publiés sur Qiita vers un article et un fichier et les pousser vers Github. J'avais la sagesse de mes ancêtres, alors je l'ai utilisée comme référence. Pour référence, j'ai écrit un script Python qui exporte tous mes messages à l'aide de l'API Qiita v2 était l'environnement d'exécution Python 2.7. J'ai donc modifié un peu le code pour qu'il fonctionne avec la version 3.7.7 que j'utilise.
OS:macOS Python:3.7.7
# -*- coding: utf-8 -*-
import json
import os
import sys
import requests
import subprocess
def abort(msg):
print('Error!: {0}'.format(msg))
sys.exit(1)
def get(url, params, headers):
r = requests.get(url, params=params, proxies=proxies, headers=headers)
return r
def post(url, data_dict, headers_dict):
r = requests.post(url, data=json.dumps(data_dict),
proxies=proxies, headers=headers_dict)
return r
def print_response(r, title=''):
c = r.status_code
h = r.headers
print('{0} Response={1}, Detail={2}'.format(title, c, h))
def assert_response(r, title=''):
c = r.status_code
h = r.headers
if c<200 or c>299:
abort('{0} Response={1}, Detail={2}'.format(title, c, h))
class Article:
def __init__(self, d):
self._title = d['title']
self._html_body = d['rendered_body']
self._md_body = d['body']
self._tags = d['tags']
self._created_at = d['created_at']
self._updated_at = d['updated_at']
self._url = d['url']
user = d['user']
self._userid = user['id']
self._username = user['name']
def save_as_markdown(self):
title = self._title
body = self._md_body.encode('utf8')
filename = '{0}.md'.format(title)
fullpath = os.path.join(MYDIR, filename)
#Passer en mode binaire
#Référence) https://go-journey.club/archives/7113
with open(fullpath, 'wb') as f:
f.write(body)
#Spécifiez la destination de sortie du fichier. Veuillez spécifier le répertoire que vous souhaitez afficher.
MYDIR = os.path.abspath("/Users/shin/github/Qiita")
proxies = {
"http": os.getenv('HTTP_PROXY'),
"https": os.getenv('HTTPS_PROXY'),
}
#Obtenez un jeton d'accès Qiita
token = os.getenv('QIITA_ACCESS_TOKEN')
#Si non spécifié dans la variable d'environnement, définissez comme suit
# token = 'Jeton d'accès'
headers = {
'content-type' : 'application/json',
'charset' : 'utf-8',
'Authorization' : 'Bearer {0}'.format(token)
}
#Liste des messages des utilisateurs authentifiés
url = 'https://qiita.com/api/v2/authenticated_user/items'
params = {
'page' : 1,
'per_page' : 100,
}
r = get(url, params, headers)
assert_response(r)
# print_response(r)
items = r.json()
print('{0} entries.'.format(len(items)))
for i,item in enumerate(items):
print('[{0}/{1}] saving...'.format(i+1, len(items)))
article = Article(item)
article.save_as_markdown()
#Pousser vers Github
#Référence) https://www.atmarkit.co.jp/ait/articles/2003/13/news031.html
subprocess.run(["cd", "/Users/shin/github/Qiita"])
#Ajouter le contenu de la mise à jour à l'index (ajouter à la zone de préparation) → Commit target
subprocess.run(["git", "add", "-A"])
#S'engager dans le référentiel local
subprocess.run(["git", "commit", "-a", "-m", "AutomaticUpdate"])
#Refléter le contenu du référentiel local dans le référentiel distant
subprocess.run(["git", "push", "origin", "master"])
Recommended Posts