KG updates

This commit is contained in:
GRiker 2011-01-22 02:58:30 -07:00
commit a8b9c46e32
6 changed files with 274 additions and 108 deletions

View File

@ -8,6 +8,8 @@
date: 2011-01-21
new features:
- title: "0.7.42 is a re-release of 0.7.41, because conversion to MOBI was broken in 0.7.41"
- title: "Conversions: Replace the remove header/footer options with a more geenric search replace option, that allows you to not only remove but also replace text"
- title: "Conversion: The preprocess html option has now become a new 'Heuristic Processing' option which allows you to control exactly which heuristics are used"

View File

@ -1,5 +1,5 @@
__license__ = 'GPL v3'
__copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>'
__copyright__ = '2010-2011, Darko Miletic <darko.miletic at gmail.com>'
'''
nrc.nl
'''
@ -15,13 +15,18 @@ class Pagina12(BasicNewsRecipe):
oldest_article = 2
max_articles_per_feed = 200
no_stylesheets = True
encoding = 'cp1252'
encoding = 'utf8'
use_embedded_content = False
language = 'nl'
country = 'NL'
remove_empty_feeds = True
masthead_url = 'http://www.nrc.nl/nrc.nl/images/logo_nrc.png'
extra_css = ' body{font-family: Verdana,Arial,Helvetica,sans-serif } img{margin-bottom: 0.4em} h1,h2,h3{text-align:left} '
extra_css = """
body{font-family: Georgia,serif }
img{margin-bottom: 0.4em; display: block}
.bijschrift,.sectie{font-size: x-small}
.sectie{color: gray}
"""
conversion_options = {
'comment' : description
@ -30,21 +35,42 @@ class Pagina12(BasicNewsRecipe):
, 'language' : language
}
keep_only_tags = [dict(name='div',attrs={'class':'article clearfix'})]
keep_only_tags = [dict(attrs={'class':'uitstekendekeus'})]
remove_tags = [
dict(name=['meta','base','link','object','embed'])
,dict(attrs={'class':['reclamespace','tags-and-sharing']})
]
remove_attributes=['lang']
feeds = [
(u'Voorpagina' , u'http://feeds.feedburner.com/NRCHandelsbladVoorpagina' )
,(u'Binnenland' , u'http://feeds.feedburner.com/NRCHandelsbladBinnenland' )
,(u'Buitenland' , u'http://feeds.feedburner.com/NRCHandelsbladBuitenland' )
,(u'Economie' , u'http://feeds.feedburner.com/NRCHandelsbladEconomie' )
,(u'Kunst & Film' , u'http://feeds.feedburner.com/nrc/NRCHandelsbladKunstEnFilm')
,(u'Sport' , u'http://feeds.feedburner.com/NRCHandelsbladSport' )
,(u'Wetenschap ' , u'http://www.nrc.nl/rss/wetenschap' )
(u'Voor nieuws', u'http://www.nrc.nl/nieuws/categorie/nieuws/rss.php' )
,(u'Binnenland' , u'http://www.nrc.nl/nieuws/categorie/binnenland/rss.php' )
,(u'Buitenland' , u'http://www.nrc.nl/nieuws/categorie/buitenland/rss.php' )
,(u'Economie' , u'http://www.nrc.nl/nieuws/categorie/economie/rss.php' )
,(u'Cultuur' , u'http://www.nrc.nl/nieuws/categorie/cultuur/rss.php' )
,(u'Sport' , u'http://www.nrc.nl/nieuws/categorie/sport/rss.php' )
,(u'Wetenschap ', u'http://www.nrc.nl/nieuws/categorie/wetenschap-nieuws/rss.php')
]
def print_version(self, url):
return url + '?service=Print'
def preprocess_html(self, soup):
return self.adeify_images(soup)
for item in soup.findAll(style=True):
del item['style']
for item in soup.findAll('a'):
limg = item.find('img')
if item.string is not None:
str = item.string
item.replaceWith(str)
else:
if limg:
item.name = 'div'
atritems =['href','target','rel']
for atit in atritems:
if item.has_key(atit):
del item[atit]
else:
str = self.tag_to_string(item)
item.replaceWith(str)
for item in soup.findAll('img'):
if not item.has_key('alt'):
item['alt'] = 'image'
return soup

View File

@ -84,13 +84,9 @@ def meta_info_to_oeb_metadata(mi, m, log, override_input_metadata=False):
if not mi.is_null('rights'):
m.clear('rights')
m.add('rights', mi.rights)
elif override_input_metadata:
m.clear('rights')
if not mi.is_null('publication_type'):
m.clear('publication_type')
m.add('publication_type', mi.publication_type)
elif override_input_metadata:
m.clear('publication_type')
if not m.timestamp:
m.add('timestamp', isoformat(now()))

View File

@ -35,6 +35,10 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
self.connect(self.button_box, SIGNAL('clicked(QAbstractButton*)'), self.button_clicked)
self.connect(self.regex, SIGNAL('textChanged(QString)'), self.regex_valid)
self.connect(self.test, SIGNAL('clicked()'), self.do_test)
self.connect(self.previous, SIGNAL('clicked()'), self.goto_previous)
self.connect(self.next, SIGNAL('clicked()'), self.goto_next)
self.match_locs = []
def regex_valid(self):
regex = unicode(self.regex.text())
@ -42,17 +46,23 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
try:
re.compile(regex)
self.regex.setStyleSheet('QLineEdit { color: black; background-color: rgba(0,255,0,20%); }')
return True
except:
self.regex.setStyleSheet('QLineEdit { color: black; background-color: rgb(255,0,0,20%); }')
return False
else:
self.regex.setStyleSheet('QLineEdit { color: black; background-color: white; }')
self.preview.setExtraSelections([])
return False
return True
self.match_locs = []
self.next.setEnabled(False)
self.previous.setEnabled(False)
self.occurrences.setText('0')
return False
def do_test(self):
selections = []
self.match_locs = []
if self.regex_valid():
text = unicode(self.preview.toPlainText())
regex = unicode(self.regex.text())
@ -66,9 +76,43 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
es.cursor.setPosition(match.start(), QTextCursor.MoveAnchor)
es.cursor.setPosition(match.end(), QTextCursor.KeepAnchor)
selections.append(es)
self.match_locs.append((match.start(), match.end()))
except:
pass
self.preview.setExtraSelections(selections)
if self.match_locs:
self.next.setEnabled(True)
self.previous.setEnabled(True)
self.occurrences.setText(str(len(self.match_locs)))
def goto_previous(self):
pos = self.preview.textCursor().position()
if self.match_locs:
match_loc = len(self.match_locs) - 1
for i in xrange(len(self.match_locs) - 1, -1, -1):
loc = self.match_locs[i][1]
if pos > loc:
match_loc = i
break
self.goto_loc(self.match_locs[match_loc][1], operation=QTextCursor.Left, n=self.match_locs[match_loc][1] - self.match_locs[match_loc][0])
def goto_next(self):
pos = self.preview.textCursor().position()
if self.match_locs:
match_loc = 0
for i in xrange(len(self.match_locs)):
loc = self.match_locs[i][0]
if pos < loc:
match_loc = i
break
self.goto_loc(self.match_locs[match_loc][0], n=self.match_locs[match_loc][1] - self.match_locs[match_loc][0])
def goto_loc(self, loc, operation=QTextCursor.Right, mode=QTextCursor.KeepAnchor, n=0):
cursor = QTextCursor(self.preview.document())
cursor.setPosition(loc)
if n:
cursor.movePosition(operation, mode, n)
self.preview.setTextCursor(cursor)
def select_format(self, db, book_id):
format = None

View File

@ -6,15 +6,102 @@
<rect>
<x>0</x>
<y>0</y>
<width>662</width>
<height>505</height>
<width>580</width>
<height>503</height>
</rect>
</property>
<property name="windowTitle">
<string>Regex Builder</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="5">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Regex:</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="regex"/>
</item>
<item>
<widget class="QPushButton" name="test">
<property name="text">
<string>Test</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Occurrences:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="occurrences">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>298</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Goto:</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="previous">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Previous</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="next">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Next</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Preview</string>
@ -36,32 +123,28 @@
</layout>
</widget>
</item>
<item row="2" column="4">
<widget class="QDialogButtonBox" name="button_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Regex:</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="regex"/>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>328</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="test">
<property name="text">
<string>Test</string>
<widget class="QDialogButtonBox" name="button_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>

View File

@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: calibre 0.7.41\n"
"POT-Creation-Date: 2011-01-21 12:09+MST\n"
"PO-Revision-Date: 2011-01-21 12:09+MST\n"
"Project-Id-Version: calibre 0.7.42\n"
"POT-Creation-Date: 2011-01-21 14:53+MST\n"
"PO-Revision-Date: 2011-01-21 14:53+MST\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@ -3155,7 +3155,7 @@ msgid "Copy to Clipboard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:222
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:96
msgid "Copy"
msgstr ""
@ -4811,160 +4811,160 @@ msgstr ""
msgid "Tab template for catalog.ui"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:68
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:69
msgid "Bold"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:69
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:70
msgid "Italic"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:72
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:73
msgid "Underline"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:74
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:75
msgid "Strikethrough"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:76
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:77
msgid "Superscript"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:78
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:79
msgid "Subscript"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:80
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:81
msgid "Ordered list"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:82
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:83
msgid "Unordered list"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:86
msgid "Align left"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:88
msgid "Align center"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:90
msgid "Align right"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:92
msgid "Align justified"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:93
msgid "Undo"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:94
msgid "Redo"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:95
msgid "Remove formatting"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:96
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:97
msgid "Paste"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:97
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:98
msgid "Cut"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:100
msgid "Increase Indentation"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:102
msgid "Decrease Indentation"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:103
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:104
msgid "Select all"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:108
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:109
msgid "Foreground color"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:113
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:114
msgid "Background color"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:117
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:118
msgid "Style text block"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:119
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:120
msgid "Style the selected text block"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:124
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:33
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:145
msgid "Normal"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:127
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:128
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:129
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:131
msgid "Heading"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:131
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:132
msgid "Pre-formatted"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:132
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:133
msgid "Blockquote"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:133
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:134
msgid "Address"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:140
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:141
msgid "Insert link"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:142
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:143
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:79
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:84
msgid "Clear"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:160
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:161
msgid "Choose foreground color"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:166
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:167
msgid "Choose background color"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:171
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:172
msgid "Create link"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:172
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:173
msgid "Enter URL"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:516
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:522
msgid "Normal view"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:517
#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:523
msgid "HTML Source"
msgstr ""
@ -7053,13 +7053,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:504
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:186
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:380
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:509
msgid "&Basic metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:466
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:193
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:387
msgid "&Custom metadata"
msgstr ""
@ -7189,18 +7190,18 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:122
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:343
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:350
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:249
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:256
msgid "Could not read cover"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:250
msgid "Could not read cover from %s format"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:351
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:257
msgid "The cover in the %s format is invalid"
msgstr ""
@ -7314,7 +7315,7 @@ msgid " The red color warns that the current title sort does not match the curre
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:47
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:221
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:384
@ -7323,13 +7324,13 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:479
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:443
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:347
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:351
msgid "Save changes and edit the metadata of %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:476
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:42
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:44
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:103
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:211
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:401
@ -7382,12 +7383,12 @@ msgid "You must specify at least one of ISBN, Title, Authors or Publisher"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:944
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:395
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:302
msgid "Permission denied"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:945
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:396
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:303
msgid "Could not open %s. Is it being used by another program?"
msgstr ""
@ -7521,6 +7522,7 @@ msgid "Update metadata from the metadata in the selected format"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:464
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:568
msgid "&Comments"
msgstr ""
@ -8958,19 +8960,32 @@ msgstr ""
msgid "Details"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:64
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:302
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:208
msgid "Edit Metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:426
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:587
msgid "Change cover"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:280
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:474
msgid "Co&mments"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:496
msgid "&Metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:501
msgid "&Cover and formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:556
msgid "C&ustom metadata"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/__init__.py:36
msgid "Restore settings to default values. You have to click Apply to actually save the default settings."
msgstr ""