This commit is contained in:
GRiker 2011-04-30 12:27:37 -06:00
commit 24422cf79d
79 changed files with 49945 additions and 44170 deletions

View File

@ -19,6 +19,27 @@
# new recipes: # new recipes:
# - title: # - title:
- version: 0.7.59
date: 2011-04-30
bug fixes:
- title: "Fixes a bug in 0.7.58 that caused too small fonts when converting to MOBI for the Kindle. Apologies."
- title: "Apple driver: Handle invalid EPUBs that do not contain an OPF file"
new recipes:
- title: The Big Picture and Auto industry news
author: welovelucy
- title: Gazeta Prawna
author: Vroo
- title: Various Czech news sources
author: Tomas Latal
- title: Diario de Ibiza
author: Joan Tur
- version: 0.7.58 - version: 0.7.58
date: 2011-04-29 date: 2011-04-29

16
recipes/auto_blog.recipe Normal file
View File

@ -0,0 +1,16 @@
from calibre.web.feeds.news import BasicNewsRecipe
class AutoBlog(BasicNewsRecipe):
title = u'Auto Blog'
__author__ = 'Welovelucy'
language = 'en'
description = 'Auto industry news'
oldest_article = 7
max_articles_per_feed = 100
feeds = [(u'AutoBlog', u'http://www.autoblog.com/rss.xml')]
def print_version(self, url):
return url + 'print/'

View File

@ -0,0 +1,12 @@
from calibre.web.feeds.news import BasicNewsRecipe
class BigPicture(BasicNewsRecipe):
title = u'The Big Picture'
__author__ = 'Welovelucy'
description = ('Macro perspective on capital markets, economy, technology'
' and digital media')
language = 'en'
oldest_article = 7
max_articles_per_feed = 100
feeds = [(u'Big Picture', u'http://feeds.feedburner.com/TheBigPicture')]

37
recipes/digizone.recipe Normal file
View File

@ -0,0 +1,37 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Tomas Latal<latal.tomas at gmail.com>'
from calibre.web.feeds.news import BasicNewsRecipe
class DigiZoneCZ(BasicNewsRecipe):
title = 'DigiZone'
__author__ = 'Tomas Latal'
__version__ = '1.0'
__date__ = '30 April 2011'
description = u'Aktuality a \u010dl\xe1nky z DigiZone.cz'
oldest_article = 1
max_articles_per_feed = 10
encoding = 'iso-8859-2'
publisher = 'Internet Info s.r.o.'
category = 'digitalni vysilani, televize, CZ'
language = 'cs'
publication_type = 'newsportal'
no_stylesheets = True
remove_javascript = True
extra_css = 'p.perex{font-size: 1.2em; margin: 0 0 10px 0;line-height: 1.4;padding: 0 0 10px 0;font-weight: bold;} \
p.perex img {display:none;} \
.urs p {margin: 0 0 0.8em 0;}'
feeds = [
(u'Aktuality', u'http://rss.digizone.cz/aktuality'),
(u'\u010cl\xe1nky', u'http://rss.digizone.cz/clanky')
]
remove_tags_before = dict(id=['p-article','p-actuality'])
remove_tags_after = dict(id=['p-article','p-actuality'])
remove_tags = [
dict(attrs={'class':['path','mth','lbtr','serial','enquiry','links','dp-n','side','op-ab','op-view','op-sub','op-list',]}),
dict(id=['opinions','discussionList','similarItems','sidebar','footer','opl','promo-box'])
]

View File

@ -1,5 +1,5 @@
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>' __copyright__ = '2010-2011, Darko Miletic <darko.miletic at gmail.com>'
''' '''
foxnews.com foxnews.com
''' '''
@ -23,6 +23,7 @@ class FoxNews(BasicNewsRecipe):
extra_css = """ extra_css = """
body{font-family: Arial,sans-serif } body{font-family: Arial,sans-serif }
.caption{font-size: x-small} .caption{font-size: x-small}
.author,.dateline{font-size: small}
""" """
conversion_options = { conversion_options = {
@ -34,12 +35,12 @@ class FoxNews(BasicNewsRecipe):
remove_attributes = ['xmlns','lang'] remove_attributes = ['xmlns','lang']
remove_tags = [ remove_tags=[
dict(name=['object','embed','link','script','iframe','meta','base']) dict(attrs={'class':['user-control','logo','ad-300x250','url-description']})
,dict(attrs={'class':['user-control','url-description','ad-context']}) ,dict(name=['meta','base','link','iframe','object','embed'])
] ]
remove_tags_before=dict(name='h1') keep_only_tags=[dict(attrs={'id':'article-print'})]
remove_tags_after =dict(attrs={'class':'url-description'}) remove_tags_after =dict(attrs={'class':'url-description'})
feeds = [ feeds = [
@ -55,3 +56,24 @@ class FoxNews(BasicNewsRecipe):
def print_version(self, url): def print_version(self, url):
return url + 'print' return url + 'print'
def preprocess_html(self, 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'
item.attrs = []
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

@ -0,0 +1,53 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = u'2011, Vroo <vroobelek@iq.pl>'
__author__ = u'Vroo'
'''
gazetaprawna.pl
'''
from calibre.web.feeds.news import BasicNewsRecipe
class gazetaprawna(BasicNewsRecipe):
version = 1
title = u'Gazeta Prawna'
__author__ = u'Vroo'
publisher = u'Infor Biznes'
oldest_article = 7
max_articles_per_feed = 20
no_stylesheets = True
remove_javascript = True
description = 'Polski dziennik gospodarczy'
language = 'pl'
encoding = 'utf-8'
remove_tags_after = [
dict(name='div', attrs={'class':['data-art']})
]
remove_tags = [
dict(name='div', attrs={'class':['dodatki_artykulu','data-art']})
]
feeds = [
(u'Wiadomo\u015bci - najwa\u017cniejsze', u'http://www.gazetaprawna.pl/wiadomosci/najwazniejsze/rss.xml'),
(u'Biznes i prawo gospodarcze', u'http://biznes.gazetaprawna.pl/rss.xml'),
(u'Prawo i wymiar sprawiedliwo\u015bci', u'http://prawo.gazetaprawna.pl/rss.xml'),
(u'Praca i ubezpieczenia', u'http://praca.gazetaprawna.pl/rss.xml'),
(u'Podatki i rachunkowo\u015b\u0107', u'http://podatki.gazetaprawna.pl/rss.xml')
]
def print_version(self, url):
url = url.replace('wiadomosci/artykuly', 'drukowanie')
url = url.replace('artykuly', 'drukowanie')
url = url.replace('porady', 'drukowanie')
url = url.replace('wywiady', 'drukowanie')
url = url.replace('orzeczenia', 'drukowanie')
url = url.replace('galeria', 'drukowanie')
url = url.replace('komentarze', 'drukowanie')
url = url.replace('biznes.gazetaprawna', 'www.gazetaprawna')
url = url.replace('podatki.gazetaprawna', 'www.gazetaprawna')
url = url.replace('prawo.gazetaprawna', 'www.gazetaprawna')
url = url.replace('praca.gazetaprawna', 'www.gazetaprawna')
return url

View File

@ -16,7 +16,7 @@ class Jezebel(BasicNewsRecipe):
max_articles_per_feed = 100 max_articles_per_feed = 100
no_stylesheets = True no_stylesheets = True
encoding = 'utf-8' encoding = 'utf-8'
use_embedded_content = False use_embedded_content = True
language = 'en' language = 'en'
masthead_url = 'http://cache.gawkerassets.com/assets/jezebel.com/img/logo.png' masthead_url = 'http://cache.gawkerassets.com/assets/jezebel.com/img/logo.png'
extra_css = ''' extra_css = '''
@ -32,13 +32,12 @@ class Jezebel(BasicNewsRecipe):
, 'language' : language , 'language' : language
} }
remove_attributes = ['width','height'] feeds = [(u'Articles', u'http://feeds.gawker.com/jezebel/vip?format=xml')]
keep_only_tags = [dict(attrs={'class':'content permalink'})]
remove_tags_before = dict(name='h1') remove_tags = [
remove_tags = [dict(attrs={'class':'contactinfo'})] {'class': 'feedflare'},
remove_tags_after = dict(attrs={'class':'contactinfo'}) ]
feeds = [(u'Articles', u'http://feeds.gawker.com/jezebel/full')]
def preprocess_html(self, soup): def preprocess_html(self, soup):
return self.adeify_images(soup) return self.adeify_images(soup)

View File

@ -16,7 +16,7 @@ class Kotaku(BasicNewsRecipe):
max_articles_per_feed = 100 max_articles_per_feed = 100
no_stylesheets = True no_stylesheets = True
encoding = 'utf-8' encoding = 'utf-8'
use_embedded_content = False use_embedded_content = True
language = 'en' language = 'en'
masthead_url = 'http://cache.gawkerassets.com/assets/kotaku.com/img/logo.png' masthead_url = 'http://cache.gawkerassets.com/assets/kotaku.com/img/logo.png'
extra_css = ''' extra_css = '''
@ -31,13 +31,12 @@ class Kotaku(BasicNewsRecipe):
, 'language' : language , 'language' : language
} }
remove_attributes = ['width','height'] feeds = [(u'Articles', u'http://feeds.gawker.com/kotaku/vip?format=xml')]
keep_only_tags = [dict(attrs={'class':'content permalink'})]
remove_tags_before = dict(name='h1') remove_tags = [
remove_tags = [dict(attrs={'class':'contactinfo'})] {'class': 'feedflare'},
remove_tags_after = dict(attrs={'class':'contactinfo'}) ]
feeds = [(u'Articles', u'http://feeds.gawker.com/kotaku/full')]
def preprocess_html(self, soup): def preprocess_html(self, soup):
return self.adeify_images(soup) return self.adeify_images(soup)

37
recipes/lupa.recipe Normal file
View File

@ -0,0 +1,37 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Tomas Latal<latal.tomas at gmail.com>'
from calibre.web.feeds.news import BasicNewsRecipe
class LupaCZ(BasicNewsRecipe):
title = 'Lupa'
__author__ = 'Tomas Latal'
__version__ = '1.0'
__date__ = '30 April 2011'
description = u'Zpr\xe1vi\u010dky a \u010dl\xe1nky z Lupa.cz'
oldest_article = 2
max_articles_per_feed = 10
encoding = 'utf8'
publisher = 'Internet Info s.r.o.'
category = 'IT,news,CZ'
language = 'cs'
publication_type = 'newsportal'
no_stylesheets = True
remove_javascript = True
extra_css = 'p.perex{font-size: 1.2em;margin: 0 0 10px 0;line-height: 1.4;padding: 0 0 10px 0;font-weight: bold;} \
p.perex img {display:none;} \
.urs p {margin: 0 0 0.8em 0;}'
feeds = [
(u'Zpr\xe1vi\u010dky', u'http://rss.lupa.cz/zpravicky'),
(u'\u010cl\xe1nky', u'http://rss.lupa.cz/clanky')
]
remove_tags_before = dict(id='main')
remove_tags_after = [dict(id='main')]
remove_tags = [
dict(attrs={'class':['author clear','tags-rubrics','box border style1 links clear','enquiry clear','serial','box border style1 TitleList','breadcrumb clear','article-discussion box border style1 monitoringComponentArticle','link-more border prev-next clear']}),
dict(id=['discussionList','similarItems','sidebar','footer','opl','promo-box'])
]

37
recipes/mesec.recipe Normal file
View File

@ -0,0 +1,37 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Tomas Latal<latal.tomas at gmail.com>'
from calibre.web.feeds.news import BasicNewsRecipe
class MesecCZ(BasicNewsRecipe):
title = u'M\u011b\u0161ec'
__author__ = 'Tomas Latal'
__version__ = '1.0'
__date__ = '30 April 2011'
description = u'Zpr\xe1vi\u010dky a \u010dl\xe1nky z Mesec.cz'
oldest_article = 1
max_articles_per_feed = 10
encoding = 'utf8'
publisher = 'Internet Info s.r.o.'
category = 'finance,CZ'
language = 'cs'
publication_type = 'newsportal'
no_stylesheets = True
remove_javascript = True
extra_css = 'p.perex{font-size: 1.2em;margin: 0 0 10px 0;line-height: 1.4;padding: 0 0 10px 0;font-weight: bold;} \
p.perex img {display:none;} \
.urs p {margin: 0 0 0.8em 0;}'
feeds = [
(u'Aktuality', u'http://www.mesec.cz/rss/aktuality/'),
(u'\u010cl\xe1nky', u'http://www.mesec.cz/rss/clanky/')
]
remove_tags_before = dict(id='main')
remove_tags_after = [dict(id='main')]
remove_tags = [
dict(attrs={'class':['author clear','tags-rubrics','box border style1 links clear','enquiry clear','serial','box border style1 TitleList','breadcrumb clear','article-discussion box border style1 monitoringComponentArticle','link-more border prev-next clear']}),
dict(id=['discussionList','similarItems','sidebar','footer','opl','promo-box'])
]

View File

@ -6,8 +6,8 @@ from calibre.web.feeds.news import BasicNewsRecipe
class NovinkyCZ(BasicNewsRecipe): class NovinkyCZ(BasicNewsRecipe):
title = 'Novinky' title = 'Novinky'
__author__ = 'Tomas Latal' __author__ = 'Tomas Latal'
__version__ = '1.0' __version__ = '1.1'
__date__ = '24 April 2011' __date__ = '30 April 2011'
description = 'News from server Novinky.cz' description = 'News from server Novinky.cz'
oldest_article = 1 oldest_article = 1
max_articles_per_feed = 10 max_articles_per_feed = 10
@ -18,6 +18,7 @@ class NovinkyCZ(BasicNewsRecipe):
publication_type = 'newsportal' publication_type = 'newsportal'
no_stylesheets = True no_stylesheets = True
remove_javascript = True remove_javascript = True
cover_url = 'http://img193.imageshack.us/img193/3039/novinkycover.jpg'
extra_css = 'p.acmDescription{font-style:italic;} p.acmAuthor{font-size:0.8em; color:#707070}' extra_css = 'p.acmDescription{font-style:italic;} p.acmAuthor{font-size:0.8em; color:#707070}'
feeds = [ feeds = [

37
recipes/podnikatel.recipe Normal file
View File

@ -0,0 +1,37 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Tomas Latal<latal.tomas at gmail.com>'
from calibre.web.feeds.news import BasicNewsRecipe
class PodnikatelCZ(BasicNewsRecipe):
title = 'Podnikatel'
__author__ = 'Tomas Latal'
__version__ = '1.0'
__date__ = '30 April 2011'
description = u'Aktuality a \u010dl\xe1nky z Podnikatel.cz'
oldest_article = 1
max_articles_per_feed = 10
encoding = 'utf8'
publisher = 'Internet Info s.r.o.'
category = 'podnikani, bussiness, CZ'
language = 'cs'
publication_type = 'newsportal'
no_stylesheets = True
remove_javascript = True
extra_css = 'p.perex{font-size: 1.2em; margin: 0 0 10px 0;line-height: 1.4;padding: 0 0 10px 0;font-weight: bold;} \
p.perex img {display:none;} \
.urs p {margin: 0 0 0.8em 0;}'
feeds = [
(u'Aktuality', u'http://rss.podnikatel.cz/aktuality'),
(u'\u010cl\xe1nky', u'http://rss.podnikatel.cz/clanky')
]
remove_tags_before = dict(id='art-content')
remove_tags_after = [dict(id='art-content')]
remove_tags = [
dict(attrs={'class':['socialshare','box-blue','author clear','labels-terms','box diskuze','ad','page-nav right','infobox','box zpravy','s-clanky']}),
dict(id=['path','article-tools','discussionList','similarItems','promo-box'])
]

39
recipes/vitalia.recipe Normal file
View File

@ -0,0 +1,39 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Tomas Latal<latal.tomas at gmail.com>'
from calibre.web.feeds.news import BasicNewsRecipe
class VitaliaCZ(BasicNewsRecipe):
title = 'Vitalia'
__author__ = 'Tomas Latal'
__version__ = '1.0'
__date__ = '30 April 2011'
description = u'Aktuality a \u010dl\xe1nky z Vitalia.cz'
oldest_article = 1
max_articles_per_feed = 10
encoding = 'utf8'
publisher = 'Internet Info s.r.o.'
category = 'zdravi, vztahy, wellness, CZ'
language = 'cs'
publication_type = 'newsportal'
no_stylesheets = True
remove_javascript = True
extra_css = 'p.perex{font-size: 1.2em; margin: 0 0 10px 0; line-height: 1.4; padding: 0 0 10px 0; font-weight: bold;} \
p.perex img {display:none;} \
span.author {font-size:0.8em; font-style:italic} \
.urs div.rs-tip-major {padding:0.5em; background: #e0e0e0 none repeat scroll 0 0;border: 1px solid #909090;} \
.urs p {margin: 0 0 0.8em 0;}'
feeds = [
(u'Aktuality', 'http://www.vitalia.cz/rss/aktuality/'),
(u'\u010cl\xe1nky', u'http://www.vitalia.cz/rss/clanky/'),
]
remove_tags_before = dict(id='main')
remove_tags_after = [dict(id='main')]
remove_tags = [
dict(attrs={'class':['author clear','tags-rubrics','box border style1 links clear','enquiry clear','serial','box border style1 TitleList','breadcrumb clear','article-discussion box border style1 monitoringComponentArticle','link-more border prev-next clear']}),
dict(id=['discussionList','similarItems','sidebar','footer','opl','promo-box'])
]

View File

@ -4,7 +4,7 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
__appname__ = u'calibre' __appname__ = u'calibre'
numeric_version = (0, 7, 58) numeric_version = (0, 7, 59)
__version__ = u'.'.join(map(unicode, numeric_version)) __version__ = u'.'.join(map(unicode, numeric_version))
__author__ = u"Kovid Goyal <kovid@kovidgoyal.net>" __author__ = u"Kovid Goyal <kovid@kovidgoyal.net>"

View File

@ -125,7 +125,19 @@ class Stylizer(object):
def __init__(self, tree, path, oeb, opts, profile=None, def __init__(self, tree, path, oeb, opts, profile=None,
extra_css='', user_css=''): extra_css='', user_css=''):
self.oeb, self.opts = oeb, opts self.oeb, self.opts = oeb, opts
self.profile = opts.input_profile self.profile = profile
if self.profile is None:
# Use the default profile. This should really be using
# opts.output_profile, but I don't want to risk changing it, as
# doing so might well have hard to debug font size effects.
from calibre.customize.ui import output_profiles
for x in output_profiles():
if x.short_name == 'default':
self.profile = x
break
if self.profile is None:
# Just in case the default profile is removed in the future :)
self.profile = opts.output_profile
self.logger = oeb.logger self.logger = oeb.logger
item = oeb.manifest.hrefs[path] item = oeb.manifest.hrefs[path]
basename = os.path.basename(path) basename = os.path.basename(path)

View File

@ -613,6 +613,7 @@ class EditMetadataAction(InterfaceAction):
self.applied_ids, cr) self.applied_ids, cr)
if self.gui.cover_flow: if self.gui.cover_flow:
self.gui.cover_flow.dataChanged() self.gui.cover_flow.dataChanged()
self.gui.tags_view.recount()
self.apply_id_map = [] self.apply_id_map = []
self.apply_pd = None self.apply_pd = None

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

@ -4,9 +4,9 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre 0.7.58\n" "Project-Id-Version: calibre 0.7.59\n"
"POT-Creation-Date: 2011-04-29 11:06+MDT\n" "POT-Creation-Date: 2011-04-30 09:20+MDT\n"
"PO-Revision-Date: 2011-04-29 11:06+MDT\n" "PO-Revision-Date: 2011-04-30 09:20+MDT\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n" "Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -811,57 +811,57 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "Cannot copy books directly from iDevice. Drag from iTunes Library to desktop, then add to calibre's Library window." msgid "Cannot copy books directly from iDevice. Drag from iTunes Library to desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -877,7 +877,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -885,7 +885,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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

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

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

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

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

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

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