mirror of
https://git.stupid.fish/teidesu/scripts.git
synced 2025-07-28 02:32:11 +10:00
chore: update public repo
This commit is contained in:
parent
9891d7734d
commit
2423324540
8 changed files with 531 additions and 0 deletions
40
scripts/media/fwmc-radio.ts
Normal file
40
scripts/media/fwmc-radio.ts
Normal 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()
|
Loading…
Add table
Add a link
Reference in a new issue