Sync to trunk.

This commit is contained in:
John Schember 2009-12-04 17:11:21 -05:00
commit d50c5b4f41
19 changed files with 6611 additions and 6082 deletions

View File

@ -4,6 +4,73 @@
# for important features/bug fixes.
# Also, each release can have new and improved recipes.
- version: 0.6.25
date: 2009-12-04
new features:
- title: "Adroid devices: Allow user to customize the directory for sending books"
description: >
Now the user can choose what directory on the device calibre will send
books to. This allows calibre to support different reading software on Android devices
apart from just WordPlayer.
tickets: [3392]
- title: "LIT Input: Handle LIT files that are really TXT files"
description: >
Some poorly created LIT files are really just one big block of text. Now calibre
will automatically convert that TXT into paragraphs based on blank lines. This
will prevent errors when trying to convert the LIT files to EPUB.
- title: Device support for Motorola Droid (windows and linux)
- title: Various improvements to metadata reading for eReader and PML books
- title: Allow adding of multiple empty books at once
- title: "Device drivers: Allow one driver to handle devices from multiple vendors. Also allow device interface plugins to override the USB device detection code"
- title: "calibre-debug: Remove --develop-from option as it is no longer needed"
bug fixes:
- title: "Content server: Fix password protected access from Adroid devices"
tickets: [3952]
- title: "calibredb with output format stanza once again escapes URLs"
tickets: [4084]
- title: Implement work around for a CSS bug in Adobe Digital Editions that causes it to crash
description: >
If the CSS contains the declaration font-size: medium instead of font-size: normal
Adobe Digital Editions will crash. calibre will now automatically replace medium with
normal.
- title: "PML Output: Only create \\a and \\U tags for supported characters."
- title: "PML Input: Allow for images in top-level bookname_image and images directories"
- title: Allow sending of MOBI files to the PocketBook 360
tickets: [4118]
- title: "JetBook driver: Don't incorrectly nest folders when uploading books by the same author"
tickets: [4120]
- title: Speed up download of the free Economist recipe
- title: "FB2 Input: Workaround for unescaped amerpsands"
new recipes:
- title: Money Control
author: kwetal
- title: Vrij Nederland
author: kwetal
improved recipes:
- Times Online
- Endgadget
- Business Week
- version: 0.6.25
date: 2009-11-30

View File

@ -11,7 +11,7 @@ from calibre.ebooks.BeautifulSoup import Tag
class Timesonline(BasicNewsRecipe):
title = 'The Times Online'
__author__ = 'Darko Miletic'
__author__ = 'Darko Miletic and Sujata Raman'
description = 'UK news'
publisher = 'timesonline.co.uk'
category = 'news, politics, UK'
@ -20,21 +20,43 @@ class Timesonline(BasicNewsRecipe):
no_stylesheets = True
use_embedded_content = False
simultaneous_downloads = 1
encoding = 'cp1252'
encoding = 'ISO-8859-1'
lang = 'en-UK'
remove_javascript = True
language = 'en'
recursions = 9
match_regexps = [r'http://www.timesonline.co.uk/.*page=[2-9]']
html2lrf_options = [
'--comment', description
, '--category', category
, '--publisher', publisher
keep_only_tags = [
dict(name='div', attrs= {'id':['region-column1and2-layout2']}),
{'class' : ['subheading']},
dict(name='div', attrs= {'id':['dynamic-image-holder']}),
dict(name='div', attrs= {'class':['article-author']}),
dict(name='div', attrs= {'id':['related-article-links']}),
]
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"'
remove_tags = [
dict(name=['embed','object','form','iframe']),
dict(name='span', attrs = {'class':'float-left padding-left-8 padding-top-2'}),
dict(name='div', attrs= {'id':['region-footer','region-column2-layout2','grid-column4','login-status','comment-sort-order']}),
dict(name='div', attrs= {'class': ['debate-quote-container','clear','your-comment','float-left related-attachements-container','float-left padding-bottom-5 padding-top-8','puff-top']}),
dict(name='span', attrs = {'id': ['comment-count']}),
dict(name='ul',attrs = {'id': 'read-all-comments'}),
dict(name='a', attrs = {'class':'reg-bold'}),
]
remove_tags = [dict(name=['embed','object'])]
remove_tags_after = dict(name='div', attrs={'class':'bg-666'})
extra_css = '''
.small{font-family :Arial,Helvetica,sans-serif; font-size:x-small;}
.byline{font-family :Arial,Helvetica,sans-serif; font-size:x-small; background:#F8F1D8;}
.color-666{font-family :Arial,Helvetica,sans-serif; font-size:x-small; color:#666666; }
h1{font-family:Georgia,Times New Roman,Times,serif;font-size:large; }
.color-999 {color:#999999;}
.x-small {font-size:x-small;}
#related-article-links{font-family :Arial,Helvetica,sans-serif; font-size:small;}
h2{color:#333333;font-family :Georgia,Times New Roman,Times,serif; font-size:small;}
p{font-family :Arial,Helvetica,sans-serif; font-size:small;}
'''
feeds = [
(u'Top stories from Times Online', u'http://www.timesonline.co.uk/tol/feeds/rss/topstories.xml' ),
@ -49,18 +71,32 @@ class Timesonline(BasicNewsRecipe):
('Literary Supplement', 'http://www.timesonline.co.uk/tol/feeds/rss/thetls.xml'),
]
def print_version(self, url):
return url + '?print=yes'
def get_cover_url(self):
cover_url = None
index = 'http://www.timesonline.co.uk/tol/newspapers/'
soup = self.index_to_soup(index)
link_item = soup.find(name = 'div',attrs ={'class': "float-left margin-right-15"})
if link_item:
cover_url = 'http://www.timesonline.co.uk' + link_item.img['src']
print cover_url
return cover_url
def get_article_url(self, article):
return article.get('guid', None)
def preprocess_html(self, soup):
soup.html['xml:lang'] = self.lang
soup.html['lang'] = self.lang
mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)])
mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=UTF-8")])
mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=ISO-8859-1")])
soup.head.insert(0,mlang)
soup.head.insert(1,mcharset)
return self.adeify_images(soup)
def postprocess_html(self,soup,first):
for tag in soup.findAll(text = ['Previous Page','Next Page']):
tag.extract()
return soup

View File

@ -2,7 +2,7 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en'
__appname__ = 'calibre'
__version__ = '0.6.25'
__version__ = '0.6.26'
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
import re

View File

@ -54,11 +54,11 @@ class PML2PMLZ(FileTypePlugin):
name = 'PML to PMLZ'
author = 'John Schember'
description = textwrap.dedent(_('''\
Create a PMLZ archive containging the PML file \
and all images in the directory pmlname_img or images \
file containing all linked files. This plugin is run \
every time you add an PML file to the library.\
'''))
Create a PMLZ archive containing the PML file \
and all images in the directory pmlname_img or images \
file containing all linked files. This plugin is run \
every time you add an PML file to the library.\
'''))
version = numeric_version
file_types = set(['pml'])
supported_platforms = ['windows', 'osx', 'linux']
@ -66,18 +66,20 @@ every time you add an PML file to the library.\
def run(self, pmlfile):
import zipfile
from calibre.ptempfile import PersistentTemporaryFile
from calibre.ptempfile import TemporaryDirectory
name = os.path.join(tdir, '_plugin_pml2pmlz.pmlz')
pmlz = zipfile.ZipFile(name, 'w')
pmlz.write(pmlfile)
with TemporaryDirectory('_plugin_pml2pmlz') as tdir:
name = os.path.join(tdir, '_plugin_pml2pmlz.pmlz')
pmlz = zipfile.ZipFile(name, 'w')
pmlz.write(pmlfile)
pml_img = os.path.basename(pmlfile)[0] + '_img'
img_dir = pml_img if os.path.exists(pml_img) else 'images' if os.path.exists(images) else ''
if img_dir:
for image in glob.glob(os.path.join(img_dir, '*.png')):
pmlz.write(image)
pmlz.close()
pml_img = os.path.basename(pmlfile)[0] + '_img'
img_dir = pml_img if os.path.exists(pml_img) else 'images' if \
os.path.exists('images') else ''
if img_dir:
for image in glob.glob(os.path.join(img_dir, '*.png')):
pmlz.write(image)
pmlz.close()
return name

View File

@ -780,6 +780,8 @@ class Manifest(object):
# In particular, it causes tostring to insert xmlns
# declarations, which messes up the coercing logic
idx = data.find('<html')
if idx == -1:
idx = data.find('<HTML')
if idx > -1:
pre = data[:idx]
data = data[idx:]

View File

@ -229,6 +229,8 @@ class CSSFlattener(object):
if 'bgcolor' in node.attrib:
cssdict['background-color'] = node.attrib['bgcolor']
del node.attrib['bgcolor']
if cssdict.get('font-weight', '').lower() == 'medium':
cssdict['font-weight'] = 'normal' # ADE chokes on font-weight medium
if not self.context.disable_font_rescaling:
_sbase = self.sbase if self.sbase is not None else \
self.context.source.fbase

View File

@ -9,10 +9,12 @@ from calibre.utils.logging import Log
from calibre.customize.conversion import OptionRecommendation, DummyReporter
def gui_convert(input, output, recommendations, notification=DummyReporter(),
abort_after_input_dump=False):
abort_after_input_dump=False, log=None):
recommendations = list(recommendations)
recommendations.append(('verbose', 2, OptionRecommendation.HIGH))
plumber = Plumber(input, output, Log(), report_progress=notification,
if log is None:
log = Log()
plumber = Plumber(input, output, log, report_progress=notification,
abort_after_input_dump=abort_after_input_dump)
plumber.merge_ui_recommendations(recommendations)

View File

@ -196,7 +196,15 @@ When you first run |app|, it will ask you for a folder in which to store your bo
Why doesn't |app| let me store books in my own directory structure?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The whole point of |app|'s library management features is that they provide a search and sort based interface for locating books that is *much* more efficient than any possible directory scheme you could come up with for your collection. Indeed, once you become comfortable using |app|'s interface to find, sort and browse your collection, you wont ever feel the need to hunt through the files on your disk to find a book again. By managing books in its own directory struture of Author -> Title -> Book files, |app| is able to achieve a high level of reliability and standardization.
The whole point of |app|'s library management features is that they provide a search and sort based interface for locating books that is *much* more efficient than any possible directory scheme you could come up with for your collection. Indeed, once you become comfortable using |app|'s interface to find, sort and browse your collection, you wont ever feel the need to hunt through the files on your disk to find a book again. By managing books in its own directory struture of Author -> Title -> Book files, |app| is able to achieve a high level of reliability and standardization. To illustrate why a search/tagging based interface is superior to folders, consider the following. Suppose your book collection is nicely sorted into folders with the following scheme::
Genre -> Author -> Series -> ReadStatus
Now this makes it very easy to find for example all science fiction books by Isaac Asimov in the Foundation series. But suppose you want to find all unread science fiction books. There's no easy way to do this with this folder scheme, you would instead need a folder scheme that looks like::
ReadStatus -> Genre -> Author -> Series
In |app|, you would instead use tags to mark genre and read status and then just use a simple search query like ``tag:scifi and not tag:read``. |app| even has a nice graphical interface, so you don't need to learn its search language instead you can just click on tags to include or exclude them from the search.
Why doesn't |app| have a column for foo?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -234,7 +242,7 @@ If you are reasonably proficient with computers, you can teach |app| to download
Otherwise, you can register a request for a particular news site by adding a comment `here <http://bugs.calibre-ebook.com/ticket/405>`_.
Can I use web2disk to download an arbitrary website?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``web2disk http://mywebsite.com``
Miscellaneous

File diff suppressed because it is too large Load Diff

View File

@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: calibre 0.6.25\n"
"POT-Creation-Date: 2009-12-02 15:27+MST\n"
"PO-Revision-Date: 2009-12-02 15:27+MST\n"
"Project-Id-Version: calibre 0.6.26\n"
"POT-Creation-Date: 2009-12-04 13:21+MST\n"
"PO-Revision-Date: 2009-12-04 13:21+MST\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@ -39,8 +39,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:256
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:259
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:359
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:23
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:45
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:35
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:60
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62
@ -53,8 +53,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:894
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:18
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:40
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:22
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:48
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44
@ -66,9 +66,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:893
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:898
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:958
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:895
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:900
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:960
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
@ -118,7 +118,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1003
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211
#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
#: /home/kovid/work/calibre/src/calibre/library/database.py:913
#: /home/kovid/work/calibre/src/calibre/library/database2.py:702
#: /home/kovid/work/calibre/src/calibre/library/database2.py:714
@ -155,55 +155,63 @@ msgstr ""
msgid "Metadata writer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:13
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:14
msgid "Follow all local links in an HTML file and create a ZIP file containing all linked files. This plugin is run every time you add an HTML file to the library."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:48
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:49
msgid "Character encoding for the input HTML files. Common choices include: cp1252, latin1, iso-8859-1 and utf-8."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:56
msgid " Create a PMLZ archive containing the PML file and all images in the directory pmlname_img or images file containing all linked files. This plugin is run every time you add an PML file to the library. "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:87
msgid "Character encoding for the input PML files. Should ways be: cp1252."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:94
msgid "Extract cover from comic files"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:77
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:89
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:99
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:109
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:120
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:130
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:140
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:150
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:160
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:170
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:181
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:192
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:225
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:236
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:246
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:256
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:115
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:127
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:137
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:147
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:158
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:168
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:178
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:188
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:198
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:208
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:219
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:230
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:242
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:263
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:274
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:284
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:294
msgid "Read metadata from %s files"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:215
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:253
msgid "Read metadata from ebooks in RAR archives"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:267
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:305
msgid "Read metadata from ebooks in ZIP archives"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:278
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:288
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:298
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:320
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:331
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:316
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:326
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:336
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:358
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:369
msgid "Set metadata in %s files"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:309
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:347
msgid "Set metadata from %s files"
msgstr ""
@ -982,7 +990,7 @@ msgid "Normally, if the input file has no cover and you don't specify one, a def
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:126
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:114
#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:101
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:"
@ -1511,7 +1519,7 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
msgid "Cover"
msgstr ""
@ -1540,70 +1548,70 @@ msgstr ""
msgid "All articles"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Title Page"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
msgid "Index"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Glossary"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Acknowledgements"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "Bibliography"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "Colophon"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Copyright"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Dedication"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Epigraph"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334
msgid "Foreword"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335
msgid "List of Illustrations"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336
msgid "List of Tables"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337
msgid "Notes"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338
msgid "Preface"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339
msgid "Main Text"
msgstr ""
@ -1663,11 +1671,11 @@ msgstr ""
msgid "Generate an Adobe \"page-map\" file if pagination information is available."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:119
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:126
msgid "Footnotes"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:128
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:135
msgid "Sidebar"
msgstr ""
@ -2753,7 +2761,7 @@ msgid "RB Output"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1416
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1420
msgid "Choose the format to view"
msgstr ""
@ -3361,7 +3369,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1090
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1094
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr ""
@ -3997,7 +4005,7 @@ msgid "Choose formats for "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:921
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:925
msgid "Books"
msgstr ""
@ -4832,52 +4840,52 @@ msgstr ""
msgid "Configure"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:25
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:24
msgid "Use the library located at the specified path."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:27
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:26
msgid "Start minimized to system tray."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:29
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28
msgid "Log debugging information to console"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:31
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30
msgid "Do not check for updates"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:79
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:80
msgid "If you are sure it is not running"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:81
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82
msgid "Cannot Start "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:82
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:83
msgid "%s is already running."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:86
msgid "may be running in the system tray, in the"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:88
msgid "upper right region of the screen."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:90
msgid "lower right region of the screen."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93
msgid "try rebooting your computer."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107
msgid "try deleting the file"
msgstr ""
@ -5185,7 +5193,7 @@ msgid "Save to disk in a single directory"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1518
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1522
msgid "Save only %s format to disk"
msgstr ""
@ -5220,7 +5228,7 @@ msgid "Calibre Library"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:464
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1661
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1665
msgid "Choose a location for your ebook library."
msgstr ""
@ -5255,252 +5263,260 @@ msgid ""
" "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:913
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:956
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:872
msgid "How many empty books?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:873
msgid "How many empty boks should be added?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:917
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:960
msgid "Uploading books to device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:922
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:926
msgid "EPUB Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:923
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:927
msgid "LRF Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:924
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:928
msgid "HTML Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:925
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:929
msgid "LIT Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:926
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:930
msgid "MOBI Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:927
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:931
msgid "Text books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:928
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:932
msgid "PDF Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:929
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:933
msgid "Comics"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:930
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:934
msgid "Archives"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:965
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:969
msgid "Failed to read metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:966
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:970
msgid "Failed to read metadata from the following"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:985
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:989
msgid "The selected books will be <b>permanently deleted</b> and the files removed from your computer. Are you sure?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1016
msgid "Deleting books from device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1043
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1047
msgid "Cannot download metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1044
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1101
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1134
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1159
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1271
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1048
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1138
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1163
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1275
msgid "No books selected"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1059
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1063
msgid "social metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1061
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1065
msgid "covers"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1061
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1065
msgid "metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1063
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1067
msgid "Downloading %s for %d book(s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1089
msgid "Failed to download some metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1086
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1090
msgid "Failed to download metadata for the following:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1089
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1093
msgid "Failed to download metadata:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1100
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1133
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1104
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1137
msgid "Cannot edit metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1158
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1162
msgid "Cannot save to disk"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1161
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1165
msgid "Choose destination directory"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1188
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1192
msgid "Error while saving"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1189
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1193
msgid "There was an error while saving."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1196
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1197
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201
msgid "Could not save some books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1198
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202
msgid "Click the show details button to see which ones."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221
msgid "Fetching news from "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1230
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1234
msgid " fetched."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1270
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1274
msgid "Cannot convert"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1299
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1303
msgid "Starting conversion of %d book(s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1410
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1429
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
msgid "No book selected"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1410
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1460
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1464
msgid "Cannot view"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1428
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1432
msgid "Cannot open folder"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1445
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1449
msgid "Multiple Books Selected"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1446
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450
msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1461
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
msgid "%s has no available formats."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1502
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1506
msgid "Cannot configure"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1503
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
msgid "Cannot configure while there are running jobs."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1546
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1550
msgid "No detailed info available"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1547
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551
msgid "No detailed information is available for books on the device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1599
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1603
msgid "Error talking to device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1600
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1623
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1641
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
msgid "Conversion Error"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1624
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1628
msgid "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must first remove the DRM using third party tools."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1642
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
msgid "<b>Failed</b>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1670
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674
msgid "Invalid library location"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1675
msgid "Could not access %s. Using %s as the library."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1719
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1723
msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1744
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1748
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1747
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1751
msgid ""
" is communicating with the device!<br>\n"
" Quitting may cause corruption on the device.<br>\n"
" Are you sure you want to quit?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1751
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1755
msgid "WARNING: Active jobs"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1803
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1807
msgid "will keep running in the system tray. To close it, choose <b>Quit</b> in the context menu of the system tray."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1822
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1826
msgid "<span style=\"color:red; font-weight:bold\">Latest version: <a href=\"%s\">%s</a></span>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834
msgid "Update available"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1831
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835
msgid "%s has been updated to version %s. See the <a href=\"http://calibre-ebook.com/whats-new\">new features</a>. Visit the download page?"
msgstr ""
@ -6153,68 +6169,68 @@ msgstr ""
msgid "The maximum number of matches to return per OPDS query. This affects Stanza, WordPlayer, etc. integration."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:120
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
msgid "Path to the calibre library. Default is to use the path stored in the settings."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:201
#: /home/kovid/work/calibre/src/calibre/library/cli.py:200
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:209
#: /home/kovid/work/calibre/src/calibre/library/cli.py:208
msgid ""
"The fields to display when listing books in the database. Should be a comma separated list of fields.\n"
"Available fields: %s\n"
"Default: %%default. The special field \"all\" can be used to select all fields. Only has effect in the text output format."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:211
#: /home/kovid/work/calibre/src/calibre/library/cli.py:210
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:213
#: /home/kovid/work/calibre/src/calibre/library/cli.py:212
msgid "Sort results in ascending order"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:215
#: /home/kovid/work/calibre/src/calibre/library/cli.py:214
msgid "Filter the results by the search query. For the format of the search query, please see the search related documentation in the User Manual. Default is to do no filtering."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:217
#: /home/kovid/work/calibre/src/calibre/library/cli.py:216
msgid "The maximum width of a single line in the output. Defaults to detecting screen size."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:218
#: /home/kovid/work/calibre/src/calibre/library/cli.py:217
msgid "The string used to separate fields. Default is a space."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:219
#: /home/kovid/work/calibre/src/calibre/library/cli.py:218
msgid "The prefix for all file paths. Default is the absolute path to the library folder."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:222
#: /home/kovid/work/calibre/src/calibre/library/cli.py:221
msgid "The format in which to output the data. Available choices: %s. Defaults is text."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:235
#: /home/kovid/work/calibre/src/calibre/library/cli.py:234
msgid "Invalid fields. Available fields:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:242
#: /home/kovid/work/calibre/src/calibre/library/cli.py:241
msgid "Invalid sort field. Available fields:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:313
#: /home/kovid/work/calibre/src/calibre/library/cli.py:312
msgid "The following books were not added as they already exist in the database (see --duplicates option):"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:336
#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@ -6222,49 +6238,49 @@ msgid ""
"the directory related options below.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:345
#: /home/kovid/work/calibre/src/calibre/library/cli.py:344
msgid "Assume that each directory has only a single logical book and that all files in it are different e-book formats of that book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:347
#: /home/kovid/work/calibre/src/calibre/library/cli.py:346
msgid "Process directories recursively"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
#: /home/kovid/work/calibre/src/calibre/library/cli.py:348
msgid "Add books to database even if they already exist. Comparison is done based on book titles."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:359
#: /home/kovid/work/calibre/src/calibre/library/cli.py:358
msgid "You must specify at least one file to add"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:375
#: /home/kovid/work/calibre/src/calibre/library/cli.py:374
msgid ""
"%prog remove ids\n"
"\n"
"Remove the books identified by ids from the database. ids should be a comma separated list of id numbers (you can get id numbers by using the list command). For example, 23,34,57-85\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:390
#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "You must specify at least one book to remove"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:409
#: /home/kovid/work/calibre/src/calibre/library/cli.py:408
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
"Add the ebook in ebook_file to the available formats for the logical book identified by id. You can get id by using the list command. If the format already exists, it is replaced.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:424
#: /home/kovid/work/calibre/src/calibre/library/cli.py:423
msgid "You must specify an id and an ebook file"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:429
#: /home/kovid/work/calibre/src/calibre/library/cli.py:428
msgid "ebook file must have an extension"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:437
#: /home/kovid/work/calibre/src/calibre/library/cli.py:436
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@ -6272,11 +6288,11 @@ msgid ""
"Remove the format fmt from the logical book identified by id. You can get id by using the list command. fmt should be a file extension like LRF or TXT or EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:454
#: /home/kovid/work/calibre/src/calibre/library/cli.py:453
msgid "You must specify an id and a format"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:472
#: /home/kovid/work/calibre/src/calibre/library/cli.py:471
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@ -6285,15 +6301,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
msgid "Print metadata in OPF form (XML)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:489
#: /home/kovid/work/calibre/src/calibre/library/cli.py:488
msgid "You must specify an id"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:502
#: /home/kovid/work/calibre/src/calibre/library/cli.py:501
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@ -6304,11 +6320,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
#: /home/kovid/work/calibre/src/calibre/library/cli.py:517
msgid "You must specify an id and a metadata file"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:538
#: /home/kovid/work/calibre/src/calibre/library/cli.py:537
msgid ""
"%prog export [options] ids\n"
"\n"
@ -6317,27 +6333,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:546
#: /home/kovid/work/calibre/src/calibre/library/cli.py:545
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:548
#: /home/kovid/work/calibre/src/calibre/library/cli.py:547
msgid "Export books to the specified directory. Default is"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:550
#: /home/kovid/work/calibre/src/calibre/library/cli.py:549
msgid "Export all books into a single directory"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:557
#: /home/kovid/work/calibre/src/calibre/library/cli.py:556
msgid "Specifying this switch will turn this behavior off."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:580
#: /home/kovid/work/calibre/src/calibre/library/cli.py:579
msgid "You must specify some ids or the %s option"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/cli.py:592
#: /home/kovid/work/calibre/src/calibre/library/cli.py:591
msgid ""
"%%prog command [options] [arguments]\n"
"\n"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,7 @@ MD5_SESS = "MD5-sess"
AUTH = "auth"
AUTH_INT = "auth-int"
SUPPORTED_ALGORITHM = (MD5, MD5_SESS)
SUPPORTED_ALGORITHM = ('md5', MD5, MD5_SESS)
SUPPORTED_QOP = (AUTH, AUTH_INT)
################################################################################
@ -225,7 +225,7 @@ def _A1(params, password):
algorithm = params.get ("algorithm", MD5)
H = DIGEST_AUTH_ENCODERS[algorithm]
if algorithm == MD5:
if algorithm in (MD5, 'md5'):
# If the "algorithm" directive's value is "MD5" or is
# unspecified, then A1 is:
# A1 = unq(username-value) ":" unq(realm-value) ":" passwd