61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
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
|