前回のおさらい
Qiita:Teamから移行するかもしれないので、データを取れるようにしてみました。
今まではcurlを叩いてほうほう、とうなづいていたのですが、今度はコーディングです。
ベースはpython3でできております。
python2?マルチバイトの処理が面倒なので使わないですよ。
コードを書いた結果
なんか3時間近くコーディングして、httpライブラリってどうやって使うんだっけ、みたいなところをやってたわけですが、一応ダウンロードまでできました。
引数チェックしてないのは、用途が限られているからであって、他に利用価値がないからです。
#!/usr/bin/env python
# coding: utf-8
import sys
import json
import urllib.request
import urllib.parse
apiUrl = ''
apiKey = ''
teamName = ''
api = '/api/v2/items?per_page=100'
def argmentscheck():
global apiUrl
global apiKey
global teamName
if len(sys.argv) == 2:
apiKey = sys.argv[1]
apiUrl = 'https://qiita.com'
print('Qiitaからデータを抜き出します')
elif len(sys.argv) == 3:
apiKey = sys.argv[1]
teamName = sys.argv[2]
apiUrl = 'https://' + teamName + '.qiita.com'
print('Qiita:Teamの' + teamName + 'からデータを抜き出します')
else :
print('引数の数が何かおかしいです')
def main():
headers = {"Authorization" : "Bearer " + apiKey}
requestUrl = apiUrl + api
request = urllib.request.Request(requestUrl, None, headers)
response = urllib.request.urlopen(request)
jsonRaw = response.read().decode('utf-8')
json.dumps(jsonRaw, ensure_ascii=False)
jsons = json.loads(jsonRaw)
for oneWrote in jsons:
print(oneWrote)
if __name__ == '__main__':
argmentscheck()
main()
parseいらないんですけど、なぜか毎回書いてしまう…。
使い方
事前準備として、python3の最新版を持ってきます。
brew install python3
pip3は使いません。使わなくて良いように標準ライブラリのみを利用しています。
python3 qiita-download.py {APIキー} {Qiita:TeamのID}
具体例はこんな感じでしょうかね
Qiitaから引っ張ってくる場合は、
python3 qiita-download.py abcdefghijklmn
という具合でいけるかと思います。
Qiita:Teamから引っ張ってくる場合は、
python3 qiita-download.py abcdefghijklmn zyx
jsonのデータが取れたまではいいけど、どう使うか
試しに以下の箇所を書き換えてみるといいでしょう。
print(oneWrote)
例えばタイトルが欲しければ
print(oneWrote['title'])
他に記事そのもののURLが欲しければ、
print(oneWrote['url'])
こんな感じで取得できます。
あとはpython使える人なら楽勝なはず。
pythonが使えなくてもコーディングが複雑じゃない分理解しやすいと思います。
これからやること
残タスクはざっとこんな感じです。
- 年ディレクトリ作成処理
- 月ディレクトリの作成処理
- urlに.mdを加えて素のMarkdownのダウンロード
- Qiita:Teamからイメージを取得する処理
- Qiita:Team内の画像パスを相対パスに書き換える対応
できたらまた記事投稿します。それでは。