Scratch プロジェクトをローカルにアーカイブし、必要なら Hugging Face Dataset へアップロードする CLI です。
bun installbun run src/index.ts scrape [options]scrape は 1 回の実行で複数プロジェクトを連続処理し、Ctrl+C まで継続します。
進捗は色付き CUI ダッシュボードで表示されます(TTY 環境)。
--project-files <path>を指定した場合:- 改行区切りのプロジェクト ID を読み込みます
- その中からランダム順で処理します
- すでにローカルにアーカイブ済みの ID は除外します
--project-files未指定の場合:1から1282453125の範囲からランダム選択します- すでにローカルにアーカイブ済みの ID は除外します
--project-files <path>: 改行区切り ID ファイルを指定--out <dir>: アーカイブの配置先ベースディレクトリ(デフォルト:.、実際の保存先は<dir>/.archive/)--dataset <repo>: Hugging Face dataset(デフォルト:pnsk-lab/scratch-archive)--skip-existing: リモートに同一スナップショットがある場合はスキップ--cache-dir <dir>: Hugging Face アセットツリーのキャッシュディレクトリ(デフォルト:.scratch-archive-cache)
404 のプロジェクトは projects/{project_id}/{timestamp}/metadata.json として自動で記録されます(notFound: true)。
# 全IDレンジからランダムに連続収集(Ctrl+C で停止)
bun run src/index.ts scrape
# ids.txt をランダム順で消化
bun run src/index.ts scrape --project-files ids.txt --out ./work --skip-existingCtrl+C の挙動:
- 1 回目: 現在処理中のプロジェクト完了後に停止
- 2 回目: 即時終了
bun run src/index.ts upload [--path <dir>] [--dataset <repo>]--path <dir>: アップロード元ディレクトリ(デフォルト:.archive)--dataset <repo>: 送信先 dataset(デフォルト:pnsk-lab/scratch-archive)
例:
bun run src/index.ts upload --path ./.archive --dataset pnsk-lab/scratch-archiveupload は内部で hf upload-dir を実行するため、事前に Hugging Face CLI のインストールとログインが必要です。
1 行に 1 つの数値 ID を書きます。
123456789
987654321- 空行は無視されます
- 重複 ID は自動で除外されます
- 有効範囲は
1から1_300_000_000です
bun run src/index.ts make-project-list-from-users users.txt projects.txt
bun run src/index.ts make-project-list-from-users --concurrency 50 users.txt projects.txtusers.txt には 1 行 1 ユーザー名で記述します。
users.json では string[] として扱います。
bun run src/index.ts make-project-list-from-users users.txt projects.txt
bun run src/index.ts make-project-list-from-users users.json projects.txtprojects.txtには重複を除外したproject_idを 1 行ずつ出力します404ユーザーは警告してスキップします。projects.txtは追記方式で書き込むため、処理件数が多い場合でも進捗表示に合わせて段階的にファイルが増えていきます。- TTY 環境では色付きの進捗ダッシュボードを表示します。
--concurrency未指定時のデフォルトは50です。