blob: 2bee069b8c3acb033797356bb38b9299f34a2937 (
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import feedparser
import datetime
import markdown
from django.core.management.base import BaseCommand
from aggregator.models import Feed, Post
class Command(BaseCommand):
help = "Load data from saved feeds."
def handle(self, *args, **kwargs):
feeds = Feed.objects.all()
for feed in feeds:
parsed = feedparser.parse(feed.get_feed_url())
if 'title' in parsed.feed:
feed.title = parsed.feed.title
for entry in parsed.entries:
if not Post.objects.filter(post_id=entry.id).exists():
dt = entry.updated_parsed \
or entry.published_parsed
if dt:
updated = datetime.datetime(
dt.tm_year, dt.tm_mon, dt.tm_mday,
dt.tm_hour, dt.tm_min, dt.tm_sec)
else:
updated = datetime.datetime.now()
post = Post(post_id=entry.id,
title=entry.title,
remote_url=entry.link,
updated=updated,
feed=feed)
if 'content' in entry.keys():
content = entry.content[0]['value']
else:
content = entry.summary
if feed.with_markdown:
post.body = markdown.markdown(content)
else:
post.body = content
post.save()
if feed.post_set.count() > 0:
last_updated = feed.post_set.order_by('-updated')[0]\
.updated
feed.updated = last_updated
feed.save()
|