def get_processor_by_name(self, name: str) -> Processor: if name == 'ffmpeg': return FFmpeg(self.ffmpeg_path) if self.hbcli_path: return Handbrake(self.hbcli_path) print(f'Unknown processor type "{name}" for host "{self.name}"') sys.exit(1)
def get_processor_by_name(self, name: str) -> Processor: if name == 'ffmpeg': return FFmpeg(self.ffmpeg_path) if self.hbcli_path: return Handbrake(self.hbcli_path) print('Missing "ffmpeg" or "hbcli" path') sys.exit(1)
def __init__(self, configfile: ConfigFile): self.queues = dict() self.configfile = configfile self.ffmpeg = FFmpeg(self.configfile.ffmpeg_path) # # initialize the queues # self.queues['_default_'] = Queue() for qname in configfile.queues.keys(): self.queues[qname] = Queue()
def __init__(self, queuename, queue: Queue, configfile: ConfigFile, manager): """ :param queuename: Name of the queue, for thread naming purposes only :param queue: Thread-safe queue containing files to be encoded :param configfile: Instance of the parsed configuration (transcode.yml) :param manager: Reference to object that manages this thread """ super().__init__(name=queuename, group=None, daemon=True) self.queue = queue self.config = configfile self._manager = manager self.ffmpeg = FFmpeg(self.config.ffmpeg_path)
def __init__(self, hostname, props, queue, cluster): """ :param hostname: name of host from config/clusters :param props: dictionary of properties from config/clusters :param queue: Work queue assigned to this thread, could be many-to-one in the future. :param cluster: Reference to parent Cluster object """ super().__init__(name=hostname, group=None, daemon=True) self.hostname = hostname self.props = props self.queue = queue self._complete = list() self._manager = cluster self.ffmpeg = FFmpeg(props.ffmpeg_path)
def __init__(self, name, configs: Dict, config: ConfigFile, ssh: str): """ :param name: Cluster name, used only for thread naming :param configs: The "clusters" section of the global config :param config: The full configuration object :param ssh: Path to local ssh """ super().__init__(name=name, group=None, daemon=True) self.queues: Dict[str, Queue] = dict() self.ssh = ssh self.hosts: List[ManagedHost] = list() self.config = config self.verbose = verbose self.ffmpeg = FFmpeg(config.ffmpeg_path) self.lock = Cluster.terminal_lock self.completed: List = list() for host, props in configs.items(): hostprops = RemoteHostProperties(host, props) if not hostprops.is_enabled: continue hosttype = hostprops.host_type # # make sure Queue exists for name # host_queues: Dict = hostprops.queues if len(host_queues) > 0: for host_queue in host_queues: if host_queue not in self.queues: self.queues[host_queue] = Queue() _h = None if hosttype == 'local': # special case - using pytranscoder host also as cluster host for host_queue, slots in host_queues.items(): # # for each queue configured for this host create a dedicated thread for each slot # for slot in range(0, slots): _h = LocalHost(host, hostprops, self.queues[host_queue], self) if not _h.validate_settings(): sys.exit(1) self.hosts.append(_h) elif hosttype == 'mounted': for host_queue, slots in host_queues.items(): # # for each queue configured for this host create a dedicated thread for each slot # for slot in range(0, slots): _h = MountedManagedHost(host, hostprops, self.queues[host_queue], self) if not _h.validate_settings(): sys.exit(1) self.hosts.append(_h) elif hosttype == 'streaming': for host_queue, slots in host_queues.items(): # # for each queue configured for this host create a dedicated thread for each slot # for slot in range(0, slots): _h = StreamingManagedHost(host, hostprops, self.queues[host_queue], self) if not _h.validate_settings(): sys.exit(1) self.hosts.append(_h) else: print( crayons.red( f'Unknown cluster host type "{hosttype}" - skipping'))