[PYTHON] Exportieren Sie Qiitas eigenen Artikel und senden Sie ihn an Github

Einführung

Dies ist der Code, um die auf Qiita veröffentlichten Artikel in einen Artikel und eine Datei zu exportieren und an Github zu senden. Ich hatte die Weisheit meiner Vorfahren und benutzte sie als Referenz. Als Referenz war Ich habe ein Python-Skript geschrieben, das alle meine Beiträge mit der Qiita-API v2 exportiert die Ausführungsumgebung Python 2.7. Also habe ich den Code ein wenig geändert, damit er mit 3.7.7 funktioniert, das ich verwende.

Ausführungsumgebung

OS:macOS Python:3.7.7

Überblick über die Verarbeitung

  1. Erstellen Sie jeweils einen Artikel mithilfe der Qiita-API mit Python in der lokalen Umgebung.
  2. Schieben Sie die erstellte Datei nach 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)
        #Wechseln Sie in den Binärmodus
        #Referenz) https://go-journey.club/archives/7113
        with open(fullpath, 'wb') as f:
            f.write(body)

#Geben Sie das Ziel für die Dateiausgabe an. Bitte geben Sie das Verzeichnis an, das Sie ausgeben möchten.
MYDIR = os.path.abspath("/Users/shin/github/Qiita")

proxies = {
    "http": os.getenv('HTTP_PROXY'),
    "https": os.getenv('HTTPS_PROXY'),
}

#Holen Sie sich Qiita Access Token
token = os.getenv('QIITA_ACCESS_TOKEN')
#Wenn in der Umgebungsvariablen nicht angegeben, setzen Sie Folgendes
# token = 'Zugangstoken'

headers = {
    'content-type'  : 'application/json',
    'charset'       : 'utf-8',
    'Authorization' : 'Bearer {0}'.format(token)
}

#Liste der Beiträge authentifizierter Benutzer
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()

#Schieben Sie zu Github
#Referenz) https://www.atmarkit.co.jp/ait/articles/2003/13/news031.html
subprocess.run(["cd", "/Users/shin/github/Qiita"])
#Hinzufügen von Aktualisierungsinhalten zum Index (zum Staging-Bereich hinzufügen) → Ziel festschreiben
subprocess.run(["git", "add", "-A"])
#In lokales Repository übertragen
subprocess.run(["git", "commit", "-a", "-m", "AutomaticUpdate"])
#Reflektieren Sie den Inhalt des lokalen Repositorys im Remote-Repository
subprocess.run(["git", "push", "origin", "master"])

Referenz

Recommended Posts

Exportieren Sie Qiitas eigenen Artikel und senden Sie ihn an Github
Holen Sie sich eine globale IP und exportieren Sie sie in Google Spreadsheets
Lesen Sie Python csv und exportieren Sie es nach txt
mkseldir - Befehl an mkdir und wählen Sie es weiter aus
So installieren Sie den Cascade-Detektor und wie verwenden Sie ihn
Ein Schüler erstellte einen Echtzeit-Sprachkonvertierungsdienst und schickte ihn an Github.