27 lines
1.0 KiB
Python
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("Не удалось определить уровень заряда") |