1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-20 02:48:57 +00:00

Update systembridgeconnector to 5.2.4, fix media source (#158917)

This commit is contained in:
Aidan Timson
2025-12-15 11:47:34 +00:00
committed by GitHub
parent 6c96acda82
commit 8eb3e63d9d
14 changed files with 66 additions and 55 deletions

View File

@@ -13,12 +13,12 @@ from systembridgeconnector.exceptions import (
ConnectionErrorException, ConnectionErrorException,
DataMissingException, DataMissingException,
) )
from systembridgeconnector.models.keyboard_key import KeyboardKey
from systembridgeconnector.models.keyboard_text import KeyboardText
from systembridgeconnector.models.modules.processes import Process
from systembridgeconnector.models.open_path import OpenPath
from systembridgeconnector.models.open_url import OpenUrl
from systembridgeconnector.version import Version from systembridgeconnector.version import Version
from systembridgemodels.keyboard_key import KeyboardKey
from systembridgemodels.keyboard_text import KeyboardText
from systembridgemodels.modules.processes import Process
from systembridgemodels.open_path import OpenPath
from systembridgemodels.open_url import OpenUrl
import voluptuous as vol import voluptuous as vol
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry

View File

@@ -12,8 +12,8 @@ from systembridgeconnector.exceptions import (
ConnectionClosedException, ConnectionClosedException,
ConnectionErrorException, ConnectionErrorException,
) )
from systembridgeconnector.models.modules import GetData, Module
from systembridgeconnector.websocket_client import WebSocketClient from systembridgeconnector.websocket_client import WebSocketClient
from systembridgemodels.modules import GetData, Module
import voluptuous as vol import voluptuous as vol
from homeassistant.config_entries import SOURCE_REAUTH, ConfigFlow, ConfigFlowResult from homeassistant.config_entries import SOURCE_REAUTH, ConfigFlow, ConfigFlowResult

View File

@@ -2,7 +2,7 @@
from typing import Final from typing import Final
from systembridgemodels.modules import Module from systembridgeconnector.models.modules import Module
DOMAIN = "system_bridge" DOMAIN = "system_bridge"

View File

@@ -13,13 +13,13 @@ from systembridgeconnector.exceptions import (
ConnectionClosedException, ConnectionClosedException,
ConnectionErrorException, ConnectionErrorException,
) )
from systembridgeconnector.websocket_client import WebSocketClient from systembridgeconnector.models.modules import (
from systembridgemodels.modules import (
GetData, GetData,
Module, Module,
ModulesData, ModulesData,
RegisterDataListener, RegisterDataListener,
) )
from systembridgeconnector.websocket_client import WebSocketClient
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (

View File

@@ -2,7 +2,7 @@
from dataclasses import dataclass, field from dataclasses import dataclass, field
from systembridgemodels.modules import ( from systembridgeconnector.models.modules import (
CPU, CPU,
GPU, GPU,
Battery, Battery,

View File

@@ -9,6 +9,6 @@
"integration_type": "device", "integration_type": "device",
"iot_class": "local_push", "iot_class": "local_push",
"loggers": ["systembridgeconnector"], "loggers": ["systembridgeconnector"],
"requirements": ["systembridgeconnector==5.1.0"], "requirements": ["systembridgeconnector==5.2.4"],
"zeroconf": ["_system-bridge._tcp.local."] "zeroconf": ["_system-bridge._tcp.local."]
} }

View File

@@ -5,7 +5,7 @@ from __future__ import annotations
import datetime as dt import datetime as dt
from typing import Final from typing import Final
from systembridgemodels.media_control import MediaAction, MediaControl from systembridgeconnector.models.media_control import MediaAction, MediaControl
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
MediaPlayerDeviceClass, MediaPlayerDeviceClass,

View File

@@ -2,9 +2,9 @@
from __future__ import annotations from __future__ import annotations
from systembridgemodels.media_directories import MediaDirectory from systembridgeconnector.models.media_directories import MediaDirectory
from systembridgemodels.media_files import MediaFile, MediaFiles from systembridgeconnector.models.media_files import MediaFile, MediaFiles
from systembridgemodels.media_get_files import MediaGetFiles from systembridgeconnector.models.media_get_files import MediaGetFiles
from homeassistant.components.media_player import MediaClass from homeassistant.components.media_player import MediaClass
from homeassistant.components.media_source import ( from homeassistant.components.media_source import (
@@ -183,9 +183,9 @@ def _build_media_items(
for file in media_files.files for file in media_files.files
if file.is_directory if file.is_directory
or ( or (
file.is_file not file.is_directory
and file.mime_type is not None and file.content_type is not None
and file.mime_type.startswith(MEDIA_MIME_TYPES) and file.content_type.startswith(MEDIA_MIME_TYPES)
) )
], ],
) )
@@ -197,20 +197,20 @@ def _build_media_item(
) -> BrowseMediaSource: ) -> BrowseMediaSource:
"""Build individual media item.""" """Build individual media item."""
ext = "" ext = ""
if media_file.is_file and media_file.mime_type is not None: if not media_file.is_directory and media_file.content_type is not None:
ext = f"~~{media_file.mime_type}" ext = f"~~{media_file.content_type}"
if media_file.is_directory or media_file.mime_type is None: if media_file.is_directory or media_file.content_type is None:
media_class = MediaClass.DIRECTORY media_class = MediaClass.DIRECTORY
else: else:
media_class = MEDIA_CLASS_MAP[media_file.mime_type.split("/", 1)[0]] media_class = MEDIA_CLASS_MAP[media_file.content_type.split("/", 1)[0]]
return BrowseMediaSource( return BrowseMediaSource(
domain=DOMAIN, domain=DOMAIN,
identifier=f"{path}/{media_file.name}{ext}", identifier=f"{path}/{media_file.name}{ext}",
media_class=media_class, media_class=media_class,
media_content_type=media_file.mime_type, media_content_type=media_file.content_type,
title=media_file.name, title=media_file.name,
can_play=media_file.is_file, can_play=not media_file.is_directory,
can_expand=media_file.is_directory, can_expand=media_file.is_directory,
) )

View File

@@ -5,7 +5,7 @@ from __future__ import annotations
import logging import logging
from typing import Any from typing import Any
from systembridgemodels.notification import Notification from systembridgeconnector.models.notification import Notification
from homeassistant.components.notify import ( from homeassistant.components.notify import (
ATTR_DATA, ATTR_DATA,

View File

@@ -7,9 +7,9 @@ from dataclasses import dataclass
from datetime import UTC, datetime, timedelta from datetime import UTC, datetime, timedelta
from typing import Final, cast from typing import Final, cast
from systembridgemodels.modules.cpu import PerCPU from systembridgeconnector.models.modules.cpu import PerCPU
from systembridgemodels.modules.displays import Display from systembridgeconnector.models.modules.displays import Display
from systembridgemodels.modules.gpus import GPU from systembridgeconnector.models.modules.gpus import GPU
from homeassistant.components.sensor import ( from homeassistant.components.sensor import (
SensorDeviceClass, SensorDeviceClass,

2
requirements_all.txt generated
View File

@@ -2949,7 +2949,7 @@ switchbot-api==2.8.0
synology-srm==0.2.0 synology-srm==0.2.0
# homeassistant.components.system_bridge # homeassistant.components.system_bridge
systembridgeconnector==5.1.0 systembridgeconnector==5.2.4
# homeassistant.components.tailscale # homeassistant.components.tailscale
tailscale==0.6.2 tailscale==0.6.2

View File

@@ -2461,7 +2461,7 @@ surepy==0.9.0
switchbot-api==2.8.0 switchbot-api==2.8.0
# homeassistant.components.system_bridge # homeassistant.components.system_bridge
systembridgeconnector==5.1.0 systembridgeconnector==5.2.4
# homeassistant.components.tailscale # homeassistant.components.tailscale
tailscale==0.6.2 tailscale==0.6.2

View File

@@ -4,16 +4,16 @@ from collections.abc import Awaitable, Callable
from ipaddress import ip_address from ipaddress import ip_address
from typing import Any from typing import Any
from systembridgemodels.fixtures.modules.battery import FIXTURE_BATTERY from systembridgeconnector.models.fixtures.modules.battery import FIXTURE_BATTERY
from systembridgemodels.fixtures.modules.cpu import FIXTURE_CPU from systembridgeconnector.models.fixtures.modules.cpu import FIXTURE_CPU
from systembridgemodels.fixtures.modules.disks import FIXTURE_DISKS from systembridgeconnector.models.fixtures.modules.disks import FIXTURE_DISKS
from systembridgemodels.fixtures.modules.displays import FIXTURE_DISPLAYS from systembridgeconnector.models.fixtures.modules.displays import FIXTURE_DISPLAYS
from systembridgemodels.fixtures.modules.gpus import FIXTURE_GPUS from systembridgeconnector.models.fixtures.modules.gpus import FIXTURE_GPUS
from systembridgemodels.fixtures.modules.media import FIXTURE_MEDIA from systembridgeconnector.models.fixtures.modules.media import FIXTURE_MEDIA
from systembridgemodels.fixtures.modules.memory import FIXTURE_MEMORY from systembridgeconnector.models.fixtures.modules.memory import FIXTURE_MEMORY
from systembridgemodels.fixtures.modules.processes import FIXTURE_PROCESSES from systembridgeconnector.models.fixtures.modules.processes import FIXTURE_PROCESSES
from systembridgemodels.fixtures.modules.system import FIXTURE_SYSTEM from systembridgeconnector.models.fixtures.modules.system import FIXTURE_SYSTEM
from systembridgemodels.modules import Module, ModulesData from systembridgeconnector.models.modules import Module, ModulesData
from homeassistant.const import CONF_HOST, CONF_PORT, CONF_TOKEN from homeassistant.const import CONF_HOST, CONF_PORT, CONF_TOKEN
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant

View File

@@ -8,21 +8,25 @@ from unittest.mock import AsyncMock, MagicMock, patch
import pytest import pytest
from systembridgeconnector.const import EventKey, EventType from systembridgeconnector.const import EventKey, EventType
from systembridgemodels.fixtures.modules.battery import FIXTURE_BATTERY from systembridgeconnector.models.fixtures.modules.battery import FIXTURE_BATTERY
from systembridgemodels.fixtures.modules.cpu import FIXTURE_CPU from systembridgeconnector.models.fixtures.modules.cpu import FIXTURE_CPU
from systembridgemodels.fixtures.modules.disks import FIXTURE_DISKS from systembridgeconnector.models.fixtures.modules.disks import FIXTURE_DISKS
from systembridgemodels.fixtures.modules.displays import FIXTURE_DISPLAYS from systembridgeconnector.models.fixtures.modules.displays import FIXTURE_DISPLAYS
from systembridgemodels.fixtures.modules.gpus import FIXTURE_GPUS from systembridgeconnector.models.fixtures.modules.gpus import FIXTURE_GPUS
from systembridgemodels.fixtures.modules.media import FIXTURE_MEDIA from systembridgeconnector.models.fixtures.modules.media import FIXTURE_MEDIA
from systembridgemodels.fixtures.modules.memory import FIXTURE_MEMORY from systembridgeconnector.models.fixtures.modules.memory import FIXTURE_MEMORY
from systembridgemodels.fixtures.modules.networks import FIXTURE_NETWORKS from systembridgeconnector.models.fixtures.modules.networks import FIXTURE_NETWORKS
from systembridgemodels.fixtures.modules.processes import FIXTURE_PROCESSES from systembridgeconnector.models.fixtures.modules.processes import FIXTURE_PROCESSES
from systembridgemodels.fixtures.modules.sensors import FIXTURE_SENSORS from systembridgeconnector.models.fixtures.modules.sensors import FIXTURE_SENSORS
from systembridgemodels.fixtures.modules.system import FIXTURE_SYSTEM from systembridgeconnector.models.fixtures.modules.system import FIXTURE_SYSTEM
from systembridgemodels.media_directories import MediaDirectory from systembridgeconnector.models.media_directories import MediaDirectory
from systembridgemodels.media_files import MediaFile, MediaFiles from systembridgeconnector.models.media_files import MediaFile, MediaFiles
from systembridgemodels.modules import Module, ModulesData, RegisterDataListener from systembridgeconnector.models.modules import (
from systembridgemodels.response import Response Module,
ModulesData,
RegisterDataListener,
)
from systembridgeconnector.models.response import Response
from homeassistant.components.system_bridge.config_flow import SystemBridgeConfigFlow from homeassistant.components.system_bridge.config_flow import SystemBridgeConfigFlow
from homeassistant.components.system_bridge.const import DOMAIN from homeassistant.components.system_bridge.const import DOMAIN
@@ -130,6 +134,7 @@ def mock_websocket_client(
websocket_client.get_directories.return_value = [ websocket_client.get_directories.return_value = [
MediaDirectory( MediaDirectory(
key="documents", key="documents",
name="Documents",
path="/home/user/documents", path="/home/user/documents",
) )
] ]
@@ -143,6 +148,8 @@ def mock_websocket_client(
last_accessed=1630000000, last_accessed=1630000000,
created=1630000000, created=1630000000,
modified=1630000000, modified=1630000000,
mod_time=1630000000,
permissions="rwxr-xr-x",
is_directory=True, is_directory=True,
is_file=False, is_file=False,
is_link=False, is_link=False,
@@ -155,6 +162,8 @@ def mock_websocket_client(
last_accessed=1630000000, last_accessed=1630000000,
created=1630000000, created=1630000000,
modified=1630000000, modified=1630000000,
mod_time=1630000000,
permissions="rw-r--r--",
is_directory=False, is_directory=False,
is_file=True, is_file=True,
is_link=False, is_link=False,
@@ -168,6 +177,8 @@ def mock_websocket_client(
last_accessed=1630000000, last_accessed=1630000000,
created=1630000000, created=1630000000,
modified=1630000000, modified=1630000000,
mod_time=1630000000,
permissions="rw-r--r--",
is_directory=False, is_directory=False,
is_file=True, is_file=True,
is_link=False, is_link=False,