aboutsummaryrefslogtreecommitdiffstats
path: root/aggregator/management/commands/load_feeds.py
blob: 3f698e4fcc13d0ff7fbcfcf472c23ef156a0860d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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()