mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Merge from trunk
This commit is contained in:
commit
fe976eff7a
@ -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'
|
||||
description = u'Magazin f\xfcr politische Kultur'
|
||||
oldest_article = 7
|
||||
language = 'de'
|
||||
class BasicUserRecipe1316245412(BasicNewsRecipe):
|
||||
|
||||
title = u'Cicero Online'
|
||||
description = u'Magazin f\xfcr politische Kultur'
|
||||
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'
|
||||
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')
|
||||
]
|
||||
no_stylesheets = True
|
||||
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.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'
|
||||
|
||||
|
@ -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')))
|
||||
|
@ -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
|
||||
|
@ -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'))
|
||||
|
@ -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)'))
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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 ""
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user