From 7696b0e9a716d0c20e96869f268c11d5b493e0c8 Mon Sep 17 00:00:00 2001 From: Harry Fuecks Date: Fri, 10 Nov 2006 15:08:18 +0000 Subject: [PATCH] Attempt to default to feed updated_parsed - response to problem handling RSS 0.9x feed - see http://lists.planetplanet.org/archives/devel/2006-November/001273.html --- planet/reconstitute.py | 11 ++++++++++- planet/spider.py | 6 ++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/planet/reconstitute.py b/planet/reconstitute.py index 6000668..5841859 100644 --- a/planet/reconstitute.py +++ b/planet/reconstitute.py @@ -225,7 +225,7 @@ def reconstitute(feed, entry): content(xentry, 'content', entry.get('content',[None])[0], bozo) content(xentry, 'rights', entry.get('rights_detail',None), bozo) - date(xentry, 'updated', entry.get('updated_parsed',time.gmtime())) + date(xentry, 'updated', entry_updated(feed.feed, entry, time.gmtime())) date(xentry, 'published', entry.get('published_parsed',None)) for tag in entry.get('tags',[]): @@ -251,3 +251,12 @@ def reconstitute(feed, entry): xentry.appendChild(xsource) return xdoc + +def entry_updated(feed, entry, default = None): + chks = ((entry, 'updated_parsed'), + (entry, 'published_parsed'), + (feed, 'updated_parsed'),) + for node, field in chks: + if node.has_key(field) and node[field]: + return node[field] + return default diff --git a/planet/spider.py b/planet/spider.py index 06bd3e0..be98353 100644 --- a/planet/spider.py +++ b/planet/spider.py @@ -241,10 +241,8 @@ def spiderFeed(feed, only_if_new=0): # get updated-date either from the entry or the cache (default to now) mtime = None - if not entry.has_key('updated_parsed'): - if entry.has_key('published_parsed'): - entry['updated_parsed'] = entry.published_parsed - if entry.has_key('updated_parsed') and entry['updated_parsed']: + entry['updated_parsed'] = reconstitute.entry_updated(data.feed, entry) + if entry['updated_parsed']: try: mtime = calendar.timegm(entry.updated_parsed) if mtime > time.time(): mtime = None