1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Qiitaの記事とストックをバックアップする

Posted at

はじめに

最近PowerShellを使っているので力試しにQiitaの記事とストックをバックアップするスクリプトを作りました。
LGTM一覧は残念ながらQiita APIにないのでWebページをスクレイピングしないと取得できなさそうです。

動作環境

  • Windows PowerShell 5
  • PowerShell Core 6
  • PowerShell 7

使い方

記事のバックアップ

qiita-item-exporter.ps1

  1. ファイルの先頭に$userIdを自分のアカウント名に変更します。
  2. 記事中の画像ファイルのURLはデフォルトでファイル名のみに置換しますが他のURLに置き換えたい場合に設定します。
    たとえば$imageFolder = "https://example.com/images/"にすると記事中の画像のURLが以下のように置換されます。
  • 変更前 https://qiita-image-store.s3.amazonaws.com/0/00000/ffffffff-ffff-ffff-ffff-ffffffffffff.png
  • 変更後 https://example.com/images/ffffffff-ffff-ffff-ffff-ffffffffffff.png
qiita-item-exporter.ps1
$userId = 'your-user-name'
$imageFolder = "" # replace image path

qiita-item-exporter.ps1を実行すると以下のような構造で記事と画像が保存されます。

- items
  +- readme.md                                   # 各記事へのリンク
  +- xxxxxxxxxxxxxxxxxxxx                        # 記事のID
     +- xxxxxxxxxxxxxxxxxxxx.md                  # ダウンロードした記事
	 +- readme.md                                # 画像のURLを置換した記事
	 +- ffffffff-ffff-ffff-ffff-ffffffffffff.png # 記事中の画像
	 +- meta.json                                # 作成日時、更新日時、タイトル、タグを保存したJSON

ストックのバックアップ

qiita-stock-exporter.ps1

  1. $userId$imageFolderqiita-item-exporter.ps1と同様の設定です。
  2. ストックの総数はQiita APIで取得できないのでストック一覧の一番下からページ数を確認して$pagesを設定します。
    このスクショでは29がページ数です。
    image.png
qiita-stock-exporter.ps1
$userId = 'your-user-name'
$pages = 1 # your-stock-pages
$imageFolder = "" # replace image path

qiita-stock-exporter.ps1を実行すると以下のような構造で記事と画像が保存されます。

- stokcs
  +- readme.md                                   # 各記事へのリンク
  +- xxxxxxxxxxxxxxxxxxxx                        # 記事のID
     +- xxxxxxxxxxxxxxxxxxxx.md                  # ダウンロードした記事
	 +- readme.md                                # 画像のURLを置換した記事
	 +- ffffffff-ffff-ffff-ffff-ffffffffffff.png # 記事中の画像
	 +- meta.json                                # ユーザーID、ユーザー情報、タイトル、タグを保存したJSON

さいごに

PowerShellは文法こそ独特なもののC#のLINQのようにパイプで文字列だけではなくオブジェクトを流せるのでデータの加工が楽でした。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?