mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +00:00
Bump plexapi to 4.5.0 (#48264)
This commit is contained in:
parent
70d9e8a582
commit
195d4de6cd
@ -4,7 +4,7 @@
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/plex",
|
||||
"requirements": [
|
||||
"plexapi==4.4.1",
|
||||
"plexapi==4.5.0",
|
||||
"plexauth==0.0.6",
|
||||
"plexwebsocket==0.0.12"
|
||||
],
|
||||
|
@ -153,7 +153,7 @@ def browse_media(entity, is_internal, media_content_type=None, media_content_id=
|
||||
title = entity.plex_server.friendly_name
|
||||
elif media_content_type == "library":
|
||||
library_or_section = entity.plex_server.library.sectionByID(
|
||||
media_content_id
|
||||
int(media_content_id)
|
||||
)
|
||||
title = library_or_section.title
|
||||
try:
|
||||
@ -193,7 +193,7 @@ def browse_media(entity, is_internal, media_content_type=None, media_content_id=
|
||||
return server_payload(entity.plex_server)
|
||||
|
||||
if media_content_type == "library":
|
||||
return library_payload(media_content_id)
|
||||
return library_payload(int(media_content_id))
|
||||
|
||||
except UnknownMediaType as err:
|
||||
raise BrowseError(
|
||||
@ -223,7 +223,7 @@ def library_section_payload(section):
|
||||
return BrowseMedia(
|
||||
title=section.title,
|
||||
media_class=MEDIA_CLASS_DIRECTORY,
|
||||
media_content_id=section.key,
|
||||
media_content_id=str(section.key),
|
||||
media_content_type="library",
|
||||
can_play=False,
|
||||
can_expand=True,
|
||||
|
@ -1131,7 +1131,7 @@ pillow==8.1.2
|
||||
pizzapi==0.0.3
|
||||
|
||||
# homeassistant.components.plex
|
||||
plexapi==4.4.1
|
||||
plexapi==4.5.0
|
||||
|
||||
# homeassistant.components.plex
|
||||
plexauth==0.0.6
|
||||
|
@ -577,7 +577,7 @@ pilight==0.1.1
|
||||
pillow==8.1.2
|
||||
|
||||
# homeassistant.components.plex
|
||||
plexapi==4.4.1
|
||||
plexapi==4.5.0
|
||||
|
||||
# homeassistant.components.plex
|
||||
plexauth==0.0.6
|
||||
|
@ -108,6 +108,12 @@ def library_music_sort_fixture():
|
||||
return load_fixture("plex/library_music_sort.xml")
|
||||
|
||||
|
||||
@pytest.fixture(name="library_movies_filtertypes", scope="session")
|
||||
def library_movies_filtertypes_fixture():
|
||||
"""Load filtertypes payload for movie library and return it."""
|
||||
return load_fixture("plex/library_movies_filtertypes.xml")
|
||||
|
||||
|
||||
@pytest.fixture(name="library", scope="session")
|
||||
def library_fixture():
|
||||
"""Load library payload and return it."""
|
||||
|
@ -10,7 +10,9 @@ from homeassistant.components.websocket_api.const import ERR_UNKNOWN_ERROR, TYPE
|
||||
from .const import DEFAULT_DATA
|
||||
|
||||
|
||||
async def test_browse_media(hass, hass_ws_client, mock_plex_server, requests_mock):
|
||||
async def test_browse_media(
|
||||
hass, hass_ws_client, mock_plex_server, requests_mock, library_movies_filtertypes
|
||||
):
|
||||
"""Test getting Plex clients from plex.tv."""
|
||||
websocket_client = await hass_ws_client(hass)
|
||||
|
||||
@ -86,6 +88,11 @@ async def test_browse_media(hass, hass_ws_client, mock_plex_server, requests_moc
|
||||
assert len(result["children"]) == len(mock_plex_server.library.onDeck())
|
||||
|
||||
# Browse into a special folder (library)
|
||||
requests_mock.get(
|
||||
f"{mock_plex_server.url_in_use}/library/sections/1/all?includeMeta=1",
|
||||
text=library_movies_filtertypes,
|
||||
)
|
||||
|
||||
msg_id += 1
|
||||
library_section_id = next(iter(mock_plex_server.library.sections())).key
|
||||
await websocket_client.send_json(
|
||||
@ -127,7 +134,7 @@ async def test_browse_media(hass, hass_ws_client, mock_plex_server, requests_moc
|
||||
assert msg["success"]
|
||||
result = msg["result"]
|
||||
assert result[ATTR_MEDIA_CONTENT_TYPE] == "library"
|
||||
result_id = result[ATTR_MEDIA_CONTENT_ID]
|
||||
result_id = int(result[ATTR_MEDIA_CONTENT_ID])
|
||||
assert len(result["children"]) == len(
|
||||
mock_plex_server.library.sectionByID(result_id).all()
|
||||
) + len(SPECIAL_METHODS)
|
||||
|
103
tests/fixtures/plex/library_movies_filtertypes.xml
vendored
Normal file
103
tests/fixtures/plex/library_movies_filtertypes.xml
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MediaContainer size="0" totalSize="5" allowSync="1" art="/:/resources/movie-fanart.jpg" identifier="com.plexapp.plugins.library" librarySectionID="1" librarySectionTitle="Movies" librarySectionUUID="805308ec-5019-43d4-a449-75d2b9e42f93" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1614092584" offset="0" sortAsc="1" thumb="/:/resources/movie.png" title1="Movies" title2="All Movies" viewGroup="movie" viewMode="131122">
|
||||
<Meta>
|
||||
<Type key="/library/sections/1/all?type=1" type="movie" title="Movies" active="1">
|
||||
<Filter filter="genre" filterType="string" key="/library/sections/1/genre" title="Genre" type="filter" />
|
||||
<Filter filter="year" filterType="integer" key="/library/sections/1/year" title="Year" type="filter" />
|
||||
<Filter filter="decade" filterType="integer" key="/library/sections/1/decade" title="Decade" type="filter" />
|
||||
<Filter filter="contentRating" filterType="string" key="/library/sections/1/contentRating" title="Content Rating" type="filter" />
|
||||
<Filter filter="collection" filterType="string" key="/library/sections/1/collection" title="Collection" type="filter" />
|
||||
<Filter filter="director" filterType="string" key="/library/sections/1/director" title="Director" type="filter" />
|
||||
<Filter filter="actor" filterType="string" key="/library/sections/1/actor" title="Actor" type="filter" />
|
||||
<Filter filter="writer" filterType="string" key="/library/sections/1/writer" title="Writer" type="filter" />
|
||||
<Filter filter="producer" filterType="string" key="/library/sections/1/producer" title="Producer" type="filter" />
|
||||
<Filter filter="country" filterType="string" key="/library/sections/1/country" title="Country" type="filter" />
|
||||
<Filter filter="studio" filterType="string" key="/library/sections/1/studio" title="Studio" type="filter" />
|
||||
<Filter filter="resolution" filterType="string" key="/library/sections/1/resolution" title="Resolution" type="filter" />
|
||||
<Filter filter="hdr" filterType="boolean" key="/library/sections/1/hdr" title="HDR" type="filter" />
|
||||
<Filter filter="unwatched" filterType="boolean" key="/library/sections/1/unwatched" title="Unplayed" type="filter" />
|
||||
<Filter filter="inProgress" filterType="boolean" key="/library/sections/1/inProgress" title="In Progress" type="filter" />
|
||||
<Filter filter="unmatched" filterType="boolean" key="/library/sections/1/unmatched" title="Unmatched" type="filter" />
|
||||
<Filter filter="audioLanguage" filterType="string" key="/library/sections/1/audioLanguage" title="Audio Language" type="filter" />
|
||||
<Filter filter="subtitleLanguage" filterType="string" key="/library/sections/1/subtitleLanguage" title="Subtitle Language" type="filter" />
|
||||
<Filter filter="label" filterType="string" key="/library/sections/1/label" title="Labels" type="filter" />
|
||||
<Sort active="1" activeDirection="asc" default="asc" defaultDirection="asc" descKey="titleSort:desc" firstCharacterKey="/library/sections/1/firstCharacter" key="titleSort" title="Title" />
|
||||
<Sort defaultDirection="desc" descKey="originallyAvailableAt:desc" key="originallyAvailableAt" title="Release Date" />
|
||||
<Sort defaultDirection="desc" descKey="rating:desc" key="rating" title="Critic Rating" />
|
||||
<Sort defaultDirection="desc" descKey="audienceRating:desc" key="audienceRating" title="Audience Rating" />
|
||||
<Sort defaultDirection="desc" descKey="duration:desc" key="duration" title="Duration" />
|
||||
<Sort defaultDirection="desc" descKey="addedAt:desc" key="addedAt" title="Date Added" />
|
||||
<Sort defaultDirection="desc" descKey="lastViewedAt:desc" key="lastViewedAt" title="Date Viewed" />
|
||||
<Sort defaultDirection="asc" descKey="mediaHeight:desc" key="mediaHeight" title="Resolution" />
|
||||
<Field key="title" title="Title" type="string" />
|
||||
<Field key="studio" title="Studio" type="string" />
|
||||
<Field key="userRating" subType="rating" title="Rating" type="integer" />
|
||||
<Field key="contentRating" title="Content Rating" type="tag" />
|
||||
<Field key="year" subType="year" title="Year" type="integer" />
|
||||
<Field key="decade" subType="decade" title="Decade" type="integer" />
|
||||
<Field key="originallyAvailableAt" title="Release Date" type="date" />
|
||||
<Field key="duration" subType="duration" title="Duration" type="integer" />
|
||||
<Field key="unmatched" title="Unmatched" type="boolean" />
|
||||
<Field key="duplicate" title="Duplicate" type="boolean" />
|
||||
<Field key="genre" title="Genre" type="tag" />
|
||||
<Field key="collection" title="Collection" type="tag" />
|
||||
<Field key="director" title="Director" type="tag" />
|
||||
<Field key="writer" title="Writer" type="tag" />
|
||||
<Field key="producer" title="Producer" type="tag" />
|
||||
<Field key="actor" title="Actor" type="tag" />
|
||||
<Field key="country" title="Country" type="tag" />
|
||||
<Field key="addedAt" title="Date Added" type="date" />
|
||||
<Field key="viewCount" title="Plays" type="integer" />
|
||||
<Field key="lastViewedAt" title="Last Played" type="date" />
|
||||
<Field key="unwatched" title="Unplayed" type="boolean" />
|
||||
<Field key="resolution" title="Resolution" type="resolution" />
|
||||
<Field key="hdr" subType="hdr" title="HDR" type="boolean" />
|
||||
<Field key="mediaSize" subType="fileSize" title="File Size" type="integer" />
|
||||
<Field key="mediaBitrate" subType="bitrate" title="Bitrate" type="integer" />
|
||||
<Field key="subtitleLanguage" title="Subtitle Language" type="subtitleLanguage" />
|
||||
<Field key="audioLanguage" title="Audio Language" type="audioLanguage" />
|
||||
<Field key="inProgress" title="In Progress" type="boolean" />
|
||||
<Field key="trash" title="Trash" type="boolean" />
|
||||
<Field key="label" title="Label" type="tag" />
|
||||
</Type>
|
||||
<Type key="/library/sections/1/folder" type="folder" title="Folders" active="0">
|
||||
</Type>
|
||||
<FieldType type="tag">
|
||||
<Operator key="=" title="is" />
|
||||
<Operator key="!=" title="is not" />
|
||||
</FieldType>
|
||||
<FieldType type="integer">
|
||||
<Operator key="=" title="is" />
|
||||
<Operator key="!=" title="is not" />
|
||||
<Operator key=">>=" title="is greater than" />
|
||||
<Operator key="<<=" title="is less than" />
|
||||
</FieldType>
|
||||
<FieldType type="string">
|
||||
<Operator key="=" title="contains" />
|
||||
<Operator key="!=" title="does not contain" />
|
||||
<Operator key="==" title="is" />
|
||||
<Operator key="!==" title="is not" />
|
||||
<Operator key="<=" title="begins with" />
|
||||
<Operator key=">=" title="ends with" />
|
||||
</FieldType>
|
||||
<FieldType type="boolean">
|
||||
<Operator key="=" title="is true" />
|
||||
<Operator key="!=" title="is false" />
|
||||
</FieldType>
|
||||
<FieldType type="date">
|
||||
<Operator key="<<=" title="is before" />
|
||||
<Operator key=">>=" title="is after" />
|
||||
</FieldType>
|
||||
<FieldType type="subtitleLanguage">
|
||||
<Operator key="=" title="is" />
|
||||
<Operator key="!=" title="is not" />
|
||||
</FieldType>
|
||||
<FieldType type="audioLanguage">
|
||||
<Operator key="=" title="is" />
|
||||
<Operator key="!=" title="is not" />
|
||||
</FieldType>
|
||||
<FieldType type="resolution">
|
||||
<Operator key="=" title="is" />
|
||||
</FieldType>
|
||||
</Meta>
|
||||
</MediaContainer>
|
Loading…
x
Reference in New Issue
Block a user