Read Money Control on your iPad or Kindle in no time. Click download to load the free ebook on your reader.

Check out all the available public recipes or write your own with these quick start guides. ReadBeam is built on calibre, so everything in the docs and the fora applies here as well.

Download for free »

Financial news from India

Language: en

Requires Subscription: No, it's available as free ebook

Schedule Every morning

			  from calibre.web.feeds.news import BasicNewsRecipe
#from calibre.ebooks.BeautifulSoup import BeautifulSoup, Tag

class MoneyControlRecipe(BasicNewsRecipe):
    __license__  = 'GPL v3'
    __author__ = 'kwetal'
    language = 'en_IN'
    locale = 'en_IN'
    encoding = 'iso-8859-1'
    version = 1

    title = u'Money Control'
    publisher = u'moneycontrol.com'
    category = u'News, Financial, India'
    description = u'Financial news from India'

    oldest_article = 7
    max_articles_per_feed = 100
    use_embedded_content = False

    no_stylesheets = True
    remove_javascript = True

    feeds = []
    feeds.append((u'Latest News', u'http://www.moneycontrol.com/rss/latestnews.xml'))
    feeds.append((u'All Stories', u'http://www.moneycontrol.com/rss/allstories.xml'))

    def print_version(self, url):
        return url.replace('/stocksnews.php?', '/news_print.php?') + '&sr_no=0'

    # The articles contain really horrible html. More than one <body> and <head> section, not properly closed tags, lots and lots of
    # <font> tags and some weird <o:p></o:p> markup that crashes the conversion to ebook. Needs some drastic sanitizing
    '''def preprocess_html(self, soup):
        freshSoup = BeautifulSoup('<html><head></head><body></body></html>')

        headline = soup.find('td', attrs = {'class': 'heading'})
        if headline:
            h1 = Tag(freshSoup, 'h1')
            # Convert to string before adding it to the document!
            h1.append(self.tag_to_string(headline))
            freshSoup.body.append(h1)

        for p in soup.findAll('p'):
            if p.has_key('class'):
                if p['class'] == 'MsoNormal':
                    # We have some weird pagebreak marker here; it will not find all of them however
                    continue

            para = Tag(freshSoup, 'p')
            # Convert to string; this will loose all formatting but also all illegal markup
            para.append(self.tag_to_string(p))

            freshSoup.body.append(para)

        return freshSoup
    '''