Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > E-Book Software > Calibre > Recipes

Notices

Reply
 
Thread Tools Search this Thread
Old 02-10-2011, 02:53 PM   #1
desUBIKado
Member
desUBIKado began at the beginning.
 
Posts: 22
Karma: 12
Join Date: Feb 2009
Location: Zaragoza, Spain
Device: prs-505, iliad
New recipes in spanish. Weblogs SL (Xataka, Genbeta, VidaExtra & others)

Hi there,

I created a new recipe for Weblogs SL, collective blogs dedicated to following the news about technology, entertainment, lifestyle, motor, F1, sports and economy. There are blogs well known in Spain as Xataka, Genbeta, Vida Extra or Blog de Cine.

I made a recipe to download all the blogs at once, but this download may involve 25 to 30 MiB and nearly 1,500 pages in an ebook of 6 inches. For that reason, in addition to the main recipe, I created another five recipes, group blogs by areas: technology, entertainment, lifestyle, sports and economy. The sub-recipes downloads have a smaller size (5 to 8 MiB) and fewer pages (approximately 300 to 500).

Enjoy

Weblogs SL (All Blogs)

Code:
#!/usr/bin/env  python
__license__     = 'GPL v3'
__copyright__   = '4 February 2011, desUBIKado'
__author__      = 'desUBIKado'
__version__     = 'v0.05'
__date__        = '9, February 2011'
'''
http://www.weblogssl.com/
'''

import time
import re
from calibre.web.feeds.news import BasicNewsRecipe

class weblogssl(BasicNewsRecipe):
    __author__     = 'desUBIKado'
    description    = u'Weblogs colectivos dedicados a seguir la actualidad sobre tecnologia, entretenimiento, estilos de vida, motor, deportes y economia.'
    title          = u'Weblogs SL (Xataka, Genbeta, VidaExtra, Blog de Cine y otros)'
    publisher      = 'Weblogs SL'
    category       = 'Gadgets, Tech news, Product reviews, mobiles, science, cinema, entertainment, culture, tv, food, recipes, life style, motor, F1, sports, economy'
    language       = 'es'    
    timefmt        = '[%a, %d %b, %Y]'
    oldest_article = 1.5
    max_articles_per_feed = 100
    encoding       = 'utf-8'
    use_embedded_content  = False
    remove_empty_feeds    = True
    remove_javascript = True
    no_stylesheets = True 

    # Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
    # un caracter # por delante, es decir,  # (u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
    # haría que no se descargase Applesfera. OJO: El último feed no debe llevar la coma al final

    feeds              = [
                          (u'Xataka', u'http://feeds.weblogssl.com/xataka2'),
                          (u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil'),
                          (u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid'),
                          (u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto'),
                          (u'Xataka ON', u'http://feeds.weblogssl.com/xatakaon'),
                          (u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia'),
                          (u'Genbeta', u'http://feeds.weblogssl.com/genbeta'),
                          (u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
                          (u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra'),
                          (u'Naci\xf3n Red', u'http://feeds.weblogssl.com/nacionred'),
                          (u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine'),
                          (u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2'),
                          (u'Hipers\xf3nica', u'http://feeds.weblogssl.com/hipersonica'),
                          (u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero'),
                          (u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco'),
                          (u'Pop rosa', u'http://feeds.weblogssl.com/poprosa'),
                          (u'Zona FandoM', u'http://feeds.weblogssl.com/zonafandom'),
                          (u'Fandemia', u'http://feeds.weblogssl.com/fandemia'),
                          (u'Noctamina', u'http://feeds.weblogssl.com/noctamina'),
                          (u'Tendencias', u'http://feeds.weblogssl.com/trendencias'),
                          (u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas'),
                          (u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar'),
                          (u'Compradicci\xf3n', u'http://feeds.weblogssl.com/compradiccion'),
                          (u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera'),
                          (u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia'),
                          (u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica'),
                          (u'Ambiente G', u'http://feeds.weblogssl.com/ambienteg'),
                          (u'Arrebatadora', u'http://feeds.weblogssl.com/arrebatadora'),
                          (u'Mensencia', u'http://feeds.weblogssl.com/mensencia'),
                          (u'Peques y m\xe1s', u'http://feeds.weblogssl.com/pequesymas'),
                          (u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion'),
                          (u'Motorpasi\xf3n F1', u'http://feeds.weblogssl.com/motorpasionf1'),
                          (u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto'),
                          (u'Notas de futbol', u'http://feeds.weblogssl.com/notasdefutbol'),
                          (u'Fuera de l\xedmites', u'http://feeds.weblogssl.com/fueradelimites'),
                          (u'Salir a ganar', u'http://feeds.weblogssl.com/saliraganar'),
                          (u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2'),
                          (u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos'),
                          (u'Tecnolog\xeda Pyme', u'http://feeds.weblogssl.com/tecnologiapyme'),
                          (u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario')
                         ]
    

    keep_only_tags     = [dict(name='div', attrs={'id':'infoblock'}),
                          dict(name='div', attrs={'class':'post'}),
                          dict(name='div', attrs={'id':'blog-comments'})
                         ]

    remove_tags        = [dict(name='div', attrs={'id':'comment-nav'})]                         

    def print_version(self, url):
          return url.replace('http://www.', 'http://m.')

    preprocess_regexps = [     
                            # Para poner una linea en blanco entre un comentario y el siguiente
                           (re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c')
                         ]

    # Para sustituir el video incrustado de YouTube por una imagen

    def preprocess_html(self, soup):
        for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
            if video_yt:
               video_yt.name = 'img'
               fuente = video_yt['src']
               fuente2 = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
               fuente3 = fuente2.replace('?rel=0','') 
               video_yt['src'] = fuente3 + '/0.jpg'

        return soup

Weblogs SL (Technology)

Spoiler:

#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '4 February 2011, desUBIKado'
__author__ = 'desUBIKado'
__version__ = 'v0.05'
__date__ = '9, February 2011'
'''
http://www.weblogssl.com/
'''

import time
import re
from calibre.web.feeds.news import BasicNewsRecipe

class weblogssl_tecnologia(BasicNewsRecipe):
__author__ = 'desUBIKado'
description = u'Weblogs colectivos dedicados a seguir la actualidad sobre tecnologia, moviles, ciencia, software e internet.'
title = u'Weblogs SL (Tecnologia)'
publisher = 'Weblogs SL'
category = 'Gadgets, Tech news, Product reviews, mobiles, science'
language = 'es'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 1.5
max_articles_per_feed = 100
encoding = 'utf-8'
use_embedded_content = False
remove_empty_feeds = True
remove_javascript = True
no_stylesheets = True

# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
# un caracter # por delante, es decir, # (u'Xataka', u'http://feeds.weblogssl.com/xataka2'),
# haría que no se descargase Xataka. OJO: El último feed no debe llevar la coma al final

feeds = [
(u'Xataka', u'http://feeds.weblogssl.com/xataka2'),
(u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil'),
(u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid'),
(u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto'),
(u'Xataka ON', u'http://feeds.weblogssl.com/xatakaon'),
(u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia'),
(u'Genbeta', u'http://feeds.weblogssl.com/genbeta'),
(u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
(u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra'),
(u'Naci\xf3n Red', u'http://feeds.weblogssl.com/nacionred')
]


keep_only_tags = [dict(name='div', attrs={'id':'infoblock'}),
dict(name='div', attrs={'class':'post'}),
dict(name='div', attrs={'id':'blog-comments'})
]

remove_tags = [dict(name='div', attrs={'id':'comment-nav'})]

def print_version(self, url):
return url.replace('http://www.', 'http://m.')

preprocess_regexps = [
# Para poner una linea en blanco entre un comentario y el siguiente
(re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c')
]

# Para sustituir el video incrustado de YouTube por una imagen

def preprocess_html(self, soup):
for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
if video_yt:
video_yt.name = 'img'
fuente = video_yt['src']
fuente2 = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
fuente3 = fuente2.replace('?rel=0','')
video_yt['src'] = fuente3 + '/0.jpg'

return soup


Weblogs SL (Entertainment)

Spoiler:

#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '4 February 2011, desUBIKado'
__author__ = 'desUBIKado'
__version__ = 'v0.05'
__date__ = '9, February 2011'
'''
http://www.weblogssl.com/
'''

import time
import re
from calibre.web.feeds.news import BasicNewsRecipe

class weblogssl_entretenimiento(BasicNewsRecipe):
__author__ = 'desUBIKado'
description = u'Weblogs colectivos dedicados a seguir la actualidad sobre cine, television, literatura y entretenimiento.'
title = u'Weblogs SL (Entretenimiento)'
publisher = 'Weblogs SL'
category = 'cinema, entertainment, culture, tv'
language = 'es'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 1.5
max_articles_per_feed = 100
encoding = 'utf-8'
use_embedded_content = False
remove_empty_feeds = True
remove_javascript = True
no_stylesheets = True

# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
# un caracter # por delante, es decir, # (u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine'),
# haría que no se descargase Blog de Cine. OJO: El último feed no debe llevar la coma al final

feeds = [
(u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine'),
(u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2'),
(u'Hipers\xf3nica', u'http://feeds.weblogssl.com/hipersonica'),
(u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero'),
(u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco'),
(u'Pop rosa', u'http://feeds.weblogssl.com/poprosa'),
(u'Zona FandoM', u'http://feeds.weblogssl.com/zonafandom'),
(u'Fandemia', u'http://feeds.weblogssl.com/fandemia'),
(u'Noctamina', u'http://feeds.weblogssl.com/noctamina')
]


keep_only_tags = [dict(name='div', attrs={'id':'infoblock'}),
dict(name='div', attrs={'class':'post'}),
dict(name='div', attrs={'id':'blog-comments'})
]

remove_tags = [dict(name='div', attrs={'id':'comment-nav'})]

def print_version(self, url):
return url.replace('http://www.', 'http://m.')

preprocess_regexps = [
# Para poner una linea en blanco entre un comentario y el siguiente
(re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c')
]

# Para sustituir el video incrustado de YouTube por una imagen

def preprocess_html(self, soup):
for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
if video_yt:
video_yt.name = 'img'
fuente = video_yt['src']
fuente2 = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
fuente3 = fuente2.replace('?rel=0','')
video_yt['src'] = fuente3 + '/0.jpg'

return soup


Weblogs SL (Lifestyle)

Spoiler:

#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '4 February 2011, desUBIKado'
__author__ = 'desUBIKado'
__version__ = 'v0.05'
__date__ = '9, February 2011'
'''
http://www.weblogssl.com/
'''

import time
import re
from calibre.web.feeds.news import BasicNewsRecipe

class weblogssl_estilo(BasicNewsRecipe):
__author__ = 'desUBIKado'
description = u'Weblogs colectivos dedicados a seguir la actualidad sobre estilos de vida, tendencias, cocina, decoracion y belleza.'
title = u'Weblogs SL (Estilos de vida)'
publisher = 'Weblogs SL'
category = 'food, recipes, life style, babies'
language = 'es'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 1.5
max_articles_per_feed = 100
encoding = 'utf-8'
use_embedded_content = False
remove_empty_feeds = True
remove_javascript = True
no_stylesheets = True

# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
# un caracter # por delante, es decir, # (u'Trendencias', u'http://feeds.weblogssl.com/trendencias'),
# haría que no se descargase Trendencias. OJO: El último feed no debe llevar la coma al final

feeds = [
(u'Trendencias', u'http://feeds.weblogssl.com/trendencias'),
(u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas'),
(u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar'),
(u'Compradicci\xf3n', u'http://feeds.weblogssl.com/compradiccion'),
(u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera'),
(u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia'),
(u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica'),
(u'Ambiente G', u'http://feeds.weblogssl.com/ambienteg'),
(u'Arrebatadora', u'http://feeds.weblogssl.com/arrebatadora'),
(u'Mensencia', u'http://feeds.weblogssl.com/mensencia'),
(u'Peques y m\xe1s', u'http://feeds.weblogssl.com/pequesymas')
]


keep_only_tags = [dict(name='div', attrs={'id':'infoblock'}),
dict(name='div', attrs={'class':'post'}),
dict(name='div', attrs={'id':'blog-comments'})
]

remove_tags = [dict(name='div', attrs={'id':'comment-nav'})]

def print_version(self, url):
return url.replace('http://www.', 'http://m.')

preprocess_regexps = [
# Para poner una linea en blanco entre un comentario y el siguiente
(re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c')
]

# Para sustituir el video incrustado de YouTube por una imagen

def preprocess_html(self, soup):
for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
if video_yt:
video_yt.name = 'img'
fuente = video_yt['src']
fuente2 = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
fuente3 = fuente2.replace('?rel=0','')
video_yt['src'] = fuente3 + '/0.jpg'

return soup


Weblogs SL (Motor & Sports)

Spoiler:

#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '4 February 2011, desUBIKado'
__author__ = 'desUBIKado'
__version__ = 'v0.05'
__date__ = '9, February 2011'
'''
http://www.weblogssl.com/
'''

import time
import re
from calibre.web.feeds.news import BasicNewsRecipe

class weblogssl_deportes(BasicNewsRecipe):
__author__ = 'desUBIKado'
description = u'Weblogs colectivos dedicados a seguir la actualidad sobre motor, F1, futbol, golf y otros deportes.'
title = u'Weblogs SL (Motor y Deportes)'
publisher = 'Weblogs SL'
category = 'motor, F1, sports'
language = 'es'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 1.5
max_articles_per_feed = 100
encoding = 'utf-8'
use_embedded_content = False
remove_empty_feeds = True
remove_javascript = True
no_stylesheets = True

# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
# un caracter # por delante, es decir, # (u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion'),
# haría que no se descargase Motorpasión. OJO: El último feed no debe llevar la coma al final

feeds = [
(u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion'),
(u'Motorpasi\xf3n F1', u'http://feeds.weblogssl.com/motorpasionf1'),
(u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto'),
(u'Notas de futbol', u'http://feeds.weblogssl.com/notasdefutbol'),
(u'Fuera de l\xedmites', u'http://feeds.weblogssl.com/fueradelimites'),
(u'Salir a ganar', u'http://feeds.weblogssl.com/saliraganar')
]


keep_only_tags = [dict(name='div', attrs={'id':'infoblock'}),
dict(name='div', attrs={'class':'post'}),
dict(name='div', attrs={'id':'blog-comments'})
]

remove_tags = [dict(name='div', attrs={'id':'comment-nav'})]

def print_version(self, url):
return url.replace('http://www.', 'http://m.')

preprocess_regexps = [
# Para poner una linea en blanco entre un comentario y el siguiente
(re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c')
]

# Para sustituir el video incrustado de YouTube por una imagen

def preprocess_html(self, soup):
for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
if video_yt:
video_yt.name = 'img'
fuente = video_yt['src']
fuente2 = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
fuente3 = fuente2.replace('?rel=0','')
video_yt['src'] = fuente3 + '/0.jpg'

return soup


Weblogs SL (Economy)

Spoiler:

#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '4 February 2011, desUBIKado'
__author__ = 'desUBIKado'
__version__ = 'v0.05'
__date__ = '9, February 2011'
'''
http://www.weblogssl.com/
'''

import time
import re
from calibre.web.feeds.news import BasicNewsRecipe

class weblogssl_economia(BasicNewsRecipe):
__author__ = 'desUBIKado'
description = u'Weblogs colectivos dedicados a seguir la actualidad economica.'
title = u'Weblogs SL (Economia)'
publisher = 'Weblogs SL'
category = 'economy'
language = 'es'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 1.5
max_articles_per_feed = 100
encoding = 'utf-8'
use_embedded_content = False
remove_empty_feeds = True
remove_javascript = True
no_stylesheets = True

# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
# un caracter # por delante, es decir, # (u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2'),
# haría que no se descargase El Blog Salmón. OJO: El último feed no debe llevar la coma al final

feeds = [
(u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2'),
(u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos'),
(u'Tecnolog\xeda Pyme', u'http://feeds.weblogssl.com/tecnologiapyme'),
(u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario')
]


keep_only_tags = [dict(name='div', attrs={'id':'infoblock'}),
dict(name='div', attrs={'class':'post'}),
dict(name='div', attrs={'id':'blog-comments'})
]

remove_tags = [dict(name='div', attrs={'id':'comment-nav'})]

def print_version(self, url):
return url.replace('http://www.', 'http://m.')

preprocess_regexps = [
# Para poner una linea en blanco entre un comentario y el siguiente
(re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c')
]

# Para sustituir el video incrustado de YouTube por una imagen

def preprocess_html(self, soup):
for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
if video_yt:
video_yt.name = 'img'
fuente = video_yt['src']
fuente2 = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
fuente3 = fuente2.replace('?rel=0','')
video_yt['src'] = fuente3 + '/0.jpg'

return soup
desUBIKado is offline   Reply With Quote
Old 02-11-2011, 01:11 PM   #2
tolyluis
Enthusiast
tolyluis doesn't littertolyluis doesn't litter
 
Posts: 49
Karma: 196
Join Date: Jan 2011
Device: Kindle 3
Excellent work!

Hey excellent work, I don't test it yet but it looks interesting. Thanks!

desUBIKado you've a PM!
tolyluis is offline   Reply With Quote
Advert
Reply


Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Request: Reorder spanish recipes in futures releases of Calibre tolyluis Recipes 11 02-04-2011 04:23 PM
3 recipes in spanish desUBIKado Recipes 1 12-27-2010 12:20 PM
Free (Kindle) Old Havana Cookbook: Cuban Recipes in Spanish and English (Bilingual Co arcadata Deals and Resources (No Self-Promotion or Affiliate Links) 0 12-01-2010 05:35 AM
Recipes from newspaper and magazines - Spanish | Uruguay zeener Recipes 5 11-24-2010 04:18 PM
Calibre & E505 best conversion recipes? Locheil Calibre 8 06-12-2009 09:53 AM


All times are GMT -4. The time now is 11:06 AM.


MobileRead.com is a privately owned, operated and funded community.