lib.itmens/catalog/jobs/podcast.py
2023-10-22 17:46:34 -04:00

35 lines
1.1 KiB
Python

import pprint
from datetime import timedelta
from time import sleep
from loguru import logger
from catalog.common.models import IdType
from catalog.models import Podcast
from catalog.sites import RSS
from common.models import BaseJob, JobManager
@JobManager.register
class PodcastUpdater(BaseJob):
interval = timedelta(hours=2)
def run(self):
logger.info("Podcasts update start.")
count = 0
qs = Podcast.objects.filter(
is_deleted=False, merged_to_item__isnull=True
).order_by("pk")
for p in qs:
if (
p.primary_lookup_id_type == IdType.RSS
and p.primary_lookup_id_value is not None
):
logger.info(f"updating {p}")
c = p.episodes.count()
site = RSS(p.feed_url)
site.scrape_additional_data()
c2 = p.episodes.count()
logger.info(f"updated {p}, {c2-c} new episodes.")
count += c2 - c
logger.info(f"Podcasts update finished, {count} new episodes total.")