Initialize VLC getters and metrics, fix some bugs in infra logic, needs to be refactored later on

This commit is contained in:
Timothyxxx
2024-01-04 17:55:07 +08:00
parent ca73a96da5
commit 2401513c19
3 changed files with 58 additions and 19 deletions

View File

@@ -0,0 +1,20 @@
import os
from typing import Dict
def get_vlc_playing_info(env, config: Dict[str, str]):
"""
Gets the current playing information from VLC's HTTP interface.
"""
_path = os.path.join(env.cache_dir, config["dest"])
host = env.vm_ip
port = 8080
password = 'password'
content = env.controller.get_vlc_status(host, port, password)
print("content: ", content)
with open(_path, "wb") as f:
f.write(content)
return _path

View File

@@ -0,0 +1,22 @@
import os
def get_gimp_export_path():
# Path to GIMP's configuration file. This example assumes GIMP version 2.10.
# You need to adjust the path according to the GIMP version and user's file system.
gimp_config_file = os.path.expanduser("~/.config/GIMP/2.10/gimprc")
try:
# Open and read the configuration file
with open(gimp_config_file, 'r') as file:
for line in file:
# Search for the default export path setting
if "default-export-path" in line:
# Extract the current path from the line (assuming it's enclosed in quotes)
current_path = line.split('"')[1]
# Compare the current path with the expected path
return current_path
except FileNotFoundError:
# Handle the case where the configuration file is not found
print("GIMP configuration file not found")
return False

View File

@@ -1,11 +1,12 @@
import os import os
import platform import platform
import requests
from xml.etree import ElementTree from xml.etree import ElementTree
import pygetwindow as gw import pygetwindow as gw
import pyautogui import pyautogui
from typing import Dict
def read_vlc_config(setting_name):
def get_vlc_config(setting_name):
""" """
Reads the VLC configuration file to check for a specific setting. Reads the VLC configuration file to check for a specific setting.
@@ -38,24 +39,22 @@ def read_vlc_config(setting_name):
return None return None
def get_vlc_playing_info(host='localhost', port=8080, password='password'): def is_vlc_playing(actual: str, rule: Dict[str, str]) -> float:
""" """
Gets the current playing information from VLC's HTTP interface. Checks if VLC is currently playing a file.
""" """
url = f'http://{host}:{port}/requests/status.xml' with open(actual, 'rb') as file:
try: actual_status = file.read().decode('utf-8')
response = requests.get(url, auth=('', password))
if response.status_code == 200:
tree = ElementTree.fromstring(response.content)
status = tree.find('state').text
if status == 'playing':
file_info = tree.find('information/category[@name="meta"]/info[@name="filename"]').text
return status, file_info
return status, None
except Exception as e:
print(f"Error: {e}")
return None, None tree = ElementTree.fromstring(actual_status)
status = tree.find('state').text
if status == 'playing':
file_info = tree.find('information/category[@name="meta"]/info[@name="filename"]').text
print("file_info: ", file_info)
if file_info:
return 1 if file_info.endswith(rule['expected']) else 0
else:
return 0
def is_vlc_fullscreen(): def is_vlc_fullscreen():
@@ -83,5 +82,3 @@ def is_vlc_fullscreen():
except Exception as e: except Exception as e:
print(f"An error occurred: {e}") print(f"An error occurred: {e}")
return False return False