diff --git a/resources/recipes/180.recipe b/resources/recipes/180.recipe index 5158bb99e0..4f00314795 100644 --- a/resources/recipes/180.recipe +++ b/resources/recipes/180.recipe @@ -12,7 +12,7 @@ class Noticias(BasicNewsRecipe): title = '180.com.uy' __author__ = 'Gustavo Azambuja' description = 'Noticias de Uruguay' - language = 'es' + language = 'es_UY' timefmt = '[%a, %d %b, %Y]' use_embedded_content = False recursion = 5 diff --git a/resources/recipes/7dias.recipe b/resources/recipes/7dias.recipe index e111617b8d..3dc93295a8 100644 --- a/resources/recipes/7dias.recipe +++ b/resources/recipes/7dias.recipe @@ -20,7 +20,7 @@ class SieteDias(BasicNewsRecipe): no_stylesheets = True use_embedded_content = False encoding = 'utf-8' - language = 'es' + language = 'es_AR' lang = 'es-AR' direction = 'ltr' diff --git a/resources/recipes/ambito.recipe b/resources/recipes/ambito.recipe index 7074463e34..dd92ee19b3 100644 --- a/resources/recipes/ambito.recipe +++ b/resources/recipes/ambito.recipe @@ -58,4 +58,4 @@ class Ambito(BasicNewsRecipe): del item['style'] return soup - language = 'es' + language = 'es_AR' diff --git a/resources/recipes/animal_politico.recipe b/resources/recipes/animal_politico.recipe index f48587ea94..5e57e266bc 100644 --- a/resources/recipes/animal_politico.recipe +++ b/resources/recipes/animal_politico.recipe @@ -12,7 +12,7 @@ class AdvancedUserRecipe1290663986(BasicNewsRecipe): masthead_url = 'http://www.animalpolitico.com/wp-content/themes/animal_mu/images/logo.png' oldest_article = 1 max_articles_per_feed = 100 - language = 'es' + language = 'es_MX' #feeds = [(u'Animal Politico', u'http://www.animalpolitico.com/feed/')] diff --git a/resources/recipes/axxon_magazine.recipe b/resources/recipes/axxon_magazine.recipe index 331e6fe2b5..93cb5cd03b 100644 --- a/resources/recipes/axxon_magazine.recipe +++ b/resources/recipes/axxon_magazine.recipe @@ -17,7 +17,7 @@ class Axxon_news(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = False use_embedded_content = False - language = 'es' + language = 'es_AR' encoding = 'utf-8' publication_type = 'magazine' INDEX = 'http://axxon.com.ar/rev/' diff --git a/resources/recipes/axxon_news.recipe b/resources/recipes/axxon_news.recipe index a9a99e1de1..3d0f8effd0 100644 --- a/resources/recipes/axxon_news.recipe +++ b/resources/recipes/axxon_news.recipe @@ -18,7 +18,7 @@ class Axxon_news(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = False use_embedded_content = False - language = 'es' + language = 'es_AR' lang = 'es-AR' diff --git a/resources/recipes/bitacora.recipe b/resources/recipes/bitacora.recipe index a36eb52988..7f41f8f32b 100644 --- a/resources/recipes/bitacora.recipe +++ b/resources/recipes/bitacora.recipe @@ -12,7 +12,7 @@ class General(BasicNewsRecipe): title = 'bitacora.com.uy' __author__ = 'Gustavo Azambuja' description = 'Noticias de Uruguay' - language = 'es' + language = 'es_UY' timefmt = '[%a, %d %b, %Y]' use_embedded_content = False recursion = 5 diff --git a/resources/recipes/buenosaireseconomico.recipe b/resources/recipes/buenosaireseconomico.recipe index c9f89269b4..782358e6d3 100644 --- a/resources/recipes/buenosaireseconomico.recipe +++ b/resources/recipes/buenosaireseconomico.recipe @@ -20,7 +20,7 @@ class BsAsEconomico(BasicNewsRecipe): no_stylesheets = True use_embedded_content = False encoding = 'utf-8' - language = 'es' + language = 'es_AR' lang = 'es-AR' direction = 'ltr' diff --git a/resources/recipes/clarin.recipe b/resources/recipes/clarin.recipe index cf9440ad55..7bbb663d1d 100644 --- a/resources/recipes/clarin.recipe +++ b/resources/recipes/clarin.recipe @@ -18,7 +18,7 @@ class Clarin(BasicNewsRecipe): use_embedded_content = False no_stylesheets = True encoding = 'utf8' - language = 'es' + language = 'es_AR' publication_type = 'newspaper' INDEX = 'http://www.clarin.com' masthead_url = 'http://www.clarin.com/static/CLAClarin/images/logo-clarin-print.jpg' diff --git a/resources/recipes/criticadigital.recipe b/resources/recipes/criticadigital.recipe index d1ef97aef9..3cb72e6be4 100644 --- a/resources/recipes/criticadigital.recipe +++ b/resources/recipes/criticadigital.recipe @@ -14,7 +14,7 @@ class CriticaDigital(BasicNewsRecipe): description = 'Noticias de Argentina' oldest_article = 2 max_articles_per_feed = 100 - language = 'es' + language = 'es_AR' no_stylesheets = True use_embedded_content = False diff --git a/resources/recipes/cubadebate.recipe b/resources/recipes/cubadebate.recipe index f8887b2672..d563f0f86e 100644 --- a/resources/recipes/cubadebate.recipe +++ b/resources/recipes/cubadebate.recipe @@ -11,7 +11,7 @@ class CubaDebate(BasicNewsRecipe): __author__ = 'Darko Miletic' description = 'Contra el Terorismo Mediatico' oldest_article = 15 - language = 'es' + language = 'es_CU' max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False @@ -20,8 +20,8 @@ class CubaDebate(BasicNewsRecipe): encoding = 'utf-8' masthead_url = 'http://www.cubadebate.cu/wp-content/themes/cubadebate/images/logo.gif' publication_type = 'newsportal' - extra_css = """ - #BlogTitle{font-size: xx-large; font-weight: bold} + extra_css = """ + #BlogTitle{font-size: xx-large; font-weight: bold} body{font-family: Verdana, Arial, Tahoma, sans-serif} """ @@ -41,7 +41,7 @@ class CubaDebate(BasicNewsRecipe): feeds = [(u'Articulos', u'http://www.cubadebate.cu/feed/')] remove_attributes=['width','height','lang'] - + def print_version(self, url): return url + 'print/' @@ -50,5 +50,5 @@ class CubaDebate(BasicNewsRecipe): del item['style'] for item in soup.findAll('img'): if not item.has_key('alt'): - item['alt'] = 'image' + item['alt'] = 'image' return soup diff --git a/resources/recipes/deutsche_welle_es.recipe b/resources/recipes/deutsche_welle_es.recipe index ab80b2f11f..c68a03b981 100644 --- a/resources/recipes/deutsche_welle_es.recipe +++ b/resources/recipes/deutsche_welle_es.recipe @@ -16,7 +16,7 @@ class DeutscheWelle_es(BasicNewsRecipe): max_articles_per_feed = 100 use_embedded_content = False no_stylesheets = True - language = 'es' + language = 'de_ES' publication_type = 'newsportal' remove_empty_feeds = True masthead_url = 'http://www.dw-world.de/skins/std/channel1/pics/dw_logo1024.gif' diff --git a/resources/recipes/diagonales.recipe b/resources/recipes/diagonales.recipe index 1604967e63..eff06efc1d 100644 --- a/resources/recipes/diagonales.recipe +++ b/resources/recipes/diagonales.recipe @@ -20,7 +20,7 @@ class Diagonales(BasicNewsRecipe): no_stylesheets = True use_embedded_content = False encoding = 'utf-8' - language = 'es' + language = 'es_AR' lang = 'es-AR' direction = 'ltr' diff --git a/resources/recipes/el_mercurio_chile.recipe b/resources/recipes/el_mercurio_chile.recipe index a8371f5af9..df4d027af3 100644 --- a/resources/recipes/el_mercurio_chile.recipe +++ b/resources/recipes/el_mercurio_chile.recipe @@ -20,8 +20,8 @@ class ElMercurio(BasicNewsRecipe): masthead_url = 'http://www.emol.com/especiales/logo_emol/logo_emol.gif' remove_javascript = True use_embedded_content = False - language = 'es' - + language = 'es_CL' + conversion_options = { 'comment' : description @@ -33,7 +33,7 @@ class ElMercurio(BasicNewsRecipe): keep_only_tags = [dict(name='div', attrs={'id':['cont_iz_titulobajada','cont_iz_creditos_1_a','cont_iz_cuerpo']})] remove_tags = [dict(name='div', attrs={'id':'cont_iz_cuerpo_relacionados'})] remove_attributes = ['height','width'] - + feeds = [ (u'Noticias de ultima hora', u'http://rss.emol.com/rss.asp?canal=0') ,(u'Nacional', u'http://rss.emol.com/rss.asp?canal=1') diff --git a/resources/recipes/el_observador.recipe b/resources/recipes/el_observador.recipe index 6338426d59..994963671e 100644 --- a/resources/recipes/el_observador.recipe +++ b/resources/recipes/el_observador.recipe @@ -13,7 +13,7 @@ class ObservaDigital(BasicNewsRecipe): title = 'Observa Digital' __author__ = 'yrvn' description = 'Noticias de Uruguay' - language = 'es' + language = 'es_UY' timefmt = '[%a, %d %b, %Y]' use_embedded_content = False recursion = 5 diff --git a/resources/recipes/el_pais_uy.recipe b/resources/recipes/el_pais_uy.recipe index 1e9c400162..aceedf0b8c 100644 --- a/resources/recipes/el_pais_uy.recipe +++ b/resources/recipes/el_pais_uy.recipe @@ -14,7 +14,7 @@ class General(BasicNewsRecipe): description = 'Noticias de Uruguay y el resto del mundo' publisher = 'EL PAIS S.A.' category = 'news, politics, Uruguay' - language = 'es' + language = 'es_UY' timefmt = '[%a, %d %b, %Y]' use_embedded_content = False recursion = 2 diff --git a/resources/recipes/el_universal.recipe b/resources/recipes/el_universal.recipe index f053812c05..441f77cbe1 100644 --- a/resources/recipes/el_universal.recipe +++ b/resources/recipes/el_universal.recipe @@ -20,7 +20,7 @@ class ElUniversal(BasicNewsRecipe): remove_javascript = True remove_empty_feeds = True publication_type = 'newspaper' - language = 'es' + language = 'es_MX' extra_css = ''' body{font-family:Arial,Helvetica,sans-serif} diff --git a/resources/recipes/elargentino.recipe b/resources/recipes/elargentino.recipe index c33b845e0a..6086ff6b59 100644 --- a/resources/recipes/elargentino.recipe +++ b/resources/recipes/elargentino.recipe @@ -12,7 +12,7 @@ class ElArgentino(BasicNewsRecipe): __author__ = 'Darko Miletic' description = 'Informacion Libre las 24 horas' publisher = 'ElArgentino.com' - category = 'news, politics, Argentina' + category = 'news, politics, Argentina' oldest_article = 2 max_articles_per_feed = 100 remove_javascript = True @@ -20,7 +20,7 @@ class ElArgentino(BasicNewsRecipe): use_embedded_content = False encoding = 'utf8' cover_url = 'http://www.elargentino.com/TemplateWeb/MediosFooter/tapa_elargentino.png' - language = 'es' + language = 'es_AR' html2lrf_options = [ @@ -28,16 +28,16 @@ class ElArgentino(BasicNewsRecipe): , '--category', category , '--publisher', publisher ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"' + + html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"' remove_tags = [ dict(name='div', attrs={'id':'noprint' }) ,dict(name='div', attrs={'class':'encabezadoImprimir'}) ,dict(name='a' , attrs={'target':'_blank' }) ] - - feeds = [ + + feeds = [ (u'Portada' , u'http://www.elargentino.com/Highlights.aspx?Content-Type=text/xml&ChannelDesc=Home' ) ,(u'Pais' , u'http://www.elargentino.com/Highlights.aspx?ParentType=Section&ParentId=112&Content-Type=text/xml&ChannelDesc=Pa%C3%ADs' ) ,(u'Economia' , u'http://www.elargentino.com/Highlights.aspx?ParentType=Section&ParentId=107&Content-Type=text/xml&ChannelDesc=Econom%C3%ADa' ) @@ -51,12 +51,12 @@ class ElArgentino(BasicNewsRecipe): def print_version(self, url): main, sep, article_part = url.partition('/nota-') - article_id, rsep, rrest = article_part.partition('-') + article_id, rsep, rrest = article_part.partition('-') return u'http://www.elargentino.com/Impresion.aspx?Id=' + article_id def preprocess_html(self, soup): mtag = '\n\n' soup.head.insert(0,mtag) for item in soup.findAll(style=True): - del item['style'] + del item['style'] return soup diff --git a/resources/recipes/elcomercio.recipe b/resources/recipes/elcomercio.recipe index 37733bda8b..69c513a835 100644 --- a/resources/recipes/elcomercio.recipe +++ b/resources/recipes/elcomercio.recipe @@ -18,7 +18,7 @@ class ElComercio(BasicNewsRecipe): no_stylesheets = True encoding = 'utf-8' use_embedded_content = True - language = 'es' + language = 'es_EC' masthead_url = 'http://ww1.elcomercio.com/nv_images/headers/EC/logo_new_08.gif' extra_css = ' body{font-family: Arial,Verdana,sans-serif} img{margin-bottom: 1em} ' diff --git a/resources/recipes/elcronista.recipe b/resources/recipes/elcronista.recipe index d96a9746d6..93615f8f42 100644 --- a/resources/recipes/elcronista.recipe +++ b/resources/recipes/elcronista.recipe @@ -13,7 +13,7 @@ class ElCronista(BasicNewsRecipe): __author__ = 'Darko Miletic' description = 'Noticias de Argentina' oldest_article = 2 - language = 'es' + language = 'es_AR' max_articles_per_feed = 100 no_stylesheets = True @@ -25,14 +25,14 @@ class ElCronista(BasicNewsRecipe): , '--category' , 'news, Argentina' , '--publisher' , title ] - + keep_only_tags = [ dict(name='table', attrs={'width':'100%' }) ,dict(name='h1' , attrs={'class':'Arialgris16normal'}) ] remove_tags = [dict(name='a', attrs={'class':'Arialazul12'})] - + feeds = [ (u'Economia' , u'http://www.cronista.com/adjuntos/8/rss/Economia_EI.xml' ) ,(u'Negocios' , u'http://www.cronista.com/adjuntos/8/rss/negocios_EI.xml' ) @@ -69,4 +69,4 @@ class ElCronista(BasicNewsRecipe): if link_item: cover_url = index + link_item.img['src'] return cover_url - + diff --git a/resources/recipes/eltiempo_hn.recipe b/resources/recipes/eltiempo_hn.recipe index e4d11466ee..81d1ecbb9d 100644 --- a/resources/recipes/eltiempo_hn.recipe +++ b/resources/recipes/eltiempo_hn.recipe @@ -21,7 +21,7 @@ class ElTiempoHn(BasicNewsRecipe): no_stylesheets = True remove_javascript = True encoding = 'utf-8' - language = 'es' + language = 'es_HN' lang = 'es-HN' direction = 'ltr' diff --git a/resources/recipes/eluniversal_ve.recipe b/resources/recipes/eluniversal_ve.recipe index af5d75e3e7..28667cd39b 100644 --- a/resources/recipes/eluniversal_ve.recipe +++ b/resources/recipes/eluniversal_ve.recipe @@ -18,7 +18,7 @@ class ElUniversal(BasicNewsRecipe): encoding = 'cp1252' publisher = 'El Universal' category = 'news, Caracas, Venezuela, world' - language = 'es' + language = 'es_VE' cover_url = strftime('http://static.eluniversal.com/%Y/%m/%d/portada.jpg') conversion_options = { diff --git a/resources/recipes/eluniversalimpresa.recipe b/resources/recipes/eluniversalimpresa.recipe index 7263a76e2a..a48556eedb 100644 --- a/resources/recipes/eluniversalimpresa.recipe +++ b/resources/recipes/eluniversalimpresa.recipe @@ -3,7 +3,7 @@ from calibre.web.feeds.news import BasicNewsRecipe class ElUniversalImpresaRecipe(BasicNewsRecipe): __license__ = 'GPL v3' __author__ = 'kwetal' - language = 'es' + language = 'es_MX' version = 1 title = u'El Universal (Edici\u00F3n Impresa)' diff --git a/resources/recipes/eluniverso_ec.recipe b/resources/recipes/eluniverso_ec.recipe index a0e8b46474..8696e9d2f6 100644 --- a/resources/recipes/eluniverso_ec.recipe +++ b/resources/recipes/eluniverso_ec.recipe @@ -17,7 +17,7 @@ class ElUniverso_Ecuador(BasicNewsRecipe): no_stylesheets = True encoding = 'utf8' use_embedded_content = False - language = 'es' + language = 'es_EC' remove_empty_feeds = True publication_type = 'newspaper' masthead_url = 'http://servicios2.eluniverso.com/versiones/v1/img/Hd/lg_ElUniverso.gif' diff --git a/resources/recipes/freeway.recipe b/resources/recipes/freeway.recipe index cb6d41ebb2..c50c35d8ca 100644 --- a/resources/recipes/freeway.recipe +++ b/resources/recipes/freeway.recipe @@ -12,7 +12,7 @@ class General(BasicNewsRecipe): title = 'freeway.com.uy' __author__ = 'Gustavo Azambuja' description = 'Revista Freeway, Montevideo, Uruguay' - language = 'es' + language = 'es_UY' timefmt = '[%a, %d %b, %Y]' use_embedded_content = False recursion = 1 diff --git a/resources/recipes/granma.recipe b/resources/recipes/granma.recipe index 75e89a3d03..01f383cb68 100644 --- a/resources/recipes/granma.recipe +++ b/resources/recipes/granma.recipe @@ -20,7 +20,7 @@ class Granma(BasicNewsRecipe): use_embedded_content = False encoding = 'cp1252' cover_url = 'http://www.granma.cubaweb.cu/imagenes/granweb229d.jpg' - language = 'es' + language = 'es_CU' remove_javascript = True diff --git a/resources/recipes/ieco.recipe b/resources/recipes/ieco.recipe index 8c59d033a1..eb11c103d2 100644 --- a/resources/recipes/ieco.recipe +++ b/resources/recipes/ieco.recipe @@ -18,7 +18,7 @@ class iEco(BasicNewsRecipe): encoding = 'utf-8' publisher = 'Grupo Clarin' category = 'news, economia, mercados, bolsa de valores, finanzas, empresas, negocios, empleos, emprendedores, marketinguniversidades, tecnologia, agronegocios, noticias, informacion' - language = 'es' + language = 'es_AR' cover_url = 'http://www.ieco.clarin.com/static2/images/Tapa-PDF.gif' extra_css = ' #bd{font-family: sans-serif} ' diff --git a/resources/recipes/infobae.recipe b/resources/recipes/infobae.recipe index b7f9cd3c6c..9553746449 100644 --- a/resources/recipes/infobae.recipe +++ b/resources/recipes/infobae.recipe @@ -16,7 +16,7 @@ class Infobae(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False - language = 'es' + language = 'es_AR' encoding = 'cp1252' masthead_url = 'http://www.infobae.com/imgs/header/header.gif' remove_javascript = True @@ -25,7 +25,7 @@ class Infobae(BasicNewsRecipe): body{font-family:Arial,Helvetica,sans-serif;} .popUpTitulo{color:#0D4261; font-size: xx-large} ''' - + conversion_options = { 'comment' : description , 'tags' : category @@ -33,7 +33,7 @@ class Infobae(BasicNewsRecipe): , 'language' : language , 'linearize_tables' : True } - + feeds = [ (u'Noticias' , u'http://www.infobae.com/adjuntos/html/RSS/hoy.xml' ) diff --git a/resources/recipes/juventudrebelde.recipe b/resources/recipes/juventudrebelde.recipe index dd908d57b2..93d550027a 100644 --- a/resources/recipes/juventudrebelde.recipe +++ b/resources/recipes/juventudrebelde.recipe @@ -20,7 +20,7 @@ class Juventudrebelde(BasicNewsRecipe): no_stylesheets = True use_embedded_content = False encoding = 'cp1252' - language = 'es' + language = 'es_CU' cover_url = strftime('http://www.juventudrebelde.cu/UserFiles/File/impreso/iportada-%Y-%m-%d.jpg') remove_javascript = True diff --git a/resources/recipes/la_cuarta.recipe b/resources/recipes/la_cuarta.recipe index ad1a6a975e..10d6b6ce3a 100644 --- a/resources/recipes/la_cuarta.recipe +++ b/resources/recipes/la_cuarta.recipe @@ -50,4 +50,4 @@ class LaCuarta(BasicNewsRecipe): feeds = [(u'Noticias', u'http://lacuarta.cl/app/rss?sc=TEFDVUFSVEE=')] - language = 'es' + language = 'es_CL' diff --git a/resources/recipes/la_diaria.recipe b/resources/recipes/la_diaria.recipe index d89eb465dd..8aa98483c0 100644 --- a/resources/recipes/la_diaria.recipe +++ b/resources/recipes/la_diaria.recipe @@ -12,7 +12,7 @@ class General(BasicNewsRecipe): title = 'La Diaria' __author__ = 'Gustavo Azambuja' description = 'Noticias de Uruguay' - language = 'es' + language = 'es_UY' timefmt = '[%a, %d %b, %Y]' use_embedded_content = False recursion = 5 diff --git a/resources/recipes/la_jornada.recipe b/resources/recipes/la_jornada.recipe index 3ee6dc4b3f..71c526a0a0 100644 --- a/resources/recipes/la_jornada.recipe +++ b/resources/recipes/la_jornada.recipe @@ -19,7 +19,7 @@ class LaJornada_mx(BasicNewsRecipe): no_stylesheets = True encoding = 'utf8' use_embedded_content = False - language = 'es' + language = 'es_MX' remove_empty_feeds = True cover_url = strftime("http://www.jornada.unam.mx/%Y/%m/%d/portada.pdf") masthead_url = 'http://www.jornada.unam.mx/v7.0/imagenes/la-jornada-trans.png' @@ -34,8 +34,8 @@ class LaJornada_mx(BasicNewsRecipe): .credito{font-weight: bold; margin-left: 1em} .credito-autor{font-variant: small-caps; font-weight: bold } .credito-titulo{text-align: right} - .hemero{text-align: right; font-size: 0.9em; margin-bottom: 0.5em } - .loc{font-weight: bold} + .hemero{text-align: right; font-size: 0.9em; margin-bottom: 0.5em } + .loc{font-weight: bold} .carton{text-align: center} .credit{font-weight: bold} .sumario{font-weight: bold; text-align: center} @@ -56,7 +56,7 @@ class LaJornada_mx(BasicNewsRecipe): ,re.DOTALL|re.IGNORECASE) ,lambda match: '
' + match.group(1) + '
')
]
-
+
keep_only_tags = [
dict(name='div', attrs={'class':['documentContent','cabeza','sumarios','credito-articulo','text','carton']})
,dict(name='div', attrs={'id':'renderComments'})
@@ -88,4 +88,4 @@ class LaJornada_mx(BasicNewsRecipe):
def get_article_url(self, article):
rurl = article.get('link', None)
return rurl.rpartition('&partner=')[0]
-
+
diff --git a/resources/recipes/la_razon_bo.recipe b/resources/recipes/la_razon_bo.recipe
index 18a00d6763..6af899b760 100644
--- a/resources/recipes/la_razon_bo.recipe
+++ b/resources/recipes/la_razon_bo.recipe
@@ -18,7 +18,7 @@ class LaRazon_Bol(BasicNewsRecipe):
no_stylesheets = True
encoding = 'cp1252'
use_embedded_content = False
- language = 'es'
+ language = 'es_BO'
publication_type = 'newspaper'
delay = 1
remove_empty_feeds = True
diff --git a/resources/recipes/la_segunda.recipe b/resources/recipes/la_segunda.recipe
index 537bff4104..8ce25e35b3 100644
--- a/resources/recipes/la_segunda.recipe
+++ b/resources/recipes/la_segunda.recipe
@@ -9,7 +9,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
class LaSegunda(BasicNewsRecipe):
title = 'La Segunda'
__author__ = 'Darko Miletic'
- description = 'El sitio de noticias online de Chile'
+ description = 'El sitio de noticias online de Chile'
publisher = 'La Segunda'
category = 'news, politics, Chile'
oldest_article = 2
@@ -19,9 +19,9 @@ class LaSegunda(BasicNewsRecipe):
encoding = 'cp1252'
masthead_url = 'http://www.lasegunda.com/imagenes/logotipo_lasegunda_Oli.gif'
remove_empty_feeds = True
- language = 'es'
- extra_css = ' .titulonegritastop{font-size: xx-large; font-weight: bold} '
-
+ language = 'es_CL'
+ extra_css = ' .titulonegritastop{font-size: xx-large; font-weight: bold} '
+
conversion_options = {
'comment' : description
, 'tags' : category
@@ -29,13 +29,13 @@ class LaSegunda(BasicNewsRecipe):
, 'language' : language
, 'linearize_tables' : True
}
-
+
remove_tags_before = dict(attrs={'class':'titulonegritastop'})
remove_tags = [dict(name='img')]
remove_attributes = ['width','height']
-
-
- feeds = [
+
+
+ feeds = [
(u'Noticias de ultima hora', u'http://www.lasegunda.com/rss20/index.asp?canal=0')
,(u'Politica' , u'http://www.lasegunda.com/rss20/index.asp?canal=21')
,(u'Cronica' , u'http://www.lasegunda.com/rss20/index.asp?canal=20')
@@ -49,6 +49,6 @@ class LaSegunda(BasicNewsRecipe):
]
def print_version(self, url):
- rest, sep, article_id = url.partition('index.asp?idnoticia=')
+ rest, sep, article_id = url.partition('index.asp?idnoticia=')
return u'http://www.lasegunda.com/edicionOnline/include/secciones/_detalle_impresion.asp?idnoticia=' + article_id
-
+
diff --git a/resources/recipes/lamujerdemivida.recipe b/resources/recipes/lamujerdemivida.recipe
index 207646902b..be7a3fad0d 100644
--- a/resources/recipes/lamujerdemivida.recipe
+++ b/resources/recipes/lamujerdemivida.recipe
@@ -11,15 +11,15 @@ from calibre.web.feeds.news import BasicNewsRecipe
class LaMujerDeMiVida(BasicNewsRecipe):
title = 'La Mujer de mi Vida'
__author__ = 'Darko Miletic'
- description = 'Cultura de otra manera'
+ description = 'Cultura de otra manera'
oldest_article = 90
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
encoding = 'cp1252'
publisher = 'La Mujer de mi Vida'
- category = 'literatura, critica, arte, ensayos'
- language = 'es'
+ category = 'literatura, critica, arte, ensayos'
+ language = 'es_AR'
INDEX = 'http://www.lamujerdemivida.com.ar/'
html2lrf_options = [
@@ -28,8 +28,8 @@ class LaMujerDeMiVida(BasicNewsRecipe):
, '--publisher', publisher
, '--ignore-tables'
]
-
- html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True'
+
+ html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True'
keep_only_tags = [dict(name='table', attrs={'width':'570'})]
@@ -51,7 +51,7 @@ class LaMujerDeMiVida(BasicNewsRecipe):
if cover_item:
cover_url = self.INDEX + cover_item['src']
return cover_url
-
+
def parse_index(self):
totalfeeds = []
lfeeds = self.get_feeds()
@@ -74,4 +74,4 @@ class LaMujerDeMiVida(BasicNewsRecipe):
})
totalfeeds.append((feedtitle, articles))
return totalfeeds
-
+
diff --git a/resources/recipes/lanacion.recipe b/resources/recipes/lanacion.recipe
index 050cb2e79c..05e777ec67 100644
--- a/resources/recipes/lanacion.recipe
+++ b/resources/recipes/lanacion.recipe
@@ -16,17 +16,17 @@ class Lanacion(BasicNewsRecipe):
max_articles_per_feed = 100
use_embedded_content = False
no_stylesheets = True
- language = 'es'
+ language = 'es_AR'
publication_type = 'newspaper'
- remove_empty_feeds = True
+ remove_empty_feeds = True
masthead_url = 'http://www.lanacion.com.ar/imgs/layout/logos/ln341x47.gif'
extra_css = """ h1{font-family: Georgia,serif}
- h2{color: #626262}
- body{font-family: Arial,sans-serif}
+ h2{color: #626262}
+ body{font-family: Arial,sans-serif}
img{margin-top: 0.5em; margin-bottom: 0.2em; display: block}
- .notaFecha{color: #808080}
- .notaEpigrafe{font-size: x-small}
- .topNota h1{font-family: Arial,sans-serif}
+ .notaFecha{color: #808080}
+ .notaEpigrafe{font-size: x-small}
+ .topNota h1{font-family: Arial,sans-serif}
"""
@@ -45,7 +45,7 @@ class Lanacion(BasicNewsRecipe):
,dict(attrs={'class':['titulosMultimedia','derecha','techo color','encuesta','izquierda compartir','floatFix','videoCentro']})
,dict(name=['iframe','embed','object','form','base','hr','meta','link','input'])
]
- remove_tags_after = dict(attrs={'class':['tags','nota-destacado']})
+ remove_tags_after = dict(attrs={'class':['tags','nota-destacado']})
remove_attributes = ['height','width','visible','onclick','data-count','name']
feeds = [
diff --git a/resources/recipes/lanacion_chile.recipe b/resources/recipes/lanacion_chile.recipe
index f913b61855..0c0d4550fa 100644
--- a/resources/recipes/lanacion_chile.recipe
+++ b/resources/recipes/lanacion_chile.recipe
@@ -51,4 +51,4 @@ class LaNacionChile(BasicNewsRecipe):
del item['style']
return soup
- language = 'es'
+ language = 'es_CL'
diff --git a/resources/recipes/laprensa.recipe b/resources/recipes/laprensa.recipe
index 1f8c708b32..eb54ec989a 100644
--- a/resources/recipes/laprensa.recipe
+++ b/resources/recipes/laprensa.recipe
@@ -21,9 +21,9 @@ class LaPrensa(BasicNewsRecipe):
encoding = 'cp1252'
# cover_url = 'http://www.laprensa.com.ar/imgs/logo.gif'
remove_javascript = True
- language = 'es'
+ language = 'es_AR'
lang = 'es'
-
+
html2lrf_options = [
'--comment', description
, '--category', category
@@ -32,7 +32,7 @@ class LaPrensa(BasicNewsRecipe):
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"'
filter_regexps = [r'.*archive.aspx.*']
-
+
remove_tags = [
dict(name='td', attrs={'class':["link-registro","link-buscador"]}),
dict(name='td', attrs={'id':["TDTabItem1","TDTabItem2","TDTabItem3","TDTabItem4"]}),
@@ -58,9 +58,9 @@ class LaPrensa(BasicNewsRecipe):
dict(name='img', src = "/versions/1/imgs/separador-linea-azul.gif"),
dict(name='img', src = " /versions/1/imgs/separador-linea.gif"),
dict(name='a',text ="Powered by Civinext Groupware - V. 2.0.3567.23706"),
- dict(name='img', height ="0")
+ dict(name='img', height ="0")
]
-
+
extra_css = '''
.seccion{font-size:xx-small;}
body{font-family:Arial,Helvetica,sans-serif;font-size:x-small;}
@@ -69,7 +69,7 @@ class LaPrensa(BasicNewsRecipe):
.fecha{font-size:xx-small;}
.volanta{font-size:xx-small;}
'''
-
+
feeds = [
(u'Politica' , u'http://www.laprensa.com.ar/ResourcesManager.aspx?Resource=Rss.aspx&Rss=4' )
,(u'Economia' , u'http://www.laprensa.com.ar/ResourcesManager.aspx?Resource=Rss.aspx&Rss=5' )
@@ -80,14 +80,14 @@ class LaPrensa(BasicNewsRecipe):
,(u'Espectaculos', u'http://www.laprensa.com.ar/ResourcesManager.aspx?Resource=Rss.aspx?Rss=10')
]
-
+
def preprocess_html(self, soup):
-
+
for t in soup.findAll(['table','td','tr','span','tbody']):
t.name = 'div'
for t in soup.findAll(['hr']):
t.extract()
-
+
mtag = ''
soup.head.insert(0,mtag)
for item in soup.findAll(style=True):
@@ -95,8 +95,8 @@ class LaPrensa(BasicNewsRecipe):
for item in soup.findAll(align = "center"):
del item['align']
for item in soup.findAll(bgcolor="ffffff"):
- del item['bgcolor']
+ del item['bgcolor']
return soup
-
-
-
+
+
+
diff --git a/resources/recipes/laprensa_hn.recipe b/resources/recipes/laprensa_hn.recipe
index 356882d177..d7895bf09d 100644
--- a/resources/recipes/laprensa_hn.recipe
+++ b/resources/recipes/laprensa_hn.recipe
@@ -21,7 +21,7 @@ class LaPrensaHn(BasicNewsRecipe):
no_stylesheets = True
remove_javascript = True
encoding = 'utf-8'
- language = 'es'
+ language = 'es_HN'
lang = 'es-HN'
direction = 'ltr'
diff --git a/resources/recipes/laprensa_ni.recipe b/resources/recipes/laprensa_ni.recipe
index c7f35a6d6a..9aba2839ef 100644
--- a/resources/recipes/laprensa_ni.recipe
+++ b/resources/recipes/laprensa_ni.recipe
@@ -22,7 +22,7 @@ class LaPrensa_ni(BasicNewsRecipe):
use_embedded_content = False
encoding = 'cp1252'
remove_javascript = True
- language = 'es'
+ language = 'es_NI'
months_es = ['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre']
current_month = months_es[datetime.date.today().month - 1]
diff --git a/resources/recipes/latribuna.recipe b/resources/recipes/latribuna.recipe
index e7e461cd01..13c59dc4aa 100644
--- a/resources/recipes/latribuna.recipe
+++ b/resources/recipes/latribuna.recipe
@@ -21,7 +21,7 @@ class LaTribuna(BasicNewsRecipe):
no_stylesheets = True
remove_javascript = True
encoding = 'utf-8'
- language = 'es'
+ language = 'es_HN'
lang = 'es-HN'
direction = 'ltr'
diff --git a/resources/recipes/los_tiempos_bo.recipe b/resources/recipes/los_tiempos_bo.recipe
index ae2774ff59..00ddd9d7c1 100644
--- a/resources/recipes/los_tiempos_bo.recipe
+++ b/resources/recipes/los_tiempos_bo.recipe
@@ -18,7 +18,7 @@ class LosTiempos_Bol(BasicNewsRecipe):
no_stylesheets = True
encoding = 'cp1252'
use_embedded_content = False
- language = 'es'
+ language = 'es_BO'
publication_type = 'newspaper'
delay = 1
remove_empty_feeds = True
diff --git a/resources/recipes/milenio.recipe b/resources/recipes/milenio.recipe
index a279eb37dc..e6ca103952 100644
--- a/resources/recipes/milenio.recipe
+++ b/resources/recipes/milenio.recipe
@@ -12,7 +12,7 @@ import datetime
class Milenio(BasicNewsRecipe):
title = u'Milenio-diario'
__author__ = 'Bmsleight'
- language = 'es'
+ language = 'es_MX'
description = 'Milenio-diario'
oldest_article = 10
max_articles_per_feed = 100
diff --git a/resources/recipes/miradasalsur.recipe b/resources/recipes/miradasalsur.recipe
index f966a94ee9..fd306adc86 100644
--- a/resources/recipes/miradasalsur.recipe
+++ b/resources/recipes/miradasalsur.recipe
@@ -20,7 +20,7 @@ class MiradasAlSur(BasicNewsRecipe):
no_stylesheets = True
use_embedded_content = False
encoding = 'utf-8'
- language = 'es'
+ language = 'es_AR'
lang = 'es-AR'
direction = 'ltr'
diff --git a/resources/recipes/montevideo_com.recipe b/resources/recipes/montevideo_com.recipe
index cabd4181d6..6f1474f0c0 100644
--- a/resources/recipes/montevideo_com.recipe
+++ b/resources/recipes/montevideo_com.recipe
@@ -12,7 +12,7 @@ class Noticias(BasicNewsRecipe):
title = 'Montevideo COMM'
__author__ = 'Gustavo Azambuja'
description = 'Noticias de Uruguay'
- language = 'es'
+ language = 'es_UY'
timefmt = '[%a, %d %b, %Y]'
use_embedded_content = False
recursion = 5
diff --git a/resources/recipes/newsweek_argentina.recipe b/resources/recipes/newsweek_argentina.recipe
index 96c50bf6c3..a474f75f60 100644
--- a/resources/recipes/newsweek_argentina.recipe
+++ b/resources/recipes/newsweek_argentina.recipe
@@ -20,7 +20,7 @@ class Newsweek_Argentina(BasicNewsRecipe):
no_stylesheets = True
use_embedded_content = False
encoding = 'utf-8'
- language = 'es'
+ language = 'es_AR'
lang = 'es-AR'
direction = 'ltr'
diff --git a/resources/recipes/observa_digital.recipe b/resources/recipes/observa_digital.recipe
index 375d67236c..cb493bcb26 100644
--- a/resources/recipes/observa_digital.recipe
+++ b/resources/recipes/observa_digital.recipe
@@ -12,7 +12,7 @@ class Noticias(BasicNewsRecipe):
title = 'Observa Digital'
__author__ = '2010, Gustavo Azambuja Cannot upload books to device there is no more free space available "
msgstr ""
@@ -6409,61 +6431,119 @@ msgstr ""
msgid "Dumping database to SQL"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:81
msgid "Loading database from SQL"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:142
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:148
msgid "Check Library -- Problems Found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:158
+msgid ""
+" calibre stores the list of your books and their metadata in a\n"
+" database. The actual book files and covers are stored as normal\n"
+" files in the calibre library folder. The database contains a list of the files\n"
+" and covers belonging to each book entry. This tool checks that the\n"
+" actual files in the library folder on your computer match the\n"
+" information in the database. The result of each type of check is shown to the left. The various\n"
+" checks are:\n"
+" There are two kinds of automatic fixes possible: Delete\n"
+" marked and Fix marked. Delete marked is used to remove extra files/folders/covers that\n"
+" have no entries in the database. Check the box next to the item you want\n"
+" to delete. Use with caution. Fix marked is applicable only to covers (the two lines marked\n"
+" 'fixable'). In the case of missing cover files, checking the fixable\n"
+" box and pushing this button will remove the cover mark from the\n"
+" database for all the files in that category. In the case of extra\n"
+" cover files, checking the fixable box and pushing this button will\n"
+" add the cover mark to the database for all the files in that\n"
+" category. Search and replace in text fields using character matching or regular expressions. "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:400
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:401
msgid "In character mode, the field is searched for the entered search text. The text is replaced by the specified replacement text everywhere it is found in the specified field. After replacement is finished, the text can be changed to upper-case, lower-case, or title-case. If the case-sensitive check box is checked, the search text must match exactly. If it is unchecked, the search text will match both upper- and lower-case letters"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:411
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:412
msgid "In regular expression mode, the search text is an arbitrary python-compatible regular expression. The replacement text can contain backreferences to parenthesized expressions in the pattern. The search is not anchored, and can match and replace multiple times on the same string. The modification functions (lower-case etc) are applied to the matched text, not to the field as a whole. The destination box specifies the field where the result after matching and replacement is to be assigned. You can replace the text in the field, or prepend or append the matched text. See this reference for more information on python's regular expressions, and in particular the 'sub' function."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:475
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:476
msgid "S/R TEMPLATE ERROR"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:596
msgid "You must specify a destination when source is a composite field"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:698
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:706
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:810
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:699
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:707
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:811
msgid "Search/replace invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:699
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:700
msgid "Authors cannot be set to the empty string. Book title %s not processed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:707
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:708
msgid "Title cannot be set to the empty string. Book title %s not processed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:811
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:812
msgid "Search pattern is invalid: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:862
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:863
msgid ""
"Applying changes to %d books.\n"
"Phase {0} {1}%%."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:891
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:892
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555
msgid "Delete saved search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:892
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:893
msgid "The selected saved search/replace will be deleted. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:912
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:920
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:910
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:918
msgid "Save search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:913
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:911
msgid "Search/replace name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:921
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:919
msgid "That saved search/replace already exists and will be overwritten. Are you sure?"
msgstr ""
@@ -7076,7 +7156,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:440
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:959
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:957
msgid "&Date:"
msgstr ""
@@ -7448,12 +7528,12 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:682
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:687
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:899
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:897
msgid "This ISBN number is valid"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:690
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:906
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:904
msgid "This ISBN number is invalid"
msgstr ""
@@ -7464,39 +7544,39 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:849
-msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes"
+msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes. Apply changes?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:807
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:805
msgid "Timed out"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:808
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:806
msgid "The download of social metadata timed out, the servers are probably busy. Try again later."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:815
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:813
msgid "There were errors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:816
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:814
msgid "There were errors downloading social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:850
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:848
msgid "Cannot fetch metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:851
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:849
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:946
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:944
#: /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:947
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:945
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:303
msgid "Could not open %s. Is it being used by another program?"
msgstr ""
@@ -7554,7 +7634,7 @@ msgid "Remove unused series (Series that have no books)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:439
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:872
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:870
msgid "IS&BN:"
msgstr ""
@@ -7563,7 +7643,7 @@ msgid "dd MMM yyyy"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:442
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1010
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1008
msgid "Publishe&d:"
msgstr ""
@@ -7664,6 +7744,30 @@ msgstr ""
msgid "Aborting..."
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:23
+msgid "Restoring database from backups, do not interrupt, this will happen in three stages"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:25
+msgid "Restoring database"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:79
+msgid "Your list of books, with all their metadata is stored in a single file, called a database. In addition, metadata for each individual book is stored in that books' folder, as a backup. This operation will rebuild the database from the individual book metadata. This is useful if the database has been corrupted and you get a blank list of books. Note that restoring only restores books, not any settings stored in the database, or any custom recipes. Do you want to restore the database?"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:102
+msgid "Restoring database failed, click Show details to see details"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:107
+msgid "Restoring the database succeeded with some warnings click Show details to see the details."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:112
+msgid "Restoring database was successful"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor.py:55
msgid "The current saved search will be permanently deleted. Are you sure?"
msgstr ""
@@ -8402,7 +8506,7 @@ msgid "Attached, you will find the e-book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/email.py:247
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:186
msgid "by"
msgstr ""
@@ -8964,35 +9068,35 @@ msgstr ""
msgid "If you are sure it is not running"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:322
-msgid "Cannot Start "
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:323
-msgid "%s is already running."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:326
msgid "may be running in the system tray, in the"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:328
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:325
msgid "upper right region of the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:330
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:327
msgid "lower right region of the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:333
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:330
msgid "try rebooting your computer."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:335
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:332
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:346
msgid "try deleting the file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:335
+msgid "Cannot Start "
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:336
+msgid "%s is already running."
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:20
msgid "Redirect console output to a dialog window (both stdout and stderr). Useful on windows where GUI apps do not have a output streams."
msgstr ""
@@ -9041,11 +9145,11 @@ msgstr ""
msgid "Tags categorize the book. This is particularly useful while searching. The log will be displayed automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:494
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:533
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:570
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. Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:596
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:599
msgid ""
" is communicating with the device! Migrating old database to ebook library in %sHelp
\n"
+"\n"
+" \n"
+"
\n"
+"\n"
+"
They can be any wordsor phrases, separated by commas."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:913
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:911
msgid "&Publisher:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:978
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:976
msgid "Clear date"
msgstr ""
@@ -9823,97 +9927,109 @@ msgstr ""
msgid "Delete plugboard"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:110
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:179
msgid "%(plugin_type)s %(plugins)s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:111
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:180
msgid "plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:120
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:189
msgid ""
"\n"
"Customization: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:218
+msgid "Search for plugin"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:226
+msgid "No matches"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:227
+msgid "Could not find any matching plugins"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:268
msgid "Add plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:170
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:276
msgid "Installing plugins is a security risk. Plugins can contain a virus/malware. Only install it if you got it from a trusted source. Are you sure you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:181
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:287
msgid "Plugin {0} successfully installed under {1} plugins. You may have to restart calibre for the plugin to take effect."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:295
msgid "No valid plugin path"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:296
msgid "%s is not a valid plugin path"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:305
msgid "Select an actual plugin under %s to customize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:311
msgid "Plugin cannot be disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:312
msgid "The plugin: %s cannot be disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:322
msgid "Plugin not customizable"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:323
msgid "Plugin: %s does not need customization"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:229
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:329
msgid "Must restart"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:230
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:330
msgid "You must restart calibre before you can configure the %s plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:235
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:335
msgid "Plugin {0} successfully removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:343
msgid "Cannot remove builtin plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:244
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:344
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:59
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:87
msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:60
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:90
msgid "Enable/&Disable plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:61
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:91
msgid "&Customize plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:62
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:92
msgid "&Remove plugin"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:93
msgid "&Add a new plugin"
msgstr ""
@@ -10016,7 +10132,7 @@ msgid "Here you can control how calibre will save your books when you click the
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:75
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:381
msgid "Failed to start content server"
msgstr ""
@@ -10598,62 +10714,62 @@ msgstr ""
msgid "The following books have already been converted to %s format. Do you wish to reconvert them?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:192
msgid "&Restore"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:194
msgid "&Donate to support calibre"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:200
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:198
msgid "&Eject connected device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:245
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:243
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:307
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:308
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
msgid "You have started calibre in debug mode. After you quit calibre, the debug log will be available in the file: %s
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
-msgid "WARNING: Active jobs"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:603
+msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:674
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray."
msgstr ""
@@ -11766,11 +11882,11 @@ msgid "Unknown files in books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/check_library.py:33
-msgid "Missing covers in books"
+msgid "Missing covers files"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/check_library.py:34
-msgid "Extra covers in books"
+msgid "Cover files not in database"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/check_library.py:35
@@ -12246,15 +12362,15 @@ msgstr ""
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2629
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2631
msgid "