import logging import os from typing import Dict import requests logger = logging.getLogger("desktopenv.getters.vlc") def get_vlc_playing_info(env, config: Dict[str, str]): """ Gets the current playing information from VLC's HTTP interface. """ host = env.vm_ip port = 8080 password = 'password' _path = os.path.join(env.cache_dir, config["dest"]) url = f'http://{host}:{port}/requests/status.xml' response = requests.get(url, auth=('', password)) if response.status_code == 200: content = response.content else: logger.error("Failed to get vlc status. Status code: %d", response.status_code) return None with open(_path, "wb") as f: f.write(content) return _path def get_vlc_config(env, config: Dict[str, str]): """ Reads the VLC configuration file to check setting. """ os_type = env.vm_platform # fixme: depends on how we config and install the vlc in virtual machine, need to be aligned and double-checked if os_type == "Linux": config_path = \ env.controller.execute_python_command("import os; print(os.path.expanduser('~/.config/vlc/vlcrc'))")[ 'output'].strip() elif os_type == "Darwin": config_path = env.controller.execute_python_command( "import os; print(os.path.expanduser('~/Library/Preferences/org.videolan.vlc/vlcrc'))")['output'].strip() elif os_type == "Windows": config_path = env.controller.execute_python_command( "import os; print(os.path.expanduser('~\\AppData\\Roaming\\vlc\\vlcrc'))")['output'].strip() else: raise Exception("Unsupported operating system", os_type) _path = os.path.join(env.cache_dir, config["dest"]) content = env.controller.get_file(config_path) with open(_path, "wb") as f: f.write(content) return _path