diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py
index 3bf1f03b42..214c52f14a 100644
--- a/src/calibre/__init__.py
+++ b/src/calibre/__init__.py
@@ -31,6 +31,8 @@ mimetypes.add_type('application/adobe-page-template+xml', '.xpgt')
mimetypes.add_type('application/x-font-opentype', '.otf')
mimetypes.add_type('application/x-font-truetype', '.ttf')
mimetypes.add_type('application/oebps-package+xml', '.opf')
+mimetypes.add_type('application/ereader', '.pdb')
+guess_type = mimetypes.guess_type
import cssutils
cssutils.log.setLevel(logging.WARN)
diff --git a/src/calibre/library/server.py b/src/calibre/library/server.py
index ba81151517..a93f16d981 100644
--- a/src/calibre/library/server.py
+++ b/src/calibre/library/server.py
@@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en'
HTTP server for remote access to the calibre database.
'''
-import sys, textwrap, mimetypes, operator, os, re, logging
+import sys, textwrap, operator, os, re, logging
from itertools import repeat
from logging.handlers import RotatingFileHandler
from datetime import datetime
@@ -18,7 +18,7 @@ from PyQt4.Qt import QImage, QApplication, QByteArray, Qt, QBuffer
from calibre.constants import __version__, __appname__
from calibre.utils.genshi.template import MarkupTemplate
-from calibre import fit_image
+from calibre import fit_image, guess_type
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
@@ -77,7 +77,7 @@ class LibraryServer(object):
urn:calibre:${record[FM['id']]}
${authors}
${record[FM['timestamp']].strftime('%Y-%m-%dT%H:%M:%S+00:00')}
-
+
@@ -218,7 +218,7 @@ class LibraryServer(object):
fmt = self.db.format(id, format, index_is_id=True, as_file=True, mode='rb')
if fmt is None:
raise cherrypy.HTTPError(404, 'book: %d does not have format: %s'%(id, format))
- mt = mimetypes.guess_type('dummy.'+format.lower())[0]
+ mt = guess_type('dummy.'+format.lower())[0]
if mt is None:
mt = 'application/octet-stream'
cherrypy.response.headers['Content-Type'] = mt
@@ -258,8 +258,9 @@ class LibraryServer(object):
for record in iter(self.db):
r = record[FIELD_MAP['formats']]
r = r.upper() if r else ''
- if 'EPUB' in r:
- authors = ' & '.join([i.replace('|', ',') for i in record[FIELD_MAP['authors']].split(',')])
+ if 'EPUB' in r or 'PDB' in r:
+ authors = ' & '.join([i.replace('|', ',') for i in
+ record[FIELD_MAP['authors']].split(',')])
extra = []
rating = record[FIELD_MAP['rating']]
if rating > 0:
@@ -270,12 +271,18 @@ class LibraryServer(object):
extra.append('TAGS: %s
'%', '.join(tags.split(',')))
series = record[FIELD_MAP['series']]
if series:
- extra.append('SERIES: %s [%d]
'%(series, record[FIELD_MAP['series_index']]))
- books.append(self.STANZA_ENTRY.generate(authors=authors,
- record=record, FM=FIELD_MAP,
- port=self.opts.port,
- extra = ''.join(extra),
- ).render('xml').decode('utf8'))
+ extra.append('SERIES: %s [%d]
'%(series,
+ record[FIELD_MAP['series_index']]))
+ fmt = 'epub' if 'EPUB' in r else 'pdb'
+ mimetype = guess_type('dummy.'+fmt)[0]
+ books.append(self.STANZA_ENTRY.generate(
+ authors=authors,
+ record=record, FM=FIELD_MAP,
+ port=self.opts.port,
+ extra = ''.join(extra),
+ mimetype=mimetype,
+ fmt=fmt,
+ ).render('xml').decode('utf8'))
updated = self.db.last_modified()
cherrypy.response.headers['Last-Modified'] = self.last_modified(updated)