Exportez le propre article de Qiita et transférez-le sur Github

introduction

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.

Environnement d'exécution

OS:macOS Python:3.7.7

Aperçu du traitement

  1. Utilisez l'API Qiita avec Python dans l'environnement local pour créer un article pour chaque article.
  2. Poussez le fichier créé sur Github.

code

# -*- 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"])

référence

Recommended Posts

Exportez le propre article de Qiita et transférez-le sur Github
Obtenez une adresse IP globale et exportez-la vers des feuilles de calcul Google
Lire Python csv et exporter vers txt
mkseldir - commande à mkdir et sélectionnez-le davantage
Comment installer le détecteur Cascade et comment l'utiliser
Un lycéen a créé un service de conversion linguistique en temps réel et l'a poussé vers Github.