Files
myfirstprogram/utils/mac_metrics.py
T
2025-10-04 16:59:38 +03:00

27 lines
1.0 KiB
Python

import asyncio
async def get_macbook_battery_level():
"""
Асинхронная функция для получения уровня заряда батареи на macOS.
Использует утилиту pmset.
"""
# Запускаем команду pmset -g batt
process = await asyncio.create_subprocess_exec(
"pmset", "-g", "batt",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
stdout, stderr = await process.communicate()
if process.returncode != 0:
raise RuntimeError(f"Ошибка при выполнении pmset: {stderr.decode().strip()}")
output = stdout.decode().strip()
# Пример строки: " - InternalBattery-0 (id=1234567) 85%; charging; ..."
for part in output.splitlines():
if "%" in part:
percent_str = part.split("\t")[-1].split(";")[0].strip()
return int(percent_str.replace("%", ""))
raise ValueError("Не удалось определить уровень заряда")