Merge from trunk

This commit is contained in:
Charles Haley 2011-09-18 09:26:48 +02:00
commit fe976eff7a
8 changed files with 84 additions and 56 deletions

View File

@ -1,35 +1,38 @@
from calibre.web.feeds.news import BasicNewsRecipe
class Cicero(BasicNewsRecipe):
timefmt = ' [%Y-%m-%d]'
title = u'Cicero'
__author__ = 'mad@sharktooth.de'
class BasicUserRecipe1316245412(BasicNewsRecipe):
title = u'Cicero Online'
description = u'Magazin f\xfcr politische Kultur'
oldest_article = 7
publisher = 'Ringier Publishing GmbH'
category = 'news, politics, Germany'
language = 'de'
encoding = 'UTF-8'
__author__ = 'Armin Geller' # 2011-09-17
oldest_article = 7
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
publisher = 'Ringier Publishing'
category = 'news, politics, Germany'
encoding = 'iso-8859-1'
publication_type = 'magazine'
masthead_url = 'http://www.cicero.de/img2/cicero_logo_rss.gif'
auto_cleanup = False
remove_tags = [
dict(name='div', attrs={'id':["header", "navigation", "skip-link", "header-print", "header-print-url", "meta-toolbar", "footer"]}),
dict(name='div', attrs={'class':["region region-sidebar-first column sidebar", "breadcrumb", "breadcrumb-title", "meta", "comment-wrapper",
"field field-name-field-show-teaser-right field-type-list-boolean field-label-above"]}),
dict(name='div', attrs={'title':["Dossier Auswahl"]}),
dict(name='h2', attrs={'class':["title comment-form"]}),
dict(name='form', attrs={'class':["comment-form user-info-from-cookie"]}),
]
feeds = [
(u'Das gesamte Portfolio', u'http://www.cicero.de/rss/rss.php?ress_id='),
#(u'Alle Heft-Inhalte', u'http://www.cicero.de/rss/rss.php?ress_id=heft'),
#(u'Alle Online-Inhalte', u'http://www.cicero.de/rss/rss.php?ress_id=online'),
#(u'Berliner Republik', u'http://www.cicero.de/rss/rss.php?ress_id=4'),
#(u'Weltb\xfchne', u'http://www.cicero.de/rss/rss.php?ress_id=1'),
#(u'Salon', u'http://www.cicero.de/rss/rss.php?ress_id=7'),
#(u'Kapital', u'http://www.cicero.de/rss/rss.php?ress_id=6'),
#(u'Netzst\xfccke', u'http://www.cicero.de/rss/rss.php?ress_id=9'),
#(u'Leinwand', u'http://www.cicero.de/rss/rss.php?ress_id=12'),
#(u'Bibliothek', u'http://www.cicero.de/rss/rss.php?ress_id=15'),
(u'Kolumne - Alle Kolulmnen', u'http://www.cicero.de/rss/rss2.php?ress_id='),
#(u'Kolumne - Schreiber, Berlin', u'http://www.cicero.de/rss/rss2.php?ress_id=35'),
#(u'Kolumne - TV Kritik', u'http://www.cicero.de/rss/rss2.php?ress_id=34')
(u'Das gesamte Portfolio', u'http://www.cicero.de/rss.xml'),
(u'Berliner Republik', u'http://www.cicero.de/berliner-republik.xml'),
(u'Weltb\xfchne', u'http://www.cicero.de/weltbuehne.xml'),
(u'Kapital', u'http://www.cicero.de/kapital.xml'),
(u'Salon', u'http://www.cicero.de/salon.xml'),
(u'Blogs', u'http://www.cicero.de/blogs.xml'), #seems not to be in use at the moment
]
def print_version(self, url):
return 'http://www.cicero.de/page_print.php?' + url.rpartition('?')[2]
return url + '?print'

View File

@ -360,7 +360,7 @@ class MetadataUpdater(object):
if kindle_pdoc and kindle_pdoc in mi.tags:
added_501 = True
update_exth_record((501, str('PDOC')))
update_exth_record((501, b'PDOC'))
if mi.pubdate:
update_exth_record((106, str(mi.pubdate).encode(self.codec, 'replace')))

View File

@ -535,7 +535,7 @@ class MobiWriter(object):
nrecs += 1
# Write cdetype
if not self.is_periodical:
if not self.is_periodical and not self.opts.share_not_sync:
exth.write(pack(b'>II', 501, 12))
exth.write(b'EBOK')
nrecs += 1

View File

@ -29,7 +29,7 @@ class StoreAction(InterfaceAction):
('book', _('book'))]:
func = getattr(self, 'search_%s'%('author_title' if x == 'book'
else x))
ac = cm(x, _('Search for this %s'%t), triggered=func)
ac = cm(x, _('Search for this %s')%t, triggered=func)
setattr(self, 'action_search_by_'+x, ac)
self.store_menu.addSeparator()
self.store_list_menu = self.store_menu.addMenu(_('Stores'))

View File

@ -229,14 +229,14 @@ class CheckLibraryDialog(QDialog):
self.copy_button = QPushButton(_('Copy &to clipboard'))
self.copy_button.setDefault(False)
self.copy_button.clicked.connect(self.copy_to_clipboard)
self.ok_button = QPushButton('&Done')
self.ok_button = QPushButton(_('&Done'))
self.ok_button.setDefault(True)
self.ok_button.clicked.connect(self.accept)
self.delete_button = QPushButton('Delete &marked')
self.delete_button = QPushButton(_('Delete &marked'))
self.delete_button.setToolTip(_('Delete marked files (checked subitems)'))
self.delete_button.setDefault(False)
self.delete_button.clicked.connect(self.delete_marked)
self.fix_button = QPushButton('&Fix marked')
self.fix_button = QPushButton(_('&Fix marked'))
self.fix_button.setDefault(False)
self.fix_button.setEnabled(False)
self.fix_button.setToolTip(_('Fix marked sections (checked fixable items)'))

View File

@ -117,9 +117,9 @@ We just need some information from you:
* What ebook formats does your device support?
* Is there a special directory on the device in which all ebook files should be placed?
* We also need information about your device that |app| will collect automatically. First, if your
device supports SD cards, insert them. Then connect your device. In calibre go to :guilabel:`Preferences->Advanced->Miscellaneous`
device supports SD cards, insert them. Then connect your device to the computer. In calibre go to :guilabel:`Preferences->Advanced->Miscellaneous`
and click the "Debug device detection" button. This will create some debug output. Copy it to a file
and repeat the process, this time with your device disconnected.
and repeat the process, this time with your device disconnected from your computer.
* Send both the above outputs to us with the other information and we will write a device driver for your
device.

View File

@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: calibre 0.8.19\n"
"POT-Creation-Date: 2011-09-16 09:55+MDT\n"
"PO-Revision-Date: 2011-09-16 09:55+MDT\n"
"POT-Creation-Date: 2011-09-17 08:26+MDT\n"
"PO-Revision-Date: 2011-09-17 08:26+MDT\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@ -150,7 +150,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:68
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:775
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:777
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:372
#: /home/kovid/work/calibre/src/calibre/gui2/email.py:185
#: /home/kovid/work/calibre/src/calibre/gui2/email.py:200
@ -4017,7 +4017,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:383
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:194
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:745
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:968
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:970
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:337
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:377
@ -7233,10 +7233,22 @@ msgstr ""
msgid "Copy &to clipboard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:232
msgid "&Done"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:235
msgid "Delete &marked"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:236
msgid "Delete marked files (checked subitems)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:239
msgid "&Fix marked"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:242
msgid "Fix marked sections (checked fixable items)"
msgstr ""
@ -7806,49 +7818,49 @@ msgstr ""
msgid "S/R TEMPLATE ERROR"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:658
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:660
msgid "You must specify a destination when source is a composite field"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:664
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:666
msgid "You must specify a destination identifier type"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:899
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:901
msgid "Search/replace invalid"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:900
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:902
#, python-format
msgid "Search pattern is invalid: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:954
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:956
#, python-format
msgid ""
"Applying changes to %d books.\n"
"Phase {0} {1}%%."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:984
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:986
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:600
msgid "Delete saved search/replace"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:985
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:987
msgid "The selected saved search/replace will be deleted. Are you sure?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1002
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1010
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1004
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1012
msgid "Save search/replace"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1003
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1005
msgid "Search/replace name:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1011
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1013
msgid "That saved search/replace already exists and will be overwritten. Are you sure?"
msgstr ""
@ -16011,6 +16023,14 @@ msgstr ""
msgid "days_between(date1, date2) -- return the number of days between date1 and date2. The number is positive if date1 is greater than date2, otherwise negative. If either date1 or date2 are not dates, the function returns the empty string."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:1005
msgid "language_strings(lang_codes, localize) -- return the strings for the language codes passed in lang_codes. If localize is zero, return the strings in English. If localize is not zero, return the strings in the language of the current locale. Lang_codes is a comma-separated list."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:1025
msgid "language_codes(lang_strings) -- return the language codes for the strings passed in lang_strings. The strings must be in the language of the current locale. Lang_strings is a comma-separated list."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43
msgid "Waiting..."
msgstr ""

View File

@ -175,6 +175,14 @@ class NetworkAccessManager(QNetworkAccessManager): # {{{
class Browser(QObject):
'''
Browser (WebKit with no GUI).
This browser is NOT thread safe. Use it in a single thread only! If you
need to run downloads in parallel threads, use multiple browsers (after
copying the cookies).
'''
def __init__(self,
# Logging. If None, uses a default log, which does not output
# debugging info
@ -216,6 +224,3 @@ class Browser(QObject):
self.nam = NetworkAccessManager(log, use_disk_cache=use_disk_cache, parent=self)
self.page.setNetworkAccessManager(self.nam)
def visit(self, url):
pass