chore: update public repo

This commit is contained in:
desu-bot 2025-01-16 03:25:20 +00:00
parent 9891d7734d
commit 2423324540
No known key found for this signature in database
8 changed files with 531 additions and 0 deletions

View file

@ -0,0 +1,40 @@
import { mkdir } from 'node:fs/promises'
import { asyncPool } from '@fuman/utils'
import json5 from 'json5'
import Spinnies from 'spinnies'
import { z } from 'zod'
import { downloadFile, ffetch } from '../../utils/fetch.ts'
import { fileExists } from '../../utils/fs.ts'
import { parseJsObject } from '../../utils/strings.ts'
const $ = await ffetch('https://fwmc-ai.github.io/radio/').cheerio()
const script = $('script:icontains(const playlist =)').html()!
const playlistJs = parseJsObject(`[${script.split('const playlist = [').at(-1)!}`)!
const playlist = z.array(
z.object({
id: z.string(),
title: z.string(),
file: z.string(),
cover: z.string(),
category: z.enum(['original', 'cover']),
lyrics: z.string(),
}),
).parse(json5.parse(playlistJs))
const spinnies = new Spinnies()
await mkdir('assets/fwmc-radio', { recursive: true })
await asyncPool(playlist, async (item) => {
const dlPath = `assets/fwmc-radio/${item.id}.mp3`
if (await fileExists(dlPath)) return
spinnies.add(item.id, { text: item.title })
await downloadFile(new URL(item.file, 'https://fwmc-ai.github.io/radio/').toString(), dlPath)
spinnies.remove(item.id)
})
console.log('done')
spinnies.stopAll()