diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 5cdf03888a..bc0eeea3a2 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -326,7 +326,7 @@ def walk(dir): yield os.path.join(record[0], f) def strftime(fmt, t=None): - ''' A version of strtime that returns unicode strings and tries to handle dates + ''' A version of strftime that returns unicode strings and tries to handle dates before 1900 ''' if t is None: t = time.localtime() diff --git a/src/calibre/library/server.py b/src/calibre/library/server.py index c935b9a0a0..5d96cae511 100644 --- a/src/calibre/library/server.py +++ b/src/calibre/library/server.py @@ -23,7 +23,8 @@ except ImportError: from calibre.constants import __version__, __appname__ from calibre.utils.genshi.template import MarkupTemplate -from calibre import fit_image, guess_type, prepare_string_for_xml +from calibre import fit_image, guess_type, prepare_string_for_xml, \ + strftime as _strftime from calibre.resources import jquery, server_resources, build_time from calibre.library import server_config as config from calibre.library.database2 import LibraryDatabase2, FIELD_MAP @@ -35,6 +36,15 @@ from calibre.ebooks.metadata import fmt_sidx build_time = datetime.strptime(build_time, '%d %m %Y %H%M%S') server_resources['jquery.js'] = jquery +def strftime(fmt='%Y/%m/%d %H:%M:%S', dt=None): + if not hasattr(dt, 'timetuple'): + dt = datetime.now() + dt = dt.timetuple() + try: + return _strftime(fmt, dt) + except: + return _strftime(fmt, datetime.now().timetuple()) + def expose(func): def do(self, *args, **kwargs): @@ -59,7 +69,8 @@ class LibraryServer(object): author_sort="${r[12]}" authors="${authors}" rating="${r[4]}" - timestamp="${r[5].strftime('%Y/%m/%d %H:%M:%S')}" + timestamp="${timestamp}" + pubdate="${pubdate}" size="${r[6]}" isbn="${r[14] if r[14] else ''}" formats="${r[13] if r[13] else ''}" @@ -84,7 +95,7 @@ class LibraryServer(object): ${record[FM['title']]} urn:calibre:${record[FM['id']]} ${authors} - ${record[FM['timestamp']].strftime('%Y-%m-%dT%H:%M:%S+00:00')} + ${timestamp} @@ -318,9 +329,10 @@ class LibraryServer(object): authors=authors, record=record, FM=FIELD_MAP, port=self.opts.port, - extra = ''.join(extra), + extra=''.join(extra), mimetype=mimetype, fmt=fmt, + timestamp=strftime('%Y-%m-%dT%H:%M:%S+00:00', record[5]), ).render('xml').decode('utf8')) updated = self.db.last_modified() @@ -361,7 +373,10 @@ class LibraryServer(object): aus = record[2] if record[2] else __builtin__._('Unknown') authors = '|'.join([i.replace('|', ',') for i in aus.split(',')]) record[10] = fmt_sidx(float(record[10])) - books.append(book.generate(r=record, authors=authors).render('xml').decode('utf-8')) + ts, pd = strftime('%Y/%m/%d %H:%M:%S', record[5]), \ + strftime('%Y/%m/%d %H:%M:%S', record[FIELD_MAP['pubdate']]) + books.append(book.generate(r=record, authors=authors, timestamp=ts, + pubdate=pd).render('xml').decode('utf-8')) updated = self.db.last_modified() cherrypy.response.headers['Content-Type'] = 'text/xml'