calibre/recipes/ourdailybread.recipe
2019-04-13 09:17:31 +05:30

76 lines
2.7 KiB
Plaintext

__license__ = 'GPL v3'
__copyright__ = '2009-2010, Darko Miletic <darko.miletic at gmail.com>'
'''
odb.org
'''
from calibre.web.feeds.news import BasicNewsRecipe
import uuid
from lxml import html
class OurDailyBread(BasicNewsRecipe):
title = 'Our Daily Bread'
__author__ = 'Kovid Goyal'
description = "Our Daily Bread is a daily devotional from RBC Ministries which helps readers spend time each day in God's Word."
oldest_article = 15
language = 'en'
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
encoding = 'utf-8'
conversion_options = {
'comments': description, 'language': language, 'linearize_tables': True
}
keep_only_tags = [dict(attrs={'class': 'calibre-inserted-psalm'}),
{'id': 'content'}]
remove_tags = [
dict(attrs={'class': ['listen-box', 'entry-zoom',
'entry-footer']}),
{'id': 'nav-single'},
dict(attrs={'class': lambda x: x and ' sharing ' in x}),
]
extra_css = '''
.text{font-family:Arial,Helvetica,sans-serif;font-size:x-small;}
.devotionalTitle{font-family:Arial,Helvetica,sans-serif; font-size:large; font-weight: bold;}
.devotionalDate{font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
.devotionalVerse{font-family:Arial,Helvetica,sans-serif; font-size:xx-small; }
a{color:#000000;font-family:Arial,Helvetica,sans-serif; font-size:x-small;}
'''
feeds = [(u'Our Daily Bread', u'http://odb.org/feed/')]
def preprocess_raw_html(self, raw, url):
# Convert links to referenced Psalms to the actual psalms
root = html.fromstring(raw)
for a in root.xpath(
'//a[starts-with(@href, "http://www.biblegateway.com")]'):
uid = type(u'')(uuid.uuid4())
raw = self.index_to_soup(a.get('href'), raw=True)
iroot = html.fromstring(raw)
matches = iroot.xpath(
'//div[contains(@class, "result-text-style-normal")]')
if matches:
div = matches[0]
div.getparent().remove(div)
root.xpath('//body')[0].append(div)
a.set('href', '#' + uid)
del a.attrib['target']
div.set('id', uid)
div.set('class', 'calibre-inserted-psalm')
hr = div.makeelement('hr')
div.insert(0, hr)
# print html.tostring(div)
raw = html.tostring(root, encoding='unicode')
return raw
def preprocess_html(self, soup):
d = soup.find(id='content')
d.extract()
soup.find('body').insert(0, d)
return soup