import sys from django.core.management.base import BaseCommand from podcasts.models import PodcastFeed from podcasts.views import _refresh_feed class Command(BaseCommand): help = 'Refresh podcast feeds (fetch new episodes from RSS)' def add_arguments(self, parser): parser.add_argument('--feed-id', type=int, help='Refresh only this feed ID') parser.add_argument('--limit', type=int, default=0, help='Max number of feeds to refresh') def handle(self, *args, **options): qs = PodcastFeed.objects.all().order_by('last_refreshed_at') if options['feed_id']: qs = qs.filter(pk=options['feed_id']) if options['limit']: qs = qs[: options['limit']] if not qs.exists(): self.stdout.write('No feeds to refresh.') return for feed in qs: try: new_ep = _refresh_feed(feed) self.stdout.write(f'{feed.title}: +{new_ep} episodes') except Exception as e: self.stderr.write(f'ERROR refreshing "{feed.title}" ({feed.rss_url}): {e}')