X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/8cd742d4aa187e46cd6f1b8f1bf834e57f5f243e..73cc8a4034e89dd70771ddb839cc3dc1e54b9950:/flexget/plugins/my_exists_movie.py?ds=inline diff --git a/flexget/plugins/my_exists_movie.py b/flexget/plugins/my_exists_movie.py deleted file mode 100644 index 30d3eb8..0000000 --- a/flexget/plugins/my_exists_movie.py +++ /dev/null @@ -1,128 +0,0 @@ -from __future__ import unicode_literals, division, absolute_import -import os -import re -import logging - -from flexget import plugin -from flexget.event import event -from flexget.config_schema import one_or_more -from flexget.plugin import get_plugin_by_name -from flexget.utils.tools import TimedDict - -log = logging.getLogger('my_exists_movie') - - -class FilterExistsMovie(object): - """ - Reject existing movies. - - Example:: - - exists_movie: /storage/movies/ - """ - - schema = one_or_more({'type': 'string', 'format': 'path'}) - - def __init__(self): - self.cache = TimedDict(cache_time='1 hour') - - def build_config(self, config): - # if only a single path is passed turn it into a 1 element list - if isinstance(config, basestring): - config = [config] - return config - - @plugin.priority(-1) - def on_task_filter(self, task, config): - # if not task.accepted: - # log.debug('nothing accepted, aborting') - # return - - config = self.build_config(config) - imdb_lookup = plugin.get_plugin_by_name('imdb_lookup').instance - - incompatible_files = 0 - incompatible_entries = 0 - count_entries = 0 - count_files = 0 - - # list of imdb ids gathered from paths / cache - imdb_ids = [] - - for folder in config: - folder = os.path.expanduser(folder) - # see if this path has already been scanned - if folder in self.cache: - log.verbose('Using cached scan for %s ...' % folder) - imdb_ids.extend(self.cache[folder]) - continue - - path_ids = [] - - if not os.path.isdir(folder): - log.critical('Path %s does not exist' % folder) - continue - - log.verbose('Scanning path %s ...' % folder) - - # Help debugging by removing a lot of noise - #logging.getLogger('movieparser').setLevel(logging.WARNING) - #logging.getLogger('imdb_lookup').setLevel(logging.WARNING) - - # scan through - - # TODO: add also video files? - for root, dirs, files in os.walk(folder): - for item in files: - pattern = re.compile(".*\.(avi|mkv|mp4|mpg|webm)") - if not re.search(pattern, item): - continue - count_files += 1 - - movie = get_plugin_by_name('parsing').instance.parse_movie(item) - - try: - imdb_id = imdb_lookup.imdb_id_lookup(movie_title=movie.name, - raw_title=item, - session=task.session) - if imdb_id in path_ids: - log.trace('duplicate %s' % item) - continue - if imdb_id is not None: - log.trace('adding: %s' % imdb_id) - path_ids.append(imdb_id) - except plugin.PluginError as e: - log.trace('%s lookup failed (%s)' % (item, e.value)) - incompatible_files += 1 - - # store to cache and extend to found list - self.cache[folder] = path_ids - imdb_ids.extend(path_ids) - - log.debug('-- Start filtering entries ----------------------------------') - - # do actual filtering - for entry in task.accepted: - count_entries += 1 - if not entry.get('imdb_id', eval_lazy=False): - try: - imdb_lookup.lookup(entry) - except plugin.PluginError as e: - log.trace('entry %s imdb failed (%s)' % (entry['title'], e.value)) - incompatible_entries += 1 - continue - - # actual filtering - if entry['imdb_id'] in imdb_ids: - entry.reject('movie exists') - - if incompatible_dirs or incompatible_entries: - log.verbose('There were some incompatible items. %s of %s entries ' - 'and %s of %s directories could not be verified.' % - (incompatible_entries, count_entries, incompatible_dirs, count_dirs)) - - log.debug('-- Finished filtering entries -------------------------------') - -@event('plugin.register') -def register_plugin(): - plugin.register(FilterExistsMovie, 'my_exists_movie', groups=['exists'], api_ver=2)