예제 #1
0
    def find_propers(self, search_date=datetime.datetime.today()):
        results = []

        for show in [
                s['doc'] for s in sickrage.srCore.mainDB.db.all('tv_shows',
                                                                with_doc=True)
        ]:
            for episode in [
                    e['doc'] for e in sickrage.srCore.mainDB.db.get_many(
                        'tv_episodes', show['indexer_id'], with_doc=True)
            ]:
                if episode['airdate'] >= str(search_date.toordinal()) \
                        and episode['status'] in Quality.DOWNLOADED + Quality.SNATCHED + Quality.SNATCHED_BEST:

                    self.show = findCertainShow(sickrage.srCore.SHOWLIST,
                                                int(episode["showid"]))
                    if not show: continue

                    curEp = show.getEpisode(int(episode["season"]),
                                            int(episode["episode"]))
                    for term in self.proper_strings:
                        searchString = self._get_episode_search_strings(
                            curEp, add_string=term)
                        for item in self.search(searchString[0]):
                            title, url = self._get_title_and_url(item)
                            results.append(
                                Proper(title, url, datetime.datetime.today(),
                                       self.show))

        return results
예제 #2
0
    def findPropers(self, search_date=datetime.datetime.today()):
        results = []

        sqlResults = main_db.MainDB().select(
            'SELECT s.show_name, e.showid, e.season, e.episode, e.status, e.airdate FROM tv_episodes AS e' +
            ' INNER JOIN tv_shows AS s ON (e.showid = s.indexer_id)' +
            ' WHERE e.airdate >= ' + str(search_date.toordinal()) +
            ' AND (e.status IN (' + ','.join([str(x) for x in Quality.DOWNLOADED]) + ')' +
            ' OR (e.status IN (' + ','.join([str(x) for x in Quality.SNATCHED]) + ')))'
        )

        if not sqlResults:
            return []

        for sqlshow in sqlResults:
            self.show = findCertainShow(sickrage.srCore.SHOWLIST, int(sqlshow["showid"]))
            if self.show:
                curEp = self.show.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"]))
                searchStrings = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK')
                for searchString in searchStrings:
                    for item in self.search(searchString):
                        title, url = self._get_title_and_url(item)
                        if re.match(r'.*(REPACK|PROPER).*', title, re.I):
                            results.append(Proper(title, url, datetime.datetime.today(), self.show))

        return results
예제 #3
0
    def find_propers(self, search_date=datetime.datetime.today()):
        results = []
        dbData = []

        for show in [
                s['doc'] for s in sickrage.srCore.mainDB.db.all('tv_shows',
                                                                with_doc=True)
        ]:
            for episode in [
                    e['doc'] for e in sickrage.srCore.mainDB.db.get_many(
                        'tv_episodes', show['indexer_id'], with_doc=True)
            ]:
                if episode['airdate'] >= str(search_date.toordinal()) \
                        and episode['status'] in Quality.DOWNLOADED + Quality.SNATCHED + Quality.SNATCHED_BEST:

                    self.show = findCertainShow(sickrage.srCore.SHOWLIST,
                                                int(show["showid"]))
                    if not self.show: continue

                    curEp = self.show.getEpisode(int(episode["season"]),
                                                 int(episode["episode"]))
                    searchStrings = self._get_episode_search_strings(
                        curEp, add_string='PROPER|REPACK')
                    for searchString in searchStrings:
                        for item in self.search(searchString):
                            title, url = self._get_title_and_url(item)
                            if re.match(r'.*(REPACK|PROPER).*', title, re.I):
                                results += [
                                    Proper(title, url,
                                           datetime.datetime.today(),
                                           self.show)
                                ]

        return results
예제 #4
0
    def findPropers(self, search_date=datetime.datetime.today()):

        results = []

        sqlResults = main_db.MainDB().select(
            'SELECT s.show_name, e.showid, e.season, e.episode, e.status, e.airdate FROM tv_episodes AS e'
            + ' INNER JOIN tv_shows AS s ON (e.showid = s.indexer_id)' +
            ' WHERE e.airdate >= ' + str(search_date.toordinal()) +
            ' AND e.status IN (' + ','.join([
                str(x) for x in Quality.DOWNLOADED + Quality.SNATCHED +
                Quality.SNATCHED_BEST
            ]) + ')')

        for sqlshow in sqlResults or []:
            show = findCertainShow(sickrage.srCore.SHOWLIST,
                                   int(sqlshow["showid"]))
            if show:
                curEp = show.getEpisode(int(sqlshow["season"]),
                                        int(sqlshow["episode"]))
                for term in self.proper_strings:
                    searchString = self._get_episode_search_strings(
                        curEp, add_string=term)

                    for item in self.search(searchString[0]):
                        title, url = self._get_title_and_url(item)
                        results.append(
                            Proper(title, url, datetime.datetime.today(),
                                   show))

        return results
예제 #5
0
    def find_propers(self, search_date=None):

        results = self.cache.list_propers(search_date)

        return [
            Proper(x['name'], x['url'],
                   datetime.datetime.fromtimestamp(x['time']), self.show)
            for x in results
        ]
예제 #6
0
파일: hdbits.py 프로젝트: becian/SickRage-1
    def findPropers(self, search_date=None):
        results = []

        search_terms = [' proper ', ' repack ']

        for term in search_terms:
            for item in self._doSearch(self._make_post_data_JSON(search_term=term)):
                if item[b'utadded']:
                    try:
                        result_date = datetime.datetime.fromtimestamp(int(item[b'utadded']))
                    except Exception:
                        result_date = None

                    if result_date:
                        if not search_date or result_date > search_date:
                            title, url = self._get_title_and_url(item)
                            results.append(Proper(title, url, result_date, self.show))

        return results
예제 #7
0
    def findPropers(self, search_date=None):
        results = []

        search_terms = ['%.proper.%', '%.repack.%']

        for term in search_terms:
            for item in self.search({'release': term}, age=4 * 24 * 60 * 60):
                if item['Time']:
                    try:
                        result_date = datetime.datetime.fromtimestamp(float(item['Time']))
                    except TypeError:
                        result_date = None

                    if result_date:
                        if not search_date or result_date > search_date:
                            title, url = self._get_title_and_url(item)
                            results.append(Proper(title, url, result_date, self.show))

        return results
예제 #8
0
    def find_propers(self, search_date=None):
        search_terms = ['.PROPER.', '.REPACK.']
        results = []

        for term in search_terms:
            for item in self.search(term, retention=4):
                if 'usenetage' in item:

                    title, url = self._get_title_and_url(item)
                    try:
                        result_date = datetime.datetime.fromtimestamp(
                            int(item['usenetage']))
                    except Exception:
                        result_date = None

                    if result_date:
                        results.append(
                            Proper(title, url, result_date, self.show))

        return results
예제 #9
0
    def find_propers(self, search_date=None):

        results = []

        for item in self.search("v2|v3|v4|v5"):

            (title, url) = self._get_title_and_url(item)

            if item.has_key('published_parsed') and item['published_parsed']:
                result_date = item.published_parsed
                if result_date:
                    result_date = datetime(*result_date[0:6])
            else:
                continue

            if not search_date or result_date > search_date:
                search_result = Proper(title, url, result_date, self.show)
                results.append(search_result)

        return results