Source code for upsies.uis.tui.jobwidgets.mediainfo

import functools
import os

from .. import widgets
from . import JobWidgetBase


[docs] class MediainfoJobWidget(JobWidgetBase): is_interactive = False
[docs] def setup(self): self._activity_indicator = widgets.ActivityIndicator( style='class:info', extend_width=False, ) self.job.signal.register('generating_report', self.handle_generating_report) self.job.signal.register('generated_report', self.handle_generated_report) self.job.signal.register('running', lambda _: self._activity_indicator.enable()) self.job.signal.register('finished', lambda _: self._activity_indicator.disable())
def handle_generating_report(self, video_filepath): # Display the path relative to the user-provided content path. Keep in mind that # `content_path` might be relative or have no parent directory. common_path = os.path.commonpath((self.job.content_path, video_filepath)) relative_path = video_filepath[len(common_path):].strip(os.sep) self._activity_indicator.format = f'{{indicator}} {relative_path}' def handle_generated_report(self, video_filepath, report): # Remove file path from activity indicator in case we are waiting for the user to select # more playlists. self._activity_indicator.format = '{indicator}' @functools.cached_property def runtime_widget(self): return self._activity_indicator