#!/usr/bin/env  python

__license__   = 'GPL v3'
__copyright__ = '2009, Darko Miletic <darko.miletic at gmail.com>'
'''
msdn.microsoft.com/en-us/magazine
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup

class MSDNMagazine_en(BasicNewsRecipe):
    title                 = 'MSDN Magazine'
    __author__            = 'Darko Miletic'
    description           = 'The Microsoft Journal for Developers'
    masthead_url          = 'http://i3.msdn.microsoft.com/Platform/MasterPages/MsdnMagazine/smalllogo.png'
    publisher             = 'Microsoft Press'
    category              = 'news, IT, Microsoft, programming, windows'
    oldest_article        = 31
    max_articles_per_feed = 100
    no_stylesheets        = True
    use_embedded_content  = False
    encoding              = 'utf-8'
    language              = 'en'

    base_url              = 'http://msdn.microsoft.com/en-us/magazine/default.aspx'
    rss_url               = 'http://msdn.microsoft.com/en-us/magazine/rss/default.aspx?z=z&iss=1'


    keep_only_tags = [dict(name='div', attrs={'id':'MainContent'})]

    remove_tags = [
                    dict(name='div', attrs={'class':'DivRatingsOnly'})
                    ,dict(name='div', attrs={'class':'ShareThisButton4'})
                  ]

    def find_articles(self):
        idx_contents = self.browser.open(self.rss_url).read()
        idx = BeautifulStoneSoup(idx_contents, convertEntities=BeautifulStoneSoup.XML_ENTITIES)

        for article in idx.findAll('item'):
            desc_html = self.tag_to_string(article.find('description'))
            description = self.tag_to_string(BeautifulSoup(desc_html))

            a = {
                    'title':  self.tag_to_string(article.find('title')),
                    'url': self.tag_to_string(article.find('link')),
                    'description': description,
                    'date' : self.tag_to_string(article.find('pubdate')),
                    }
            yield a


    def parse_index(self):
        soup = self.index_to_soup(self.base_url)

        #find issue name, eg "August 2011"
        issue_name = self.tag_to_string(soup.find('h1'))

        # find cover pic
        img = soup.find('img',attrs ={'alt':issue_name})
        if img is not None:
            self.cover_url = img['src']

        return [(issue_name, list(self.find_articles()))]

