Source code for flexget.plugins.filter.duplicates
from loguru import logger
from flexget import plugin
from flexget.event import event
logger = logger.bind(name='duplicates')
[docs]
class Duplicates:
"""Take action on entries with duplicate field values.
Example::
duplicates:
field: <field name>
action: [accept|reject]
"""
schema = {
'type': 'object',
'properties': {'field': {'type': 'string'}, 'action': {'enum': ['accept', 'reject']}},
'required': ['field', 'action'],
'additionalProperties': False,
}
[docs]
def on_task_filter(self, task, config):
field = config['field']
action = config['action']
for entry in task.entries:
for prospect in task.entries:
if entry == prospect:
continue
if entry.get(field) is not None and entry[field] == prospect.get(field):
msg = 'Field {} value {} equals on {} and {}'.format(
field, entry[field], entry['title'], prospect['title']
)
if action == 'accept':
entry.accept(msg)
else:
entry.reject(msg)
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(Duplicates, 'duplicates', api_ver=2)