LoginSignup
7
4

More than 3 years have passed since last update.

Qiitaの自分の全ての投稿をダウンロードするRubyスクリプト

Posted at

Qiitaの自分の投稿をダウンロードするスクリプトを書くのが流行っているみたいだったので、僕も流行りに乗ってRubyで書いてみました。
限定共有記事も含めて自分の全ての投稿をダウンロードできます。
標準ライブラリのみを使用しているので、gemのインストール等は必要ありません。

サンプルコード

QIITA_ACCESS_TOKENread_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
...
...
7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4