from bs4 import BeautifulSoup
from couchpotato.core.helpers.rss import RSS
from couchpotato.core.helpers.variable import tryInt
from couchpotato.core.logger import CPLog
from couchpotato.core.providers.automation.base import Automation

log = CPLog(__name__)


class Bluray(Automation, RSS):

    interval = 1800
    rss_url = 'http://www.blu-ray.com/rss/newreleasesfeed.xml'
    backlog_url = 'http://www.blu-ray.com/movies/movies.php?show=newreleases&page=%s'

    def getIMDBids(self):

        movies = []

        if self.conf('backlog'):

            page = 0
            while True:
                page = page + 1

                url = self.backlog_url % page
                data = self.getHTMLData(url)
                soup = BeautifulSoup(data)

                try:
                    # Stop if the release year is before the minimal year
                    page_year = soup.body.find_all('center')[3].table.tr.find_all('td', recursive = False)[3].h3.get_text().split(', ')[1]
                    if tryInt(page_year) < self.getMinimal('year'):
                        break

                    for table in soup.body.find_all('center')[3].table.tr.find_all('td', recursive = False)[3].find_all('table')[1:20]:
                        name = table.h3.get_text().lower().split('blu-ray')[0].strip()
                        year = table.small.get_text().split('|')[1].strip()

                        if not name.find('/') == -1: # make sure it is not a double movie release
                            continue

                        if tryInt(year) < self.getMinimal('year'):
                            continue

                        imdb = self.search(name, year)

                        if imdb:
                            if self.isMinimalMovie(imdb):
                                movies.append(imdb['imdb'])
                except:
                    log.debug('Error loading page: %s', page)
                    break

            self.conf('backlog', value = False)

        rss_movies = self.getRSSData(self.rss_url)

        for movie in rss_movies:
            name = self.getTextElement(movie, 'title').lower().split('blu-ray')[0].strip('(').rstrip()
            year = self.getTextElement(movie, 'description').split('|')[1].strip('(').strip()

            if not name.find('/') == -1: # make sure it is not a double movie release
                continue

            if tryInt(year) < self.getMinimal('year'):
                continue

            imdb = self.search(name, year)

            if imdb:
                if self.isMinimalMovie(imdb):
                    movies.append(imdb['imdb'])

        return movies
