3
from flexget.plugin import register_plugin, priority, PluginWarning
5
log = logging.getLogger('exists')
8
class FilterExists(object):
11
Reject entries that already exist in given path.
15
exists: /storage/movies/
19
from flexget import validator
20
root = validator.factory()
22
bundle = root.accept('list')
26
def get_config(self, feed):
27
config = feed.config.get('exists', None)
28
# If only a single path is passed turn it into a 1 element list
29
if isinstance(config, basestring):
34
def on_feed_filter(self, feed):
35
config = self.get_config(feed)
37
# unicode path causes crashes on some paths
38
path = str(os.path.expanduser(path))
39
if not os.path.exists(path):
40
raise PluginWarning('Path %s does not exist' % path, log)
42
for root, dirs, files in os.walk(path):
43
# convert filelists into utf-8 to avoid unicode problems
44
dirs = [x.decode('utf-8', 'ignore') for x in dirs]
45
files = [x.decode('utf-8', 'ignore') for x in files]
46
for entry in feed.entries:
48
if name in dirs or name in files:
49
log.debug('Found %s in %s' % (name, root))
50
feed.reject(entry, '%s/%s' % (name, root))
52
register_plugin(FilterExists, 'exists')