diff options
Diffstat (limited to 'aggregator/management/commands/loadfeeds.py')
-rw-r--r-- | aggregator/management/commands/loadfeeds.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/aggregator/management/commands/loadfeeds.py b/aggregator/management/commands/loadfeeds.py new file mode 100644 index 0000000..3f698e4 --- /dev/null +++ b/aggregator/management/commands/loadfeeds.py @@ -0,0 +1,39 @@ +import feedparser +import datetime + +from django.core.management.base import BaseCommand + +from aggregator.models import Feed, Post + +class Command(BaseCommand): + help = "hi" + + def handle(self, *args, **kwargs): + feeds = Feed.objects.all() + + for feed in feeds: + parsed = feedparser.parse(feed.get_feed_url()) + feed.title = parsed.feed.title + + for entry in parsed.entries: + if not Post.objects.filter(post_id=entry.id).exists(): + updated = datetime.datetime( + entry.updated_parsed.tm_year, + entry.updated_parsed.tm_mon, + entry.updated_parsed.tm_mday, + entry.updated_parsed.tm_hour, + entry.updated_parsed.tm_min, + entry.updated_parsed.tm_sec) + + post = Post(post_id=entry.id, + title=entry.title, + body=entry.summary, + remote_url=entry.link, + updated=updated, + feed=feed) + post.save() + + last_updated = Post.objects.filter(feed=feed)\ + .order_by('-updated')[0].updated + feed.updated = last_updated + feed.save() |