Episode Download Script

This commit is contained in:
Dennis Reimann
2022-01-03 12:28:37 +01:00
parent 64523af1e6
commit 13d64e77b7
5 changed files with 1828 additions and 92 deletions

31
tasks/fetch_episodes.js Normal file
View File

@@ -0,0 +1,31 @@
const { statSync, writeFileSync } = require('fs')
const { join, resolve } = require('path')
const request = require('sync-request')
const episodes = require('../generated/episodes.json')
const dir = process.env.EPISODES_DIR || resolve(__dirname, '..', 'episodes')
const write = (name, data) => writeFileSync(join(dir, name), data)
const exists = filePath => {
try {
const stat = statSync(filePath)
return stat.isFile() || stat.isDirectory()
} catch (err) {
return false
}
}
const download = (url, name) => {
const filePath = join(dir, name)
if (exists(filePath)) {
console.log(`${name} already exists`)
} else {
console.log(`Downloading ${name}`)
write(name, request('GET', url).getBody())
}
}
episodes.forEach(e => {
const { slug, enclosure: { url: mp3Url }, image: imgUrl } = e
if (mp3Url.startsWith('http')) download(mp3Url, `${slug}.mp3`)
if (imgUrl.startsWith('http')) download(imgUrl, `${slug}.jpg`)
})