def build_request(cls, session, part=None, rating_key=None, view_offset=None): # Retrieve metadata for session if part is None: part = session.part if rating_key is None: rating_key = session.rating_key # Retrieve metadata metadata = Metadata.get(rating_key) # Validate metadata if not metadata: log.warn('Unable to retrieve metadata for rating_key %r', rating_key) return None if metadata.type not in ['movie', 'episode']: log.info('Ignoring session with type %r for rating_key %r', metadata.type, rating_key) return None # Apply library/section filter if not Filters.is_valid_metadata_section(metadata): log.info('Ignoring session in filtered section: %r', metadata.section.title) return None # Parse guid guid = Guid.parse(metadata.guid, strict=True) if not guid or not guid.valid: log_unsupported_guid(log, guid) return None # Build request from guid/metadata if type(metadata) is Movie: result = cls.build_movie(metadata, guid, part) elif type(metadata) is Episode: result = cls.build_episode(metadata, guid, part) else: log.warn('Unknown metadata type: %r', type(metadata)) return None if not result: log.info('Unable to build request for session: %r', session) return None # Retrieve media progress if view_offset is not None: # Calculate progress from `view_offset` parameter progress = UpdateSession.get_progress( metadata.duration, view_offset, part, session.part_count, session.part_duration ) else: # Use session progress progress = session.progress # Merge progress into request return merge(result, { 'progress': progress })
def build_request(cls, session, rating_key=None, view_offset=None): # Retrieve metadata for session if rating_key is None: rating_key = session.rating_key # Retrieve metadata metadata = Metadata.get(rating_key) # Queue a flush for the metadata cache Metadata.cache.flush_queue() # Validate metadata if not metadata: log.warn('Unable to retrieve metadata for rating_key %r', rating_key) return None if metadata.type not in ['movie', 'episode']: log.info('Ignoring session with type %r for rating_key %r', metadata.type, rating_key) return None # Apply library/section filter if not Filters.is_valid_metadata_section(metadata): return None # Parse guid guid = Guid.parse(metadata.guid) # Build request from guid/metadata if type(metadata) is Movie: result = cls.build_movie(metadata, guid) elif type(metadata) is Episode: result = cls.build_episode(metadata, guid) else: return None if not result: return None # Retrieve media progress if view_offset is not None: # Calculate progress from `view_offset` parameter progress = UpdateSession.get_progress(metadata.duration, view_offset) else: # Use session progress progress = session.progress # Merge progress into request return merge(result, {'progress': progress})
def build_request(cls, session, rating_key=None, view_offset=None): # Retrieve metadata for session if rating_key is None: rating_key = session.rating_key # Retrieve metadata metadata = Metadata.get(rating_key) # Queue a flush for the metadata cache Metadata.cache.flush_queue() # Validate metadata if not metadata: log.warn('Unable to retrieve metadata for rating_key %r', rating_key) return None if metadata.type not in ['movie', 'episode']: log.info('Ignoring session with type %r for rating_key %r', metadata.type, rating_key) return None # Apply library/section filter if not Filters.is_valid_metadata_section(metadata): return None # Parse guid guid = Guid.parse(metadata.guid) # Build request from guid/metadata if type(metadata) is Movie: result = cls.build_movie(metadata, guid) elif type(metadata) is Episode: result = cls.build_episode(metadata, guid) else: return None if not result: return None # Retrieve media progress if view_offset is not None: # Calculate progress from `view_offset` parameter progress = UpdateSession.get_progress(metadata.duration, view_offset) else: # Use session progress progress = session.progress # Merge progress into request return merge(result, { 'progress': progress })
def test_metadata_section_basic(): # Basic Environment.prefs['filter_sections'] = 'one (movies)' assert Filters.is_valid_metadata_section( LibraryMetadata(section=LibrarySection(title='One (Movies)'))) is True
def build_request(cls, session, part=None, rating_key=None, view_offset=None): # Retrieve metadata for session if part is None: part = session.part if rating_key is None: rating_key = session.rating_key # Retrieve metadata metadata = Metadata.get(rating_key) # Validate metadata if not metadata: log.warn('Unable to retrieve metadata for rating_key %r', rating_key) return None if metadata.type not in ['movie', 'episode']: log.info('Ignoring session with type %r for rating_key %r', metadata.type, rating_key) return None # Apply library/section filter if not Filters.is_valid_metadata_section(metadata): log.info('Ignoring session in filtered section: %r', metadata.section.title) return None # Parse guid guid = Guid.parse(metadata.guid, strict=True) if not guid or not guid.valid: log_unsupported_guid(log, guid) return None # Build request from guid/metadata if type(metadata) is Movie: result = cls.build_movie(metadata, guid, part) elif type(metadata) is Episode: result = cls.build_episode(metadata, guid, part) else: log.warn('Unknown metadata type: %r', type(metadata)) return None if not result: log.info('Unable to build request for session: %r', session) return None # Retrieve media progress if view_offset is not None: # Calculate progress from `view_offset` parameter progress = UpdateSession.get_progress(metadata.duration, view_offset, part, session.part_count, session.part_duration) else: # Use session progress progress = session.progress # Merge progress into request return merge(result, {'progress': progress})
def test_metadata_section_basic(): # Basic Environment.prefs["filter_sections"] = "one (movies)" assert Filters.is_valid_metadata_section(LibraryMetadata(section=LibrarySection(title="One (Movies)"))) is True