]> git.rmz.io Git - dotfiles.git/commitdiff
flexget: update flexget config
authorSamir Benmendil <samir.benmendil@gmail.com>
Fri, 6 Feb 2015 19:10:06 +0000 (19:10 +0000)
committerSamir Benmendil <samir.benmendil@gmail.com>
Fri, 6 Feb 2015 19:10:06 +0000 (19:10 +0000)
flexget/config.yml
flexget/plugins/my_exists_movie.py [deleted file]

index 6874e6510cf061e068eb2d7d438aa71fdea59088..ecde19050d328e9e9add1a8a1ce26c28a6899549 100644 (file)
@@ -117,11 +117,12 @@ templates: # {{{1
       min_score: 7.5
       min_votes: 30000
     imdb_required: on
-    my_exists_movie:
+    exists_movie:
       path:
         - '/mnt/Skaro/Movies'
       allow_different_qualities: better
       type: files
+      lookup: imdb
 
 
 tasks: # {{{1
@@ -181,7 +182,8 @@ tasks: # {{{1
     priority: 2
 
     seen: local
-    disable_builtins: [retry_failed]
+    disable:
+      - retry_failed
     no_entries_ok: yes
 
     find:
@@ -220,7 +222,8 @@ tasks: # {{{1
     priority: 3
 
     seen: local
-    disable_builtins: [retry_failed]
+    disable:
+      - retry_failed
     no_entries_ok: yes
 
     find:
diff --git a/flexget/plugins/my_exists_movie.py b/flexget/plugins/my_exists_movie.py
deleted file mode 100644 (file)
index 92d6e12..0000000
+++ /dev/null
@@ -1,156 +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 = {
-        'anyOf': [
-            one_or_more({'type': 'string', 'format': 'path'}),
-            {
-                'type': 'object',
-                'properties': {
-                    'path': one_or_more({'type': 'string', 'format': 'path'}),
-                    'allow_different_qualities': {'enum': ['better', True, False], 'default': False},
-                    'type': {'enum': ['files', 'dirs'], 'default': 'files'}
-                },
-                'required': ['path'],
-                'additionalProperties': False
-            }
-        ]
-    }
-
-    def __init__(self):
-        self.cache = TimedDict(cache_time='1 hour')
-
-    def prepare_config(self, config):
-        # if config is not a dict, assign value to 'path' key
-        if not isinstance(config, dict):
-            config = {'path': config}
-        # if only a single path is passed turn it into a 1 element list
-        if isinstance(config['path'], basestring):
-            config['path'] = [config['path']]
-        return config
-
-    @plugin.priority(-1)
-    def on_task_filter(self, task, config):
-        # if not task.accepted:
-        #     log.debug('nothing accepted, aborting')
-        #     return
-
-        config = self.prepare_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
-        qualities = {}
-
-        for folder in config['path']:
-            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)
-                qualities.update(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
-            for root, dirs, files in os.walk(folder):
-                for item in eval(config['type']):
-                    log.debug("item: %s" % item)
-                    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[imdb_id] = movie.quality
-                    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
-            qualities.update(path_ids)
-
-        log.debug('qualities: %s' % qualities)
-
-        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
-
-            entry.trace("msg")
-            # actual filtering
-            if entry['imdb_id'] in qualities:
-                if config.get('allow_different_qualities') == 'better':
-                    if entry['quality'] > qualities[entry['imdb_id']]:
-                        log.trace('better quality')
-                        continue
-                elif config.get('allow_different_qualities'):
-                    if entry['quality'] != qualities[entry['imdb_id']]:
-                        log.trace('wrong quality')
-                        continue
-
-                entry.reject('movie exists')
-
-        if incompatible_files 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_files, count_dirs))
-
-        log.debug('-- Finished filtering entries -------------------------------')
-
-@event('plugin.register')
-def register_plugin():
-    plugin.register(FilterExistsMovie, 'my_exists_movie', groups=['exists'], api_ver=2)