Este módulo é para baixar todos os arquivos mp3 de um feed RSS do Patreon.
Atualmente, ele está em um estado alfa e funciona muito bem para meu caso de uso específico e para outros casos de uso com um pouco de força. A próxima atualização oferecerá um objeto de opções melhores para controlar vários aspectos ao seu gosto. No momento, ele apenas baixará todos os arquivos do tipo áudio/mpeg no feed rss para o diretório atual.
Você precisará obter seu link RSS individual no site da campanha do Patreon (patreon.com -> barra lateral em 'Assinaturas' -> campanha individual -> guia Membros -> links rápidos -> 'Ouvir em outros aplicativos de podcast')
import getRssItems from 'patreon-mp3-downloader' ;
const items = await getRssItems ( 'https://www.patreon.com/rss/PATREONCAMPAIGN?auth=PATREON_PROVIDED_AUTH_TOKEN_STRING' ) ;
// this will be an array of Item objects, that has a title and a url
// as well as a download() method that you can use to trigger the download of
// an individual file.
console . log ( items ) ;
// since you have an array of objects that each contains it's own download method,
// you are free to download them as you like.
// download the latest item in the rss feed:
await items [ 0 ] . download ( ) ;
// download each item in sequence, starting with the latest, prepending a number to the file name:
let counter = items . length ;
for ( const item of items ) {
console . log ( `downloading ${ counter } - ${ item . fileName } ` ) ;
await item . download ( ` ${ counter } - ` ) ;
counter -- ;
}
// download every item in the feed at once (do not recommend for larger feeds):
await Promise . all ( items . map ( i => await i . download ( ) ) )
// you could also chunk the array with lodash, and Promise.all each chunk:
import _ from 'lodash' ;
const chunks = _ . chunk ( items , 5 ) ;
for ( const chunk of chunks ) {
await Promise . all ( chunk . map ( i => await i . download ( ) ) ) ;
}
Novamente, uma interface mais amigável com os métodos acima integrados chegará na próxima atualização.
feito com? e ?