def handle(self, *args, **options): for feed in Feed.objects.all(): try: source = feedparser.parse(feed.url) except Exception as e: logger.debug('Failed to fetch feed {} because'.format(feed.name, str(e))) for entry in source.entries: try: created_date = entry.published if entry.published else entry.created # if none of these criteria applies what the f**k fix your invalid garbage rss feed created_date = parse(created_date) except: created_date = timezone.now() try: last_updated = parse(entry.updated) except: last_updated = timezone.now() try: created = False item = Item.objects.get(feed=feed, url=entry.link) if item.last_updated < last_updated: item.content = escape(entry.summary_detail.value) item.last_updated = last_updated item.save() except Item.DoesNotExist: created = True item = Item(feed=feed, url=entry.link, created=created_date, last_updated=last_updated, title=escape(entry.title), content=escape(entry.summary_detail.value)) item.save() logger.debug('{} item with link {} on {}'.format('Created' if created else 'Updated', item.url, item.last_updated))