Documentación de la API para fórmulas

La API para crear fórmulas está definida por la clase BasicNewsRecipe

class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)[fuente]

La clase base que contiene la lógica necesaria para todas las fórmulas. Reemplazando progresivamente las distintas funciones de esta clase, puede generar fórmulas cada vez más personalizadas y potentes. Para un cursillo introductorio a la creación de fórmulas, véase Añadir su sitio de noticias favorito.

abort_article(msg=None)[fuente]

Ejecute este método dentro de cualquiera de los métodos de preprocesado para cancelar la descarga del artículo actual. Es útil para evitar la descarga de artículos con contenido no adecuado, como artículos que sólo contienen vídeos.

abort_recipe_processing(msg)[fuente]

Hace que el sistema de descarga de fórmulas cancele la descarga de esta fórmula, mostrando al usuario un mensaje de información sencillo.

add_toc_thumbnail(article, src)[fuente]

Utilice este método desde populate_article_metadata con el atributo src de una etiqueta <img> del artículo que quiera usar como la miniatura que representa el artículo en el índice. Si la miniatura se usa realmente o no dependerá del dispositivo (actualmente sólo la usan los Kindles). Tenga en cuenta que la imagen a que se hace referencia debe haber sido descargada con éxito, de lo contrario se ignorará.

classmethod adeify_images(soup)[fuente]

Si la fórmula, al ser convertida a EPUB, tiene problemas con las imágenes cuando se muestra en Adobe Digital Editions, utilice este método desde postprocess_html().

canonicalize_internal_url(url, is_link=True)[fuente]

Devuelve un conjunto de representaciones canónicas de url. La implementación predeterminada usa el nombre del servidor y la ruta de acceso del URL, descartando parámetros de consulta, fragmentos, etc. Las representaciones canónicas deben ser únicas para todos los URL de esta fuente de noticias. Si no lo son, los enlaces internos pueden ser incorrectos.

Parámetros:

is_link – Es True si el URL viene de un enlace interno en un archivo HTML. False si el URL es el URL usado para descargar un artículo.

cleanup()[fuente]

Usado cuando todos los artículos han sido descargados. Úselo para hacer limpieza, como cerrar sesiones en los sitios que requieren suscripción, etc.

clone_browser(br)[fuente]

Clonar el navegador br. Los navegadores clonados se utilizan para las descargas multihilo, ya que mechanize no es seguro. Las rutinas de clonación predeterminadas deberían reconocer la mayoría de las personalizaciones del navegador, pero si se hace algo exótico en una fórmula, debe sustituir este método en la fórmula y clonarlo de forma manual.

Los navegadores clonados usan el mismo CookieJar seguro en varios hilos, de manera predeterminada, a menos que haya personalizado el manejo de las cookies.

default_cover(cover_file)[fuente]

Crear una portada genérica para las fórmulas que no poseen una.

download()[fuente]

Descargar y preprocesar todos los artículos de los canales RSS en esta fórmula. Este método debe utilizarse una sola vez en cada fórmula. Si se usa más de una vez se obtendrá un comportamiento indefinido. :return:`Ruta de acceso al index.html`

extract_readable_article(html, url)[fuente]

Extrae el contenido del artículo principal desde «html», lo depura y lo devuelve como una tupla (html_artículo, título_extraído). Basado en el algoritmo Readability original de Arc90.

get_article_url(article)[fuente]

Sustituir en una subclase para personalizar la extracción del URL que apunta al contenido de cada artículo. Devuelve el URL del artículo. Se ejecuta con article, un objeto que representa un artículo analizado de un canal. Véase feedparser. De manera predeterminada busca el enlace original (para canales agregados mediante un servicio como FeedBurner o Pheedo) y, si se encuentra, devuelve dicho enlace o article.link en caso contrario.

get_browser(*args, **kwargs)[fuente]

Devuelve un navegador utilizado para obtener documentos desde Internet. De manera predeterminada devuelve un navegador mechanize que soporta cookies, ignora robots.txt, tiene en cuenta los refrescos y tiene un agente de usuario aleatorio común.

Para personalizar el navegador, sustituya este método en la subclase como:

def get_browser(self, *a, **kw):
    br = super().get_browser(*a, **kw)
    # Add some headers
    br.addheaders += [
        ('My-Header', 'one'),
        ('My-Header2', 'two'),
    ]
    # Set some cookies
    br.set_cookie('name', 'value')
    br.set_cookie('name2', 'value2', domain='.mydomain.com')
    # Make a POST request with some data
    br.open('https://someurl.com', {'username': 'def', 'password': 'pwd'}).read()
    # Do a login via a simple web form (only supported with mechanize browsers)
    if self.username is not None and self.password is not None:
        br.open('https://www.nytimes.com/auth/login')
        br.select_form(name='login')
        br['USERID']   = self.username
        br['PASSWORD'] = self.password
        br.submit()
    return br
get_cover_url()[fuente]

Devuelve un URL para la imagen de portada de este número o None. De manera predeterminada, devuelve el valor del miembro self.cover_url que es normalmente None. Si quiere que la fórmula descargue una portada para el libro electrónico reemplace este método en la subclase, o establezca la variable miembro self.cover_url antes de utilizar este método.

get_extra_css()[fuente]

De manera predeterminada devuelve self.extra_css. Reemplácelo si desea generar el archivo extra_css mediante un programa.

get_feeds()[fuente]

Devuelve una lista de canales RSS para obtener en este perfil. Cada elemento de la lista debe ser una tupla de 2 elementos de la forma (título, url). Si el título es None o un texto vacío, se utiliza el título del canal RSS. Este método es útil si la fórmula tiene que hacer algún tipo de procesado para obtener la lista de canales RSS para descargar. Si es así, reemplácelo en la subclase.

get_masthead_title()[fuente]

Reemplácelo en la subclase para usar algo distinto del título de la fórmula

get_masthead_url()[fuente]

Devuelve un URL a la imagen de cabecera de este número o None. De manera predeterminada, devuelve el valor del miembro self.masthead_url que es normalmente None. Si quiere que la fórmula descargue una imagen de cabecera para el libro electrónico reemplace este método en la subclase, o establezca la variable miembro self.masthead_url antes de utilizar este método. Las imágenes de cabecera se usan en los archivos MOBI de Kindle.

get_obfuscated_article(url)[fuente]

Si activa articles_are_obfuscated, este método se ejecuta para cada URL de artítulo. Debe devolver la ruta a un archivo en el sistema de archivos que contiene el HTML del artículo. El archivo se procesa con el motor recursivo de HTML, por lo que puede contener enlaces a páginas o imágenes en la red. Alternativamente, puede devolver un diccionario de la forma {“data”: <datos HTML>, “url”: <el URL resuelto del artículo>}. Esto evita la creación de archivos temporales. La entrada url del diccionario es útil si el URL efectivo del artículo es distinto del URL que se le pasa a este método, por ejemplo debido a redirecciones. Se puede omitir si el URL no cambia.

Este método es normalmente útil para sitios que tratan de dificultar el acceso automático al contenido de los artículos.

get_url_specific_delay(url)[fuente]

Devuelve el retraso en segundos antes de descargar este URL. Si desea determinar mediante programación el retraso para el URL especificado, sustituya este método en la subclase y haga que devuelva self.delay de forma predeterminada para los URL que no desee afectar.

Devuelve:

Un número de coma flotante, el retraso en segundos.

classmethod image_url_processor(baseurl, url)[fuente]

Realiza algún procesado sobre las direcciones URL de las imágenes (tal vez eliminando restricciones de tamaño para imágenes generadas dinámicamente, etc.) y devuelve la dirección URL procesada. Devolver None o un texto vacío para omitir la imagen.

index_to_soup(url_or_raw, raw=False, as_tree=False, save_raw=None)[fuente]

Método práctico que toma el URL de una página de índice y devuelve un objeto BeautifulSoup que lo representa.

url_or_raw: Un URL o la página de índice descargada como texto

Devuelve True si el enlace debe seguirse o False en caso contrario. De manera predeterminada, presenta NotImplementedError, que hace que el programa de descarga lo ignore.

Parámetros:
  • url – La dirección URL que debe seguirse

  • tag – La etiqueta de la que se extrajo la dirección URL

parse_feeds()[fuente]

Crea una lista de artículos desde la lista de canales devuelta por BasicNewsRecipe.get_feeds(). Devuelve una lista objetos Feed.

parse_index()[fuente]

Este método debe implementarse en las fórmulas que analizan una página de Internet en lugar de canales RSS para generar una lista de artículos. Normalmente se usa con fuentes de noticias que tienen una página del tipo «edición impresa» que enumera todos los artículos de la edición impresa actual. Si se implementa esta función, se usará con prioridad sobre BasicNewsRecipe.parse_feeds().

Debe devolver una lista. Cada elemento de la lista debe ser una tupla de 2 elementos de la forma ('título del canal', lista de artículos).

Cada lista de artículos deben contener diccionarios del tipo:

{
'title'       : article title,
'url'         : URL of print version,
'date'        : The publication date of the article as a string,
'description' : A summary of the article
'content'     : The full article (can be an empty string). Obsolete
                do not use, instead save the content to a temporary
                file and pass a file:///path/to/temp/file.html as
                the URL.
}

Como ejemplo, véase la fórmula para descargar The Atlantic. Además, puede añadir «author» para el autor del artículo.

Si desea cancelar el proceso por alguna razón y hacer que calibre muestre al usuario un simple mensaje en lugar de un error, use abort_recipe_processing().

populate_article_metadata(article, soup, first)[fuente]

Se ejecuta al descargar cada página HTML perteneciente al artículo article. Pensado para obtener metadatatos del artículo como autor, resumen, etc. del HTML procesado (soup).

Parámetros:
  • article – Un objeto de la clase calibre.web.feeds.Article. Si cambia el resumen, recuerde cambiar también text_summary

  • soup – HTML procesado perteneciente a este artículo

  • first – True si y sólo si el HTML procesado es la primera página del artículo.

postprocess_book(oeb, opts, log)[fuente]

Ejecutar cualquier procesado posterior necesario sobre el libro electrónico descargado.

Parámetros:
  • oeb – Un objeto OEBBook

  • opts – Opciones de conversión

postprocess_html(soup, first_fetch)[fuente]

Este método se ejecuta con el código fuente de cada archivo HTML, después de analizar sus imágenes y enlaces. Puede usarse para efectuar un procesado arbitrario sobre el HTML. Debe devolver soup después del procesado.

Parámetros:
  • soup – Un objeto BeautifulSoup que contiene el HTML descargado.

  • first_fetch – True si ésta es la primera página de un artículo.

preprocess_html(soup)[fuente]

Este método se ejecuta con el código fuente de cada archivo HTML, antes de analizar sus imágenes y enlaces. Se ejecuta después de la limpieza especificada por remove_tags, etc. Puede usarse para efectuar un preprocesado arbitrario sobre el HTML. Debe devolver soup después del procesado.

soup: Un objeto BeautifulSoup que contiene el HTML descargado.

preprocess_image(img_data, image_url)[fuente]

Procesa los datos de imagen descargados. Se ejecuta sobre los datos en bruto antes de cualquier redimensionado. Debe devolver los datos procesados. Para descartar la imagen devuelva None.

preprocess_raw_html(raw_html, url)[fuente]

Este método se ejecuta con el código fuente de cada archivo HTML, antes de convertirlo en un árbol de objetos. raw_html es un texto unicode que representa el HTML en bruto descargado de Internet. url es la dirección URL desde donde se descargó el HTML.

Tenga en cuenta que este método actúa antes de preprocess_regexps.

Este método debe devolver el archivo raw_html procesado como un objeto unicode.

classmethod print_version(url)[fuente]

Tomar un url que apunta a la página de Internet con el contenido del artículo y devuelve el URL de la versión para imprimir del artículo. De manera predeterminada no hace nada. Por ejemplo:

def print_version(self, url):
    return url + '?&pagewanted=print'
publication_date()[fuente]

Use este método para establecer la fecha de publicación de este número. De manera predeterminada es el momento de la descarga. Debe devolver un objeto datetime.datetime.

skip_ad_pages(soup)[fuente]

Este método se ejecuta con el código fuente de cada archivo HTML descargado, antes de aplicar ningún atributo de limpieza como remove_tags o keep_only_tags. Tenga en cuenta que preprocess_regexps ya se habrá aplicado. Está pensado para permitir que la fórmula evite las páginas de publicidad. Si soup representa una página de publicidad, devuelve el HTML de la página real. De lo contrario devuelve None.

soup: Un objeto BeautifulSoup que contiene el HTML descargado.

sort_index_by(index, weights)[fuente]

Método práctico para ordenar los títulos en index según weights. index se ordena en su lugar. Devuelve index.

index: Una lista de títulos.

weights: Un diccionario que asigna pesos a los títulos. Si un título del índice no está en weights, se asume que tiene un peso de 0.

classmethod tag_to_string(tag, use_alt=True, normalize_whitespace=True)[fuente]

Método práctico que toma un objeto Tag de BeautifulSoup y extrae el texto recursivamente, incluyendo secciones CDATA y atributos «alt». Devuelve un texto Unicode posiblemente vacío.

use_alt: Si es True intenta usar el atributo «alt» para las etiquetas que no poseen contenido textual

tag: Un objeto Tag de BeautifulSoup

articles_are_obfuscated = False

Establézcalo a True e implemente get_obfuscated_article() para manejar sitios de Internet que tratan de dificultar la obtención de contenido.

auto_cleanup = False

Extrae automáticamente todo el texto de las páginas de artículos descargadas. Utiliza los algoritmos del proyecto Readability. Si se establece en True, no hay necesidad de preocuparse de limpiar el código HTML manualmente (aunque la limpieza manual siempre será mejor).

auto_cleanup_keep = None

Especifica los elementos que el algoritmo de limpieza automática no debe eliminar nunca. La sintaxis es una expresión XPath. Por ejemplo:

auto_cleanup_keep = '//div[@id="article-image"]' will keep all divs with
                                               id="article-image"
auto_cleanup_keep = '//*[@class="important"]' will keep all elements
                                            with class="important"
auto_cleanup_keep = '//div[@id="article-image"]|//span[@class="important"]'
                  will keep all divs with id="article-image" and spans
                  with class="important"
browser_type = 'mechanize'

El motor de navegador simulado que se usará para descargar de los servidores. De manera predeterminada se usa el motor de navegador de Python mechanize, que permite iniciar sesión. Sin embargo, si no es necesario iniciar sesión, considere cambiarlo a «webengine», que usa un navegador Chromium real para realizar las peticiones de red, o «qt», que usa el sistema Qt Networking. Tanto «webengine» como «qt» permiten usar HTTP/2, a diferencia de mechanize, y son por lo tanto más difíciles de identificar por parte de servicios de protección contra bots.

center_navbar = True

Si es True la barra de navegación se alinea al centro, en caso contrario se alinea a la izquierda

compress_news_images = False

Set this to False to ignore all scaling and compression parameters and pass images through unmodified. If True and the other compression parameters are left at their default values, images will be scaled to fit in the screen dimensions set by the output profile and compressed to size at most (w * h)/16 where w x h are the scaled image dimensions.

compress_news_images_auto_size = 16

El factor utilizado cuando se comprimen automáticamente las imágenes JPEG. Si se establece en None, la compresión automática se desactiva. De lo contrario, las imágenes se reducirán a un tamaño en bytes de (w × h)/compress_news_images_auto_size, si es posible, reduciendo el nivel de calidad, donde «w» y «h» son la anchura y la altura de la imagen en píxeles. La calidad mínima del JPEG será 5/100 por lo que es posible que no pueda cumplirse con esta restricción. Este parámetro se puede anular con el parámetro compress_news_images_max_size, que proporciona un tamaño máximo fijo para las imágenes. Tenga en cuenta que si se habilita scale_news_images_to_device entonces la imagen se ampliará primero y luego su calidad se reducirá hasta que su tamaño sea menor que (w × h)/factor donde «w» y «h» son ahora las dimensiones de la imagen redimensionada. En otras palabras, esta compresión ocurre después del redimensionado.

compress_news_images_max_size = None

Establece la calidad de los archivos JPEG para que las imágenes no excedan el tamaño dado (en kbytes). Si se establece este parámetro, la compresión automática vía compress_news_images_auto_size no tiene lugar. La calidad mínima del JPEG será 5/100 por lo que es posible que no pueda cumplirse con esta restricción.

conversion_options = {}

Opciones específicas de la fórmula para controlar la conversión del contenido descargado en un libro electrónico. Éstas tienen prioridad sobre cualquier valor especificado por el usuario o un complemento, por lo que deben utilizarse sólo si es absolutamente necesario. Por ejemplo:

conversion_options = {
  'base_font_size'   : 16,
  'linearize_tables' : True,
}
cover_margins = (0, 0, '#ffffff')

De manera predeterminada, la imagen de portada devuelta por get_cover_url() se utilizará como portada para la publicación. Si se establece un valor para esta variable en una fórmula, calibre colocará la portada descargada dentro de un marco cuya anchura y altura se expresan como un porcentaje de la portada descargada. cover_margins = (10, 15, “#ffffff”) rellena la portada con un margen blanco de 10px a la izquierda y derecha, 15px en la parte superior e inferior. Los nombres de los colores se definen aquí. Tenga en cuenta que, por alguna razón, «white» no siempre funciona en Windows. Utilice «#ffffff» en su lugar.

delay = 0

El retraso predeterminado entre descargas consecutivas en segundos. El argumento puede ser un número de coma flotante para indicar un tiempo más preciso. Ver get_url_specific_delay() para implementar retrasos por URL.

description = ''

Un par de líneas que describen el contenido que descarga esta fórmula. Se usará principalmente en una interfaz gráfica que presenta una lista de fórmulas.

encoding = None

Especifica una codificación para los sitios que tienen una especificación de conjunto de caracteres incorrecta. El error más común es declarar latin1 y usar cp1252. Si es None, trata de detectar la codificación. Si es un método ejecutable, se usará con dos argumentos: el objeto de la fórmula y el código fuente para descodificar. Debe devolver el código descodificado.

extra_css = None

Especifique cualquier CSS extra que debe añadirse a los archivos HTML descargados. Será insertado en etiquetas <style>, justo antes de la etiqueta de cierre </head> sustituyendo así todos los CSS excepto los que estén declarados mediante el atributo style en etiquetas HTML individuales. Tenga en cuenta que si desea generar un archivo extra_css mediante un programa debe reemplazar el método get_extra_css(). Por ejemplo:

extra_css = '.heading { font: serif x-large }'
feeds = None

Lista de canales para descargar. Puede ser [url1, url2, ...] o [('título1', url1), ('título2', url2), ...]

filter_regexps = []

Lista de expresiones regulares que determina qué enlaces ignorar. Si está vacía no se tiene en cuenta. Usado sólo si is_link_wanted no está implementado. Por ejemplo:

filter_regexps = [r'ads\.doubleclick\.net']

eliminará todos los URL que contengan ads.doubleclick.net.

Sólo uno de entre BasicNewsRecipe.match_regexps y BasicNewsRecipe.filter_regexps deben definirse.

handle_gzip = True

Establézcalo en False para no usar transferencias comprimidas con gzip con el navegador mechanize. Tenga en cuenta que algunos servidores antiguos pueden fallar con gzip.

ignore_duplicate_articles = None

Ignorar duplicados de los artículos que están presentes en más de una sección. Un artículo duplicado es un artículo que tiene el mismo título o dirección URL. Para ignorar artículos con el mismo título, establézcalo como:

ignore_duplicate_articles = {'title'}

En cambio, para utilizar las direcciones URL, establézcalo como:

ignore_duplicate_articles = {'url'}

Para hacer que coincida el título o URL, establézcalo como:

ignore_duplicate_articles = {'title', 'url'}
keep_only_tags = []

Mantiene sólo las etiquetas especificadas y sus descendientes. El formato para especificar una etiqueta está definido en BasicNewsRecipe.remove_tags. Si la lista no está vacía, entonces la etiqueta <body> se vaciará y se volverá a llenar con las etiquetas que coincidan con las entradas en esta lista. Por ejemplo:

keep_only_tags = [dict(id=['content', 'heading'])]

mantendrá sólo las etiquetas que posean un atributo id igual a «content» o «heading».

language = 'und'

El idioma en que están las noticias. Debe ser un código ISO-639 de dos o tres letras

masthead_url = None

De forma predeterminada, calibre utilizará una imagen predeterminada para la cabecera (sólo Kindle). Sustituya esto en la receta para proporcionar un URL que se usará como cabecera.

match_regexps = []

Lista de expresiones regulares que determina qué enlaces seguir. Si está vacía, no se tiene en cuenta. Se usa sólo si is_link_wanted no está implementado. Por ejemplo:

match_regexps = [r'page=[0-9]+']

coincidirá con todas las direcciones URLs que posean page=algún número.

Sólo uno de entre BasicNewsRecipe.match_regexps y BasicNewsRecipe.filter_regexps deben definirse.

max_articles_per_feed = 100

Número máximo de artículos para descargar de cada canal. Esto es útil sobre todo para los canales que no tienen fechas en los artículos. Para la mayoría de los canales, debe usar BasicNewsRecipe.oldest_article

needs_subscription = False

Si es True, la interfaz gráfica pedirá al usuario un nombre y una contraseña para utilizar en la descarga. Si se establece en "optional" el nombre y contraseña serán opcionales.

no_stylesheets = False

Opción útil para desactivar la carga de hojas de estilo en los sitios de Internet que tienen hojas de estilo excesivamente complejas, poco apropiadas para la conversión a formatos de libro electrónico. Si es True, las hojas de estilo no se descargan ni procesan

oldest_article = 7.0

Artículo más antiguo para descargar desde la fuente de noticias. En días.

preprocess_regexps = []

Lista de reglas de sustitución regexp para ejecutar sobre los HTML descargados. Cada elemento de la lista debe ser una tupla de dos elementos. El primer elemento de la tupla debe ser una expresión regular compilada y el segundo un método ejecutable que toma un objeto de coincidencia único y devuelve un texto para sustituir a la coincidencia. Por ejemplo:

preprocess_regexps = [
   (re.compile(r'<!--Article ends here-->.*</body>', re.DOTALL|re.IGNORECASE),
    lambda match: '</body>'),
]

eliminará todo lo que haya entre <!–Article ends here–> y </body>.

publication_type = 'unknown'

Tipo de publicación. Establecer como «newspaper», «magazine» o «blog». Si se establece en None, no se escribirá el metadato de tipo de publicación en el archivo opf.

recipe_disabled = None

Establecer a un texto no vacío para desactivar esta fórmula. El texto se utilizará como el mensaje de desactivación.

recipe_specific_options = None

Opciones específicas para esta fórmula. Estarán disponibles para que el usuario las personalice en la pestaña Avanzado del cuadro de diálogo de Obtener noticias o en la línea de órdenes para ebook-convert. Las opciones se especifican como un diccionario que asocia cada nombre de opción con sus metadatos. Por ejemplo:

recipe_specific_options = {
    'edition_date': {
        'short': 'The issue date to download',
        'long':  'Specify a date in the format YYYY-mm-dd to download the issue corresponding to that date',
        'default': 'current',
    }
}

Cuando se ejecute la fórmula, self.recipe_specific_options será un diccionario que asocie cada nombre de opción con el valor especificado por el usuario para la opción. Si la opción no ha sido especificada por el usuario, tendrá el valor predeterminado especificado por “default”. Si no hay valor predeterminado, la opción no se encontrará en el diccionario cuando el usuario no la especifique.

recursions = 0

Número de niveles de enlaces para seguir en las páginas de internet de los artículos

remove_attributes = []

Lista de atributos para quitar de todas las etiquetas. Por ejemplo:

remove_attributes = ['style', 'font']
remove_empty_feeds = False

Si es True los canales vacíos se eliminan de la salida. Esta opción no tiene efecto si parse_index se reemplaza en la subclase. Está pensado sólo para las fórmulas que devuelven una lista de canales que utilizan feeds o get_feeds(). También se utiliza si se emplea la opción ignore_duplicate_articles.

remove_javascript = True

Opción útil para eliminar todas las etiquetas JavaScript del archivo HTML descargado

remove_tags = []

Lista de etiquetas para ser eliminadas. Las etiquetas especificadas se eliminan del HTML descargado. Cada etiqueta se especifica como un diccionario de la forma:

{
 name      : 'tag name',   #e.g. 'div'
 attrs     : a dictionary, #e.g. {'class': 'advertisment'}
}

Todas las claves son opcionales. Para una explicación completa de los criterios de búsqueda, véase Beautiful Soup (en inglés). Un ejemplo frecuente:

remove_tags = [dict(name='div', class_='advert')]

Esto eliminará todas las etiquetas <div class=»advert»> y todos sus elementos descendientes del HTML descargado.

remove_tags_after = None

Elimina todas las etiquetas que se aparecen después de la etiqueta especificada. La forma de especificar una etiqueta se muestra en BasicNewsRecipe.remove_tags. Por ejemplo:

remove_tags_after = [dict(id='content')]

eliminará todas las etiquetas después del primer elemento con id=»content».

remove_tags_before = None

Elimina todas las etiquetas que aparecen antes de la etiqueta especificada. La forma de especificar una etiqueta se da en BasicNewsRecipe.remove_tags. Por ejemplo:

remove_tags_before = dict(id='content')

eliminará todas las etiquetas antes del primer elemento con id=»content».

requires_version = (0, 6, 0)

Versión mínima de calibre necesaria para usar esta fórmula

Si es True los enlaces en los artículos descargados que apunten a otros artículos descargados se cambian para que apunten a la copia descargada del artículo en lugar de al URL original. Si lo establece en True, puede que también necesite implementar canonicalize_internal_url() para que funcione con el esquema URL del sitio web concreto.

reverse_article_order = False

Invierte el orden de los artículos de cada canal

scale_news_images = None

Dimensiones máximas (anchura, altura) para redimensionar las imágenes. Si scale_news_images_to_device es True, estas dimensiones son el tamaño de la pantalla del dispositivo establecido en el perfil de salida, a menos que no haya un perfil seleccionado, en cuyo caso se deja en el valor que se le haya asignado (de manera predeterminada None).

scale_news_images_to_device = True

Cambiar el tamaño de las imágenes para que quepan en la pantalla del dispositivo establecido por el perfil de salida. Se omite si no hay un perfil de salida seleccionado.

simultaneous_downloads = 5

Número de descargas simultáneas. Establecer en 1 si el servidor es exigente. Se reduce automáticamente a 1 si BasicNewsRecipe.delay > 0

summary_length = 500

Número máximo de caracteres en la descripción breve

template_css = '\n            .article_date {\n                color: gray; font-family: monospace;\n            }\n\n            .article_description {\n                text-indent: 0pt;\n            }\n\n            a.article {\n                font-weight: bold; text-align:left;\n            }\n\n            a.feed {\n                font-weight: bold;\n            }\n\n            .calibre_navbar {\n                font-family:monospace;\n            }\n    '

El CSS que se usa para dar el estilo a las plantillas, por ejemplo, las barras de navegación y los índices. En lugar de sustituir esta variable, puede usar extra_css en la fórmula para personalizar la apariencia.

timefmt = ' [%a, %d %b %Y]'

El texto de formato para la fecha que se muestra en la primera página. Predeterminado: Nombre_del_día, Número_del_día Nombre_del_mes Año

timeout = 120.0

Tiempo de espera para obtener archivos desde el servidor, en segundos

title = 'Fuente de noticias desconocida'

El título que se usará para el libro electrónico

use_embedded_content = None

Normalmente se intenta deducir si un canal contiene artículos completos incrustados, sobre la base de la longitud del contenido incrustado. Si es Ninguno, entonces se utiliza el método predeterminado. Si es True, se supone siempre que los canales contienen artículos incrustados y si es False, se supone siempre que los canales no contienen artículos incrustados.