diff --git a/src/calibre/constants.py b/src/calibre/constants.py index e34432fa54..5932921e9d 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.4.100' +__version__ = '0.4.101' __author__ = "Kovid Goyal " ''' Various run time constants. diff --git a/src/calibre/gui2/dialogs/config.ui b/src/calibre/gui2/dialogs/config.ui index d9074ee23d..63f3ddd170 100644 --- a/src/calibre/gui2/dialogs/config.ui +++ b/src/calibre/gui2/dialogs/config.ui @@ -78,7 +78,7 @@ - 1 + 0 @@ -86,6 +86,12 @@ + + + 16777215 + 70 + + &Location of ebooks (The ebooks are stored in folders sorted by author and metadata is stored in the file metadata.db) diff --git a/src/calibre/library/server.py b/src/calibre/library/server.py index d1d48145f7..649a950ea7 100644 --- a/src/calibre/library/server.py +++ b/src/calibre/library/server.py @@ -7,10 +7,11 @@ __docformat__ = 'restructuredtext en' HTTP server for remote access to the calibre database. ''' -import sys +import sys, logging from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from calibre.constants import __version__ +from calibre.utils.config import StringConfig, Config class Server(HTTPServer): pass @@ -21,19 +22,35 @@ class DBHandler(BaseHTTPRequestHandler): def set_db(self, db): self.db = db + self.l = logging.getLogger('calibre.server') + self.l.info('calibre-server starting...') -def server(db, port=80): - server = Server(('', port), DBHandler) +def server(db, opts): + return Server(('', opts.port), DBHandler) + +def config(defaults=None): + desc=_('Settings to control the calibre content server') + c = Config('server', desc) if defaults is None else StringConfig(defaults, desc) + + c.add_opt('port', ['-p', '--port'], default=8080, + help=_('The port on which to listen. Default is %default')) + return c + +def option_parser(): + return config().option_parser('%prog '+ _('[options]\n\nStart the calibre content server.')) def main(args=sys.argv): + parser = option_parser() + opts, args = parser.parse_args(args) + from calibre.utils.config import prefs from calibre.library.database2 import LibraryDatabase2 db = LibraryDatabase2(prefs['library_path']) try: print 'Starting server...' - s = server() - s.server_forever() + s = server(db, opts) + s.serve_forever() except KeyboardInterrupt: print 'Server interrupted' s.socket.close() diff --git a/src/calibre/linux.py b/src/calibre/linux.py index d156378fc2..8ae5f4f9bf 100644 --- a/src/calibre/linux.py +++ b/src/calibre/linux.py @@ -37,6 +37,7 @@ entry_points = { 'rtf2lrf = calibre.ebooks.lrf.rtf.convert_from:main', 'web2disk = calibre.web.fetch.simple:main', 'feeds2disk = calibre.web.feeds.main:main', + 'calibre-server = calibre.library.server:main', 'feeds2lrf = calibre.ebooks.lrf.feeds.convert_from:main', 'feeds2epub = calibre.ebooks.epub.from_feeds:main', 'web2lrf = calibre.ebooks.lrf.web.convert_from:main', diff --git a/src/calibre/web/feeds/news.py b/src/calibre/web/feeds/news.py index 3c5be7c7e6..8caee5a346 100644 --- a/src/calibre/web/feeds/news.py +++ b/src/calibre/web/feeds/news.py @@ -502,7 +502,7 @@ class BasicNewsRecipe(object, LoggingInterface): head = soup.find('body') if not head: head = soup.find(True) - style = BeautifulSoup(u''%(self.template_css +'\n\n'+self.extra_css)).find('style') + style = BeautifulSoup(u''%(self.template_css +'\n\n'+(self.extra_css if self.extra_css else ''))).find('style') head.insert(len(head.contents), style) if first_fetch and job_info: url, f, a, feed_len = job_info