Source code for flexget.plugins.input.rottentomatoes_list

from loguru import logger

from flexget import plugin
from flexget.entry import Entry
from flexget.event import event
from flexget.utils.cached_input import cached

try:
    # NOTE: Importing other plugins is discouraged!
    from flexget.plugins.internal import api_rottentomatoes as plugin_api_rottentomatoes
except ImportError:
    raise plugin.DependencyError(issued_by=__name__, missing='api_rottentomatoes')

logger = logger.bind(name='rottentomatoes_list')


[docs] class RottenTomatoesList: """Emits an entry for each movie in a Rotten Tomatoes list. Configuration: dvds: - top_rentals - upcoming movies: - box_office Possible lists are * dvds: top_rentals, current_releases, new_releases, upcoming * movies: box_office, in_theaters, opening, upcoming """ schema = { 'type': 'object', 'properties': { 'dvds': { 'type': 'array', 'items': {'enum': ['top_rentals', 'current_releases', 'new_releases', 'upcoming']}, }, 'movies': { 'type': 'array', 'items': {'enum': ['box_office', 'in_theaters', 'opening', 'upcoming']}, }, 'api_key': {'type': 'string'}, }, 'additionalProperties': False, } @cached('rottentomatoes_list', persist='2 hours') def on_task_input(self, task, config): entries = [] api_key = config.get('api_key', None) for l_type, l_names in list(config.items()): if not isinstance(l_names, list): continue for l_name in l_names: results = plugin_api_rottentomatoes.lists( list_type=l_type, list_name=l_name, api_key=api_key ) if results: for movie in results['movies']: if [entry for entry in entries if movie['title'] == entry.get('title')]: continue imdb_id = movie.get('alternate_ids', {}).get('imdb') if imdb_id: imdb_id = 'tt' + str(imdb_id) entries.append( Entry( title=movie['title'], rt_id=movie['id'], imdb_id=imdb_id, rt_name=movie['title'], url=movie['links']['alternate'], ) ) else: logger.critical( "Failed to fetch Rotten tomatoes {} list: {}. List doesn't exist?", l_type, l_name, ) return entries
[docs] @event('plugin.register') def register_plugin(): plugin.register(RottenTomatoesList, 'rottentomatoes_list', api_ver=2, interfaces=['task'])