diff --git a/server/controllers/PodcastController.js b/server/controllers/PodcastController.js index 19f16476a..afd2c32f1 100644 --- a/server/controllers/PodcastController.js +++ b/server/controllers/PodcastController.js @@ -115,6 +115,13 @@ class PodcastController { res.json({ podcast }) } + async getPodcastsWithInboundFeed(req, res) { + const podcasts = await Database.podcastModel.getAllInboundFeeds() + res.json({ + podcasts + }) + } + async checkPodcastFeed(req, res) { const libraryItem = req.libraryItem const podcast = await getPodcastFeed(libraryItem.media.metadata.feedUrl) diff --git a/server/managers/PodcastManager.js b/server/managers/PodcastManager.js index 19254e170..4ac810443 100644 --- a/server/managers/PodcastManager.js +++ b/server/managers/PodcastManager.js @@ -408,6 +408,12 @@ class PodcastManager { queue: this.downloadQueue.filter(item => !libraryId || item.libraryId === libraryId).map(item => item.toJSONForClient()) } } + + async getPodcastsWithInboundFeed() { + const podcasts = await Database.models.podcast.getAllInboundFeeds() + Logger.info(`[PodcastManager] Fetched all podcasts with feed`) + return podcasts + } } module.exports = PodcastManager diff --git a/server/models/Podcast.js b/server/models/Podcast.js index c2ab917d3..00f0f7b99 100644 --- a/server/models/Podcast.js +++ b/server/models/Podcast.js @@ -120,6 +120,11 @@ class Podcast extends Model { } } + static async getAllInboundFeeds(){ + const podcasts = await this.findAll() + return podcasts.map(p => this.getFromOld(p)) + } + /** * Initialize model * @param {import('../Database').sequelize} sequelize diff --git a/server/routers/ApiRouter.js b/server/routers/ApiRouter.js index 67566cbfb..ad5ef44cc 100644 --- a/server/routers/ApiRouter.js +++ b/server/routers/ApiRouter.js @@ -226,6 +226,7 @@ class ApiRouter { // this.router.post('/podcasts', PodcastController.create.bind(this)) this.router.post('/podcasts/feed', PodcastController.getPodcastFeed.bind(this)) + this.router.get('/podcasts/inboundFeeds', PodcastController.getPodcastsWithInboundFeed.bind(this)) this.router.get('/podcasts/:id/feed', PodcastController.middleware.bind(this), PodcastController.checkPodcastFeed.bind(this)) this.router.post('/podcasts/opml', PodcastController.getFeedsFromOPMLText.bind(this)) this.router.get('/podcasts/:id/checknew', PodcastController.middleware.bind(this), PodcastController.checkNewEpisodes.bind(this))