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