Añadir su lugar de novedades preferido — documentación de calibre

calibre tiene un composición fuerte, maleable y simple de utilizar para bajar novedades de Internet y transformarlas en un libro electrónico. Ahora se le mostrará, mediante ejemplos, de qué manera entrar a las novedades de numerosos sitios de Internet.

Para abarcar mejor de qué manera usar la composición, prosiga los ejemplos en el orden correcto ahora:

Si la fuente de novedades es bastante fácil, posiblemente calibre sea con la capacidad de conseguir las novedades de manera completamente automática, todo cuanto debe llevar a cabo es proveer el dirección de Internet. calibre reúne toda la información que se requiere para bajar una fuente de novedades en una fórmula. Si desea añadir una fuente de novedades en calibre, debe hacer una fórmula para eso. Observemos ciertos ejemplos:

El weblog de calibre es un weblog de ​​mensajes que describen numerosas peculiaridades útiles de calibre de una forma simple y alcanzable para los nuevos individuos de calibre. Para bajar esta bitácora en un libro electrónico, nos fundamentamos en el RSS del weblog:

http://weblog.calibre-ebook.com/feeds/posts/default

Conseguimos la dirección dirección de Internet del RSS de la sección «Subscribe to» en el final de la página del weblog, escogiendo «Posts > Atom». Para lograr que calibre descargue los canales y los transforme en un libro electrónico, debe apretar con el botón derecho en el botón Conseguir novedades y después el elemento del menú Añadir una exclusiva fuente de novedades y el botón Novedosa fórmula. Se va a abrir un cuadro de diálogo semejante al que se expone ahora.

_images/custom_news.png

Primero introduzca Blogdecalibre en el campo Título de la fórmula. Este va a ser el título del libro electrónico que se va a crear desde los artículos que vienen de los canales precedentes.

Los 2 campos siguientes (Artículo más obsoleto y Número máximo de artículos por canal) le dejan supervisar cuántos artículos se descargan desde cada canal, los dos son bastante explícitos.

Para añadir los canales a la fórmula, introduzca el título y dirección dirección de Internet del canal y pulse en el botón Añadir canal. Una vez añadido el canal, sencillamente pulse en el botón Añadir o bien actualizar fórmula ¡y ahora está! Cierre el cuadro de diálogo.

Para evaluar la novedosa fórmula, pulse en el botón Conseguir novedades, en el submenú Personalizado, y en Weblog de calibre. En unos cuantos minutos, el nuevo libro electrónico descargado con las entradas al weblog aparecerá en la biblioteca primordial (si tiene conectado un gadget de lectura, aparecerá en en lugar de la biblioteca). Selecciónelo y pulse en el botón Exhibir para ojearlo.

La razón por la cual esto funcionó tan bien, con tan poco esfuerzo, es que el weblog brinda una fuente RSS con el contenido terminado, o sea, el contenido del artículo está engastado en nuestro canal de información. Para la mayor parte de las fuentes de novedades que ofrecen novedades así, con un canal RSS con el contenido terminado, no precisará superiores sacrificios para transformarlas en ebooks. En este momento observaremos en una fuente de novedades que no brinda un canal de novedades RSS con el contenido terminado. En estos canales, el artículo terminado es una página de Internet y el canal de información RSS solo tiene dentro un link a la página con un corto resumen del artículo.

Vamos a evaluar los siguentes 2 canales de The BBC:

Prosiga el trámite descrito previamente en El weblog de calibre para hacer una fórmula para La BBC (empleando los canales RSS nombrados más arriba). Al investigar el libro electrónico descargado, observamos que calibre hizo un trabajo encomiable al obtener solo el contenido que importante de la página de Internet de cada artículo. Por otro lado, el desarrollo de extracción no es especial. En ocasiones quedan contenidos no amigables como los menús y las ayudas a la navegación o bien se descarta contenido que debería ser mantenido, como las header de los artículos. A fin de que la extracción de contenido sea impecable, deberemos ajustar el desarrollo de Obtención, como se detalla en la próxima sección.

En el momento en que quiere perfeccionar el desarrollo de descarga, o bien bajar el contenido de un lugar de Internet especialmente complejo, puede servirse de toda la capacidad y elasticidad de la composición de una fórmula. Con ese fin, en el cuadro de diálogo Añadir novedosa fuente de novedades, sencillamente pulse en el botón Mudar a modo adelantado.

La personalización más simple y comúnmente más productiva es la utilización de la versión para imprimir de los artículos on line. La versión para imprimir comunmente tiene bastante menos contenido superfluo y se convierte de maner más dinámica en un libro electrónico. Vamos a intentar usar la versión impresa de los artículos de La BBC.

Lo primero que hay que hacer es buscar en el libro electrónico que descargamos antes de bbc.co.uk. En el final de cada artículo, en el libro electrónico, hay una pequeña reseña que afirma desde dónde fué descargado el artículo. Copie y pegue la dirección dirección de Internet en un navegador. En este momento en la página de Internet del artículo, busque un link que apunta a la «Versión para imprimir». Pulse en para poder ver la versión para imprimir del artículo. ¡Es considerablemente más limpia! En este momento compare las dos direcciones dirección de Internet. En mi caso eran:

Con lo que se ve que para conseguir la versión para imprimir, debemos poner enfrente de cada dirección de Internet de artículo:

En este momento en el Modo adelantado cuadro de diálogo de novedosas fuentes de novedades, debería ver algo de este modo (recuerde elegir la fórmula La BBC antes de mudar al modo adelantado):

_images/bbc_advanced.png

Se puede observar que los campos del Modo básico fueron traducidos a código Python de una forma directa. Requerimos añadir normas a fin de que esta fórmula utilice la versión para imprimir de los artículos. Todo cuanto se requiere es añadir las próximas 2 líneas:

defprint_version(self,url):returnurl.replace(\'https://\',\'https://newsvote.bbc.co.uk/mpapps/pagetools/print/\')

O sea Python, por lo cual la sangría es considerable. Tras añadir las líneas, ha de ser algo de esta forma:

_images/bbc_altered.png

En lo previo, defprint_version(self,url) define un procedimiento que es usado por calibre para cada artículo. url es la dirección dirección de Internet del artículo original. Lo que hace print_version es tomar la dirección dirección de Internet y reemplazarla por la novedosa dirección dirección de Internet que apunta a la versión para imprimir del artículo. Para estudiar sobre Python vea el cursillo (en inglés).

En este momento, pulse en el botón Añadir o bien actualizar fórmula y se guardarán los cambios. Vuelva a bajar el libro electrónico. En este momento debe tener un libro electrónico muy mejorado. Entre los inconvenientes con la novedosa versión es que las clases de letra en la página de Internet de la versión impresa son muchos pequeños. O sea corregido de forma automática en el momento en que se transforma a un libro electrónico, mas inclusive tras el desarrollo de corrección, el tamaño de la letra de los menús y barra de navegación llegan a ser bastante grande con relación a el artículo del artículo. Para arreglar esto, vamos a ajustar un tanto más, en la próxima sección.

En la sección previo, vimos que el tamaño de letra para los artículos de la versión impresa de La BBC era bastante pequeño. En la mayor parte de sitios de Internet, incluido La BBC, el tamaño de letra se establece a través de las hojas de estilo CSS. Tenemos la posibilidad de inhabilitar la obtención de estas hojas de estilo agregando esta línea:

no_stylesheets=True

La fórmula queda en este momento como:

_images/bbc_altered1.png

La novedosa versión está bastante bien. Si es perfeccionista, deseará leer la próxima sección, que trata de llevar a cabo cambios en el contenido descargado.

calibre tiene dentro funcionalidades poderosísimas y flexibles en el momento de manejar el contenido descargado. Para exhibir unos cuantos , echemos un nuevo vistazo a nuestra vieja amiga, la fórmula La BBC. Viendo el código fuente (HTML) de unos cuantos artículos (ediciones para imprimir), observamos que tienen un pie de página que no tiene dentro ninguna información útil, que figura en

<divclass="pié de página">...</div>

Esto se puede suprimir añadiendo:

remove_tags=[dict(name=\'div\',attrs=)]

a la fórmula. Por último, reemplacemos una parte del CSS que deshabilitamos previamente, con nuestro CSS, más correcto para la conversión en un libro electrónico:

extra_css=\'.headline  \n .fact \'

Con estos añadidos, nuestra fórmula alcanzó «calidad de producción».

Esta fórmula exhibe solo la punta del iceberg en lo concerniente a la capacidad de calibre. Para examinar más sobre las habilidades de calibre, examinaremos un caso de muestra de la vida real más complejo en la próxima sección.

Un caso de muestra real bastante complejo que muestra más unas partes de la Interfaz de programación de aplicaciones de BasicNewsRecipe es la fórmula de The New York Times

importstring,refromcalibreimportstrftimefromcalibre.web.feeds.recipesimportBasicNewsRecipefromcalibre.libros electrónicos.BeautifulSoupimportBeautifulSoupclassNYTimes(BasicNewsRecipe):title=\'The New York Times\'__author__=\'Kovid Goyal\'description=\'Daily news from the New York Times\'timefmt=\' [%a, %d %b, %Y]\'needs_subscription=Trueremove_tags_before=dict(id=\'article\')remove_tags_after=dict(id=\'article\')remove_tags=[dict(attrs=),dict(id=[\'footer\',\'toolsRight\',\'articleInline\',\'navigation\',\'archive\',\'side_search\',\'blog_sidebar\',\'side_tool\',\'side_index\']),dict(name=[\'script\',\'noscript\',\'style\'])]encoding=\'cp1252\'no_stylesheets=Trueextra_css=\'h1 \n.byline \'defget_browser(self):br=BasicNewsRecipe.get_browser()ifself.usernameisnotNoneandself.passwordisnotNone:br.open(\'https://www.nytimes.com/auth/login\')br.select_form(name=\'login\')br[\'USERID\']=self.usernamebr[\'PASSWORD\']=self.passwordbr.submit()returnbrdefparse_index(self):soup=self.index_to_soup(\'https://www.nytimes.com/pages/todayspaper/index.html\')deffeed_title(div):return\'\'.join(div.findAll(text=True,recursive=False)).strip()articles=key=Noneans=[]fordivinsoup.findAll(True,attrs=):if\'\'.join(div[\'class\'])==\'section-headline\':key=string.capwords(feed_title(div))articles[key]=[]ans.append(key)elif\'\'.join(div[\'class\'])in[\'story\',\'story headline\']:a=div.find(\'a\',href=True)ifnota:continueurl=re.sub(r\'\?.*\',\'\',a[\'href\'])url+=\'?pagewanted=all\'title=self.tag_to_string(a,use_alt=True).strip()description=\'\'pubdate=strftime(\'%a, %d %b\')summary=div.find(True,attrs=)ifsummary:description=self.tag_to_string(summary,use_alt=False)feed=keyifkeyisnotNoneelse\'Uncategorized\'iffeednotinarticles:articles[feed]=[]ifnot\'podcasts\'inurl:articles[feed].append(dict(title=title,url=url,date=pubdate,description=description,content=\'\'))ans=self.sort_index_by(ans,)ans=[(key,articles[key])forkeyinansifkeyinarticles]returnansdefpreprocess_html(self,soup):refresh=soup.find(\'misión\',)ifrefreshisNone:returnsoupcontent=refresh.get(\'content\').partition(\'=\')[2]raw=self.browser.open(\'https://www.nytimes.com\'+content).read()returnBeautifulSoup(raw.decode(\'cp1252\',\'replace\'))

Observamos numerosas peculiaridades novedosas en esta fórmula. Antes que nada, poseemos:

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

Esto provoca que la fecha que hace aparición en la primera página del libro electrónico desarrollado se muestre en este formato, Día,NúmerodedíaMes,Año. Vea: attr:timefmt .

Después observamos un conjunto de ordenes para depurar el HTML descargado:

remove_tags_before=dict(name=\'h1\')remove_tags_after=dict(id=\'pié de página\')remove_tags=...

Estas suprimen todo cuanto hay antes de la primera etiqueta

y todo cuanto hay tras la primera etiqueta cuyo id es pié de página. Véanse remove_tags, remove_tags_before, remove_tags_after.

La próxima función atrayente es:

needs_subscription=True...defget_browser(self):...

needs_subscription=True le comunica a calibre que esta fórmula requiere un nombre de usuario y contraseña para lograr entrar al contenido. Esto provoca que calibre solicite un nombre de usuario y contraseña siempre que intente usar esta fórmula. El código en calibre.web.feeds.news.BasicNewsRecipe.get_browser() es el que verdaderamente comienza la sesión en el lugar de Internet del New York Times. Una vez iniciada la sesión, calibre empleará esta sesión para conseguir todo el contenido. Véase mechanize para comprender el código en get_browser.

La próxima novedosa función es el procedimiento calibre.web.feeds.news.BasicNewsRecipe.parse_index(). Su trabajo radica en proceder a https://www.nytimes.com/pages/todayspaper/index.html a buscar la lista de los artículos que se muestran en el número de el día de hoy. Si bien es más complicada que sencillamente utilizar el RSS, la fórmula crea un libro electrónico que se corresponde muy de cerca con el jornal del día. parse_index hace un empleo intensivo de BeautifulSoup para investigar la página del períodico. Asimismo puede usar otros programas de análisis, más modernos, si no le agrada BeatifulSoup. calibre tiene dentro lxml y html5lib, que son los programas de análisis sugeridos. Para emplearlos, reemplace la llamada a index_to_soup() por lo siguiente:

raw=self.index_to_soup(url,raw=True)# For html5libimporthtml5libroot=html5lib.parse(raw,namespaceHTMLElements=False,treebuilder=\'lxml\')# For the lxml html 4 parserfromlxmlimporthtmlroot=html.fromstring(raw)

La última novedosa característica es el procedimiento calibre.web.feeds.news.BasicNewsRecipe.preprocess_html(). Se puede usar para efectuar transformaciones arbitrarias en todos y cada página HTML descargada. Aquí se utiliza para evadir la propaganda que nytimes exhibe antes de cada artículo.

La mejor forma de desarrollar novedosas fórmulas es usar el diseño de línea de órdenes. Cree la fórmula empleando su editor de Python preferido y guárdela en un fichero, afirmemos mifórmula.recipe. La extensión .recipe es precisa. Puede bajar contenido empleando esta fórmula con la orden:

ebook-convertmyrecipe.recipe.epub--test-vv--debug-pipelinedebug

La orden ebook-convert descargará todas y cada una de las páginas de Internet y las guardará en el fichero EPUB mifórmula.epub. La opción -vv provoca que ebook-convert muestre una cantidad enorme de información sobre lo que hace. La opción ebook-convert-recipe-input–test provoca que se descargue solo unos cuantos artículos de un máximo de 2 canales RSS. Además de esto, ebook-convert va a poner el HTML descargado en el directorio debug/input, donde debug es el directorio que haya detallado en la opción :option:`ebook-convert –debug-pipeline.

Cuando la descarga está completa, puede ver el HTML descargado abriendo el fichero debug/input/index.html en un navegador. En el momento en que que esté satisfecho con la descarga y el procesado previo, puede producir ebooks en distintas formatos, como se expone ahora:

ebook-convertmyrecipe.recipemyrecipe.epubebook-convertmyrecipe.recipemyrecipe.mobi...

Si está satisfecho con fórmula y cree que hay bastante demanda para justificar su inclusión en el grupo de fórmulas incorporadas, compártala en el Foro de discusión de fórmulas de calibre (en inglés).

Nota

En macOS, las utilidades de línea de órdenes están en el pack calibre, por servirnos de un ejemplo, si instaló calibre en /Apps las utilidades de línea de órdenes están en :archivo:/Apps/calibre.aplicación/Contents/MacOS/`.

Ver asimismo

ebook-convert

El diseño de la línea de órdenes para todas y cada una de las conversiones de ebooks.

Deja un comentario