lib.itmens/catalog/jobs/podcast.py

33 lines
1 KiB
Python

from datetime import timedelta
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.")