Update the podcastmanager

This commit is contained in:
mfcar 2023-10-03 12:33:46 +01:00
parent aefcc4490f
commit 309f5ef5e3
No known key found for this signature in database

View file

@ -285,14 +285,14 @@ class PodcastManager {
Logger.error(`[PodcastManager] checkPodcastForNewEpisodes no feed url for ${podcastLibraryItem.media.metadata.title} (ID: ${podcastLibraryItem.id})`) Logger.error(`[PodcastManager] checkPodcastForNewEpisodes no feed url for ${podcastLibraryItem.media.metadata.title} (ID: ${podcastLibraryItem.id})`)
return false return false
} }
var feed = await getPodcastFeed(podcastLibraryItem.media.metadata.feedUrl) let feed = await getPodcastFeed(podcastLibraryItem.media.metadata.feedUrl)
if (!feed || !feed.episodes) { if (!feed || !feed.episodes) {
Logger.error(`[PodcastManager] checkPodcastForNewEpisodes invalid feed payload for ${podcastLibraryItem.media.metadata.title} (ID: ${podcastLibraryItem.id}, URL: ${podcastLibraryItem.media.metadata.feedUrl})`, feed) Logger.error(`[PodcastManager] checkPodcastForNewEpisodes invalid feed payload for ${podcastLibraryItem.media.metadata.title} (ID: ${podcastLibraryItem.id}, URL: ${podcastLibraryItem.media.metadata.feedUrl})`, feed)
return false return false
} }
// Filter new and not already has // Filter new and not already has
var newEpisodes = feed.episodes.filter(ep => ep.publishedAt > dateToCheckForEpisodesAfter && !podcastLibraryItem.media.checkHasEpisodeByFeedUrl(ep.enclosure.url)) let newEpisodes = feed.episodes.filter(ep => ep.publishedAt > dateToCheckForEpisodesAfter && !podcastLibraryItem.media.checkHasEpisodeByFeedUrl(ep.enclosure.url))
if (maxNewEpisodes > 0) { if (maxNewEpisodes > 0) {
newEpisodes = newEpisodes.slice(0, maxNewEpisodes) newEpisodes = newEpisodes.slice(0, maxNewEpisodes)
@ -326,13 +326,22 @@ class PodcastManager {
return newEpisodes return newEpisodes
} }
setFeedHealthStatus(libraryItem, isHealthy) { async setFeedHealthStatus(podcastId, isHealthy) {
libraryItem.media.metadata.feedHealthy = isHealthy const podcast = await Database.podcastModel.findByPk(podcastId)
if (!podcast) return
podcast.feedHealthy = isHealthy
if (isHealthy) { if (isHealthy) {
libraryItem.media.lastSuccessfulFetchAt = Date.now() podcast.lastSuccessfulFetchAt = Date.now()
} }
libraryItem.updatedAt = Date.now() podcast.lastEpisodeCheck = Date.now()
Database.updateLibraryItem(libraryItem) podcast.updatedAt = Date.now()
await Database.podcastModel.update(podcast, {
where: { id: podcastId }
})
return {lastEpisodeCheck: podcast.lastEpisodeCheck, lastSuccessfulFetchAt: podcast.lastSuccessfulFetchAt, feedHealthy: podcast.feedHealthy}
} }
async findEpisode(rssFeedUrl, searchTitle) { async findEpisode(rssFeedUrl, searchTitle) {
@ -408,12 +417,6 @@ class PodcastManager {
queue: this.downloadQueue.filter(item => !libraryId || item.libraryId === libraryId).map(item => item.toJSONForClient()) queue: this.downloadQueue.filter(item => !libraryId || item.libraryId === libraryId).map(item => item.toJSONForClient())
} }
} }
async getPodcastsWithIncomingFeeds() {
const podcasts = await Database.models.podcast.getAllIncomingFeeds()
Logger.info(`[PodcastManager] Fetched ${podcasts.length} podcasts with incoming feeds`)
return podcasts
}
} }
module.exports = PodcastManager module.exports = PodcastManager