|
1 | 1 | import { getUserCollection } from './getUserCollection.ts' |
| 2 | +import type { Release } from './types-collection' |
2 | 3 | import fs from 'node:fs' |
| 4 | +import { SingleBar, Preset } from '@leomotors/cli-progress' |
3 | 5 |
|
4 | 6 | const main = async () => { |
5 | | - const vinyls = await getUserCollection({ user: 'davidlyons', perPage: 100 }) |
6 | | - fs.writeFileSync('src/lib/vinyls.json', JSON.stringify(vinyls, null, 4)) |
7 | | - console.log('Vinyls data written to vinyls.json') |
| 7 | + const user = process.argv[2] || 'davidlyons' |
| 8 | + let nextPage: number | undefined = 1 |
| 9 | + let releases: Release[] = [] |
| 10 | + |
| 11 | + const bar = new SingleBar( |
| 12 | + { |
| 13 | + hideCursor: true, |
| 14 | + stopOnComplete: true, |
| 15 | + gracefulExit: true, |
| 16 | + format: 'Fetched page {value} / {total} | {bar}', |
| 17 | + }, |
| 18 | + Preset.shadesClassic |
| 19 | + ) |
| 20 | + |
| 21 | + while (nextPage) { |
| 22 | + const pageData = await getUserCollection({ user, perPage: 100, page: nextPage }) |
| 23 | + releases = [...releases, ...pageData.releases] |
| 24 | + |
| 25 | + if (nextPage === 1) bar.start(pageData.pagination.pages, 0) |
| 26 | + bar.increment() |
| 27 | + |
| 28 | + nextPage = nextPage < pageData.pagination.pages ? nextPage + 1 : undefined |
| 29 | + } |
| 30 | + |
| 31 | + const vinyls = { |
| 32 | + collectionInfo: { |
| 33 | + user: user, |
| 34 | + items: releases.length, |
| 35 | + }, |
| 36 | + releases, |
| 37 | + } |
| 38 | + |
| 39 | + const file = `src/lib/vinyls.json` |
| 40 | + const data = JSON.stringify(vinyls, null, 2) |
| 41 | + |
| 42 | + fs.writeFileSync(file, data) |
| 43 | + console.log(`Vinyl collection data written to ${file}`) |
8 | 44 | } |
9 | 45 |
|
10 | 46 | main() |
0 commit comments