Read The Washington Post 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 »

Leading source for news, video and opinion on politics, business, world and national news, science, travel, entertainment and more. Our local coverage includes reporting on education, crime, weather, traffic, real estate, jobs and cars for DC, Maryland and Virginia. Offering award-winning opinion writing, entertainment information and restaurant reviews.

Language: en

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

Schedule Every morning

			  __license__   = 'GPL v3'
__copyright__ = '2011, Darko Miletic <darko.miletic at gmail.com>'
'''
www.washingtonpost.com
'''

from calibre import strftime
from calibre.web.feeds.news import BasicNewsRecipe

class TheWashingtonPost(BasicNewsRecipe):
    title                 = 'The Washington Post'
    __author__            = 'Darko Miletic'
    description           = 'Leading source for news, video and opinion on politics, business, world and national news, science, travel, entertainment and more. Our local coverage includes reporting on education, crime, weather, traffic, real estate, jobs and cars for DC, Maryland and Virginia. Offering award-winning opinion writing, entertainment information and restaurant reviews.'
    publisher             = 'The Washington Post Company'
    category              = 'news, politics, USA'
    oldest_article        = 2
    max_articles_per_feed = 200
    no_stylesheets        = True
    encoding              = 'utf8'
    delay                 = 1
    use_embedded_content  = False
    language              = 'en'
    remove_empty_feeds    = True
    publication_type      = 'newspaper'
    masthead_url          = 'http://www.washingtonpost.com/rw/sites/twpweb/img/logos/twp_logo_300.gif'
    cover_url             = strftime('http://www.washingtonpost.com/rw/WashingtonPost/Content/Epaper/%Y-%m-%d/Ax1.pdf')
    extra_css             = """
                               body{font-family: Georgia,serif }
                            """

    conversion_options = {
                          'comment'   : description
                        , 'tags'      : category
                        , 'publisher' : publisher
                        , 'language'  : language
                        }

    keep_only_tags   = [dict(attrs={'id':['content','entryhead','entrytext']})]
    remove_tags      = [
                          dict(name=['meta','link','iframe','base'])
                         ,dict(attrs={'id':'multimedia-leaf-page'})
                       ]
    remove_attributes= ['lang','property','epochtime','datetitle','pagetype','contenttype','comparetime']


    feeds = [
              (u'World'          , u'http://feeds.washingtonpost.com/rss/world'                   )
             ,(u'National'       , u'http://feeds.washingtonpost.com/rss/national'                )
             ,(u'White House'    , u'http://feeds.washingtonpost.com/rss/politics/whitehouse'     )
             ,(u'Business'       , u'http://feeds.washingtonpost.com/rss/business'                )
             ,(u'Opinions'       , u'http://feeds.washingtonpost.com/rss/opinions'                )
             ,(u'Investigations' , u'http://feeds.washingtonpost.com/rss/investigations'          )
             ,(u'Local'          , u'http://feeds.washingtonpost.com/rss/local'                   )
             ,(u'Entertainment'  , u'http://feeds.washingtonpost.com/rss/entertainment'           )
             ,(u'Sports'         , u'http://feeds.washingtonpost.com/rss/sports'                  )
             ,(u'Redskins'       , u'http://feeds.washingtonpost.com/rss/sports/redskins'         )
             ,(u'Special Reports', u'http://feeds.washingtonpost.com/rss/national/special-reports')
            ]

    def print_version(self, url):
        if '_story.html' in url:
           return url.replace('_story.html','_print.html')
        return url

    def get_article_url(self, article):
        link = BasicNewsRecipe.get_article_url(self,article)
        if not 'washingtonpost.com' in link:
           self.log('Skipping adds:', link)
           return None
        for it in ['_video.html','_gallery.html','_links.html']:
            if it in link:
               self.log('Skipping non-article:', link)
               return None
        return link