Qiitaの自分の投稿をダウンロードするスクリプトを書くのが流行っているみたいだったので、僕も流行りに乗ってRubyで書いてみました。
限定共有記事も含めて自分の全ての投稿をダウンロードできます。
標準ライブラリのみを使用しているので、gemのインストール等は必要ありません。
サンプルコード
QIITA_ACCESS_TOKEN
はread_qiita
権限がついてるアクセストークンに書き換えてください。
アクセストークンの発行はこちらから → アクセストークンの発行 - Qiita
OUT_DIR
は出力先ディレクトリパスにご自由に書き換えてください。
download_qiita_items.rb
require 'open-uri'
require 'fileutils'
require 'json'
require 'date'
# アクセストークン
QIITA_ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# 出力先ディレクトリ
OUT_DIR = File.expand_path('./qiita_items', __dir__)
# =====================================================================
# 出力先ディレクトリを作成
FileUtils.mkdir_p(OUT_DIR)
1.upto(100) do |i|
# 記事一覧を取得
response = URI.open(
"https://qiita.com/api/v2/authenticated_user/items?page=#{i}&per_page=100",
'Authorization' => "Bearer #{QIITA_ACCESS_TOKEN}"
)
items = JSON.parse(response.read)
# 記事が見つからなかった場合は終了する
break if items.empty?
# 記事を書き出す
items.each do |item|
filename = "#{item['title']}.md"
File.write(File.join(OUT_DIR, filename), item['body'])
end
end
実行例
$ ruby download_qiita_items.rb
$ ls qiita_items
Docker Imageのタグ一覧を確認できるCLIツール`docker-tags`を作りました.md
GitHub Markdown APIの使い方.md
Gitコミット件数を確認するコマンド.md
JavaScriptで元の配列を変更せずに並び替えした配列を作る.md
Qiita APIを使って記事一覧を取得する.md
React+material-uiでコピーボタン付きのテキストボックスを作る.md
Slack APIを使用してメッセージを送信する.md
TerraformでVPC・EC2インスタンスを構築してssh接続する.md
【AWS】Qiita 週間いいね数ランキング【自動更新】.md
【Docker】Qiita 週間いいね数ランキング【自動更新】.md
【Git】自分が今いるブランチを確認するコマンド.md
【Go】AWS SSMパラメータストアの値を取得する.md
...
...