def add_cache_entry(self, name, url, seeders, leechers, size): session = sickrage.app.cache_db.session() # check for existing entry in cache if session.query(CacheDB.Provider).filter_by(url=url).count(): return # ignore invalid and private IP address urls if not validate_url(url): if not url.startswith('magnet'): return elif is_ip_private(url.split(r'//')[-1].split(r'/')[0]): return try: # parse release name parse_result = NameParser(validate_show=True).parse(name) if parse_result.series_name and parse_result.quality != Quality.UNKNOWN: season = parse_result.season_number if parse_result.season_number else 1 episodes = parse_result.episode_numbers if season and episodes: # store episodes as a seperated string episodeText = "|" + "|".join(map(str, episodes)) + "|" # get quality of release quality = parse_result.quality # get release group release_group = parse_result.release_group # get version version = parse_result.version dbData = { 'provider': self.providerID, 'name': name, 'season': season, 'episodes': episodeText, 'series_id': parse_result.indexer_id, 'url': url, 'time': int(time.mktime(datetime.datetime.today().timetuple())), 'quality': quality, 'release_group': release_group, 'version': version, 'seeders': try_int(seeders), 'leechers': try_int(leechers), 'size': try_int(size, -1) } # add to internal database try: session.add(CacheDB.Provider(**dbData)) session.commit() sickrage.app.log.debug("SEARCH RESULT:[{}] ADDED TO CACHE!".format(name)) except IntegrityError: pass # add to external provider cache database if sickrage.app.config.enable_api_providers_cache and not self.provider.private: try: sickrage.app.io_loop.run_in_executor(None, functools.partial(sickrage.app.api.provider_cache.add, data=dbData)) except Exception as e: pass except (InvalidShowException, InvalidNameException): pass
def add_cache_entry(self, name, url, seeders, leechers, size): session = sickrage.app.cache_db.session() # check for existing entry in cache if session.query(CacheDB.Provider).filter_by(url=url).count(): return try: # parse release name parse_result = NameParser(validate_show=True).parse(name) if parse_result.series_name and parse_result.quality != Qualities.UNKNOWN: season = parse_result.season_number if parse_result.season_number else 1 episodes = parse_result.episode_numbers if season and episodes: # store episodes as a seperated string episode_text = "|" + "|".join(map(str, episodes)) + "|" # get quality of release quality = parse_result.quality # get release group release_group = parse_result.release_group # get version version = parse_result.version dbData = { 'provider': self.providerID, 'name': name, 'season': season, 'episodes': episode_text, 'series_id': parse_result.series_id, 'series_provider_id': parse_result.series_provider_id.name, 'url': url, 'time': int(time.mktime( datetime.datetime.today().timetuple())), 'quality': quality, 'release_group': release_group, 'version': version, 'seeders': try_int(seeders), 'leechers': try_int(leechers), 'size': try_int(size, -1) } # add to internal database try: session.add(CacheDB.Provider(**dbData)) session.commit() sickrage.app.log.debug( "SEARCH RESULT:[{}] ADDED TO CACHE!".format(name)) except IntegrityError: pass # add to external provider cache database if sickrage.app.config.general.enable_sickrage_api: from sickrage.search_providers import SearchProviderType if not self.provider.private and self.provider.provider_type in [ SearchProviderType.NZB, SearchProviderType.TORRENT ]: try: sickrage.app.api.provider.add_search_result( provider=self.providerID, data=dbData) except Exception as e: pass except (InvalidShowException, InvalidNameException): pass