Этот модуль предназначен для загрузки каждого mp3-файла из RSS-канала Patreon.
В настоящее время он находится в альфа-состоянии и очень хорошо работает для моего конкретного варианта использования, а для других вариантов использования требуется немного усилий. Следующее обновление предложит улучшенный объект параметров для управления различными аспектами по вашему вкусу. Прямо сейчас он просто загрузит каждый файл типа audio/mpeg из RSS-канала в текущий каталог.
Вам потребуется получить индивидуальную RSS-ссылку с веб-сайта кампании patreon (patreon.com -> боковая панель в разделе «Членство» -> индивидуальная кампания -> вкладка «Членство» -> быстрые ссылки -> «Слушать в других приложениях подкастов»).
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 ( ) ) ) ;
}
Опять же, в следующем обновлении появится более удобный интерфейс со встроенными вышеперечисленными методами.
сделано с? и ?