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

class TechnologyReview(BasicNewsRecipe):
    title          = u'Technology Review'
    __author__ = 'rty'
    description = 'MIT Technology Magazine'
    publisher = 'Technology Review Inc.'
    category = 'Technology, Innovation, R&D'
    language = 'en'
    oldest_article = 14
    max_articles_per_feed = 100
    No_stylesheets = True
    extra_css = """
    .ArticleBody {font: normal; text-align: justify}
    .headline {font: bold x-large}
    .subheadline {font: italic large}
    """
    feeds = [
	(u'Computing', u'http://feeds.technologyreview.com/technology_review_Computing'),
	(u'Web', u'http://feeds.technologyreview.com/technology_review_Web'),
	(u'Communications', u'http://feeds.technologyreview.com/technology_review_Communications'),
	(u'Energy', u'http://feeds.technologyreview.com/technology_review_Energy'),
	(u'Materials', u'http://feeds.technologyreview.com/technology_review_Materials'),
	(u'Biomedicine', u'http://feeds.technologyreview.com/technology_review_Biotech'),
	(u'Business', u'http://feeds.technologyreview.com/technology_review_Biztech')
	]
    remove_attributes = ['width', 'align','cellspacing']

    remove_tags = [
                    dict(name='div', attrs={'id':['CloseLink','footerAdDiv','copyright']}),
                         ]
    remove_tags_after = [dict(name='div', attrs={'id':'copyright'})]

    def get_article_url(self, article):
        return article.get('guid', article.get('id', None))

    def print_version(self, url):
        baseurl='http://www.technologyreview.com/printer_friendly_article.aspx?id='
        split1 = string.split(url,"/")
        xxx=split1 [4]
        split2= string.split(xxx,"/")
        s =  baseurl + split2[0]
        return s


    def postprocess_html(self,soup, True):
        #remove picture
        headerhtml = soup.find(True, {'class':'header'})
        headerhtml.replaceWith("")

        #remove close button
        closehtml = soup.find(True, {'class':'close'})
        closehtml.replaceWith("")

        #remove banner advertisement
        bannerhtml = soup.find(True, {'class':'bannerad'})
        bannerhtml.replaceWith("")

        #thanks kiklop74!  This code removes all links from the text
        for alink in soup.findAll('a'):
            if alink.string is not None:
               tstr = alink.string
               alink.replaceWith(tstr)

        return soup
