diff --git a/homeassistant/components/overseerr/__init__.py b/homeassistant/components/overseerr/__init__.py index 0148dc27fdd..c16b02739ed 100644 --- a/homeassistant/components/overseerr/__init__.py +++ b/homeassistant/components/overseerr/__init__.py @@ -16,13 +16,24 @@ from homeassistant.components.webhook import ( ) from homeassistant.const import CONF_WEBHOOK_ID, Platform from homeassistant.core import HomeAssistant +from homeassistant.helpers import config_validation as cv from homeassistant.helpers.http import HomeAssistantView +from homeassistant.helpers.typing import ConfigType from .const import DOMAIN, JSON_PAYLOAD, LOGGER, REGISTERED_NOTIFICATIONS from .coordinator import OverseerrConfigEntry, OverseerrCoordinator +from .services import setup_services PLATFORMS: list[Platform] = [Platform.SENSOR] +CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN) + + +async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: + """Set up the Overseerr component.""" + setup_services(hass) + return True + async def async_setup_entry(hass: HomeAssistant, entry: OverseerrConfigEntry) -> bool: """Set up Overseerr from a config entry.""" diff --git a/homeassistant/components/overseerr/const.py b/homeassistant/components/overseerr/const.py index 64262c59d19..48f5436c336 100644 --- a/homeassistant/components/overseerr/const.py +++ b/homeassistant/components/overseerr/const.py @@ -9,6 +9,11 @@ LOGGER = logging.getLogger(__package__) REQUESTS = "requests" +ATTR_CONFIG_ENTRY_ID = "config_entry_id" +ATTR_STATUS = "status" +ATTR_SORT_ORDER = "sort_order" +ATTR_REQUESTED_BY = "requested_by" + REGISTERED_NOTIFICATIONS = ( NotificationType.REQUEST_PENDING_APPROVAL | NotificationType.REQUEST_APPROVED diff --git a/homeassistant/components/overseerr/icons.json b/homeassistant/components/overseerr/icons.json index 0d71028ce5a..2876eb5f882 100644 --- a/homeassistant/components/overseerr/icons.json +++ b/homeassistant/components/overseerr/icons.json @@ -23,5 +23,10 @@ "default": "mdi:message-bulleted" } } + }, + "services": { + "get_requests": { + "service": "mdi:multimedia" + } } } diff --git a/homeassistant/components/overseerr/quality_scale.yaml b/homeassistant/components/overseerr/quality_scale.yaml index 218e4355c96..144f5c1977c 100644 --- a/homeassistant/components/overseerr/quality_scale.yaml +++ b/homeassistant/components/overseerr/quality_scale.yaml @@ -1,19 +1,13 @@ rules: # Bronze - action-setup: - status: exempt - comment: | - This integration does not provide additional actions. + action-setup: done appropriate-polling: done brands: done common-modules: done config-flow-test-coverage: done config-flow: done dependency-transparency: done - docs-actions: - status: exempt - comment: | - This integration does not provide additional actions. + docs-actions: done docs-high-level-description: done docs-installation-instructions: done docs-removal-instructions: done @@ -29,10 +23,7 @@ rules: unique-config-entry: done # Silver - action-exceptions: - status: exempt - comment: | - This integration does not provide additional actions or actionable entities. + action-exceptions: done config-entry-unloading: done docs-configuration-parameters: status: exempt diff --git a/homeassistant/components/overseerr/services.py b/homeassistant/components/overseerr/services.py new file mode 100644 index 00000000000..4631e578af8 --- /dev/null +++ b/homeassistant/components/overseerr/services.py @@ -0,0 +1,115 @@ +"""Define services for the Overseerr integration.""" + +from dataclasses import asdict +from typing import Any, cast + +from python_overseerr import OverseerrClient, OverseerrConnectionError +import voluptuous as vol + +from homeassistant.config_entries import ConfigEntryState +from homeassistant.core import ( + HomeAssistant, + ServiceCall, + ServiceResponse, + SupportsResponse, +) +from homeassistant.exceptions import HomeAssistantError, ServiceValidationError +from homeassistant.util.json import JsonValueType + +from .const import ( + ATTR_CONFIG_ENTRY_ID, + ATTR_REQUESTED_BY, + ATTR_SORT_ORDER, + ATTR_STATUS, + DOMAIN, + LOGGER, +) +from .coordinator import OverseerrConfigEntry + +SERVICE_GET_REQUESTS = "get_requests" +SERVICE_GET_REQUESTS_SCHEMA = vol.Schema( + { + vol.Required(ATTR_CONFIG_ENTRY_ID): str, + vol.Optional(ATTR_STATUS): vol.In( + ["approved", "pending", "available", "processing", "unavailable", "failed"] + ), + vol.Optional(ATTR_SORT_ORDER): vol.In(["added", "modified"]), + vol.Optional(ATTR_REQUESTED_BY): int, + } +) + + +def async_get_entry(hass: HomeAssistant, config_entry_id: str) -> OverseerrConfigEntry: + """Get the Overseerr config entry.""" + if not (entry := hass.config_entries.async_get_entry(config_entry_id)): + raise ServiceValidationError( + translation_domain=DOMAIN, + translation_key="integration_not_found", + translation_placeholders={"target": DOMAIN}, + ) + if entry.state is not ConfigEntryState.LOADED: + raise ServiceValidationError( + translation_domain=DOMAIN, + translation_key="not_loaded", + translation_placeholders={"target": entry.title}, + ) + return cast(OverseerrConfigEntry, entry) + + +async def get_media( + client: OverseerrClient, media_type: str, identifier: int +) -> dict[str, Any]: + """Get media details.""" + media = {} + try: + if media_type == "movie": + media = asdict(await client.get_movie_details(identifier)) + if media_type == "tv": + media = asdict(await client.get_tv_details(identifier)) + except OverseerrConnectionError: + LOGGER.error("Could not find data for %s %s", media_type, identifier) + return {} + media["media_info"].pop("requests") + return media + + +def setup_services(hass: HomeAssistant) -> None: + """Set up the services for the Overseerr integration.""" + + async def async_get_requests(call: ServiceCall) -> ServiceResponse: + """Get requests made to Overseerr.""" + entry = async_get_entry(hass, call.data[ATTR_CONFIG_ENTRY_ID]) + client = entry.runtime_data.client + kwargs: dict[str, Any] = {} + if status := call.data.get(ATTR_STATUS): + kwargs["status"] = status + if sort_order := call.data.get(ATTR_SORT_ORDER): + kwargs["sort"] = sort_order + if requested_by := call.data.get(ATTR_REQUESTED_BY): + kwargs["requested_by"] = requested_by + try: + requests = await client.get_requests(**kwargs) + except OverseerrConnectionError as err: + raise HomeAssistantError( + translation_domain=DOMAIN, + translation_key="connection_error", + translation_placeholders={"error": str(err)}, + ) from err + result: list[dict[str, Any]] = [] + for request in requests: + req = asdict(request) + assert request.media.tmdb_id + req["media"] = await get_media( + client, request.media.media_type, request.media.tmdb_id + ) + result.append(req) + + return {"requests": cast(list[JsonValueType], result)} + + hass.services.async_register( + DOMAIN, + SERVICE_GET_REQUESTS, + async_get_requests, + schema=SERVICE_GET_REQUESTS_SCHEMA, + supports_response=SupportsResponse.ONLY, + ) diff --git a/homeassistant/components/overseerr/services.yaml b/homeassistant/components/overseerr/services.yaml new file mode 100644 index 00000000000..c7593fc5aee --- /dev/null +++ b/homeassistant/components/overseerr/services.yaml @@ -0,0 +1,30 @@ +get_requests: + fields: + config_entry_id: + required: true + selector: + config_entry: + integration: overseerr + status: + selector: + select: + options: + - approved + - pending + - available + - processing + - unavailable + - failed + translation_key: request_status + sort_order: + selector: + select: + options: + - added + - modified + translation_key: request_sort_order + requested_by: + selector: + number: + min: 0 + mode: box diff --git a/homeassistant/components/overseerr/strings.json b/homeassistant/components/overseerr/strings.json index bc3b5ee30c5..338c9d91a38 100644 --- a/homeassistant/components/overseerr/strings.json +++ b/homeassistant/components/overseerr/strings.json @@ -48,6 +48,54 @@ "exceptions": { "connection_error": { "message": "Error connecting to the Overseerr instance: {error}" + }, + "not_loaded": { + "message": "{target} is not loaded." + }, + "integration_not_found": { + "message": "Integration \"{target}\" not found in registry." + } + }, + "services": { + "get_requests": { + "name": "Get requests", + "description": "Get media requests from Overseerr.", + "fields": { + "config_entry_id": { + "name": "Overseerr instance", + "description": "The Overseerr instance to get requests from." + }, + "status": { + "name": "Request status", + "description": "Filter the requests by status." + }, + "sort_order": { + "name": "Sort order", + "description": "Sort the requests by added or modified date." + }, + "requested_by": { + "name": "Requested by", + "description": "Filter the requests by the user id that requested them." + } + } + } + }, + "selector": { + "request_status": { + "options": { + "approved": "Approved", + "pending": "Pending", + "available": "Available", + "processing": "Processing", + "unavailable": "Unavailable", + "failed": "Failed" + } + }, + "request_sort_order": { + "options": { + "added": "Added", + "modified": "Modified" + } } } } diff --git a/tests/components/overseerr/conftest.py b/tests/components/overseerr/conftest.py index a98cfef321f..b05d1d0cb87 100644 --- a/tests/components/overseerr/conftest.py +++ b/tests/components/overseerr/conftest.py @@ -4,8 +4,8 @@ from collections.abc import Generator from unittest.mock import AsyncMock, patch import pytest -from python_overseerr import RequestCount -from python_overseerr.models import WebhookNotificationConfig +from python_overseerr import MovieDetails, RequestCount, RequestResponse +from python_overseerr.models import TVDetails, WebhookNotificationConfig from homeassistant.components.overseerr.const import DOMAIN from homeassistant.const import ( @@ -54,6 +54,15 @@ def mock_overseerr_client() -> Generator[AsyncMock]: ) ) client.test_webhook_notification_config.return_value = True + client.get_requests.return_value = RequestResponse.from_json( + load_fixture("requests.json", DOMAIN) + ).results + client.get_movie_details.return_value = MovieDetails.from_json( + load_fixture("movie.json", DOMAIN) + ) + client.get_tv_details.return_value = TVDetails.from_json( + load_fixture("tv.json", DOMAIN) + ) yield client diff --git a/tests/components/overseerr/fixtures/movie.json b/tests/components/overseerr/fixtures/movie.json new file mode 100644 index 00000000000..2f5e86b3261 --- /dev/null +++ b/tests/components/overseerr/fixtures/movie.json @@ -0,0 +1,2644 @@ +{ + "id": 1156593, + "adult": false, + "budget": 0, + "genres": [ + { + "id": 10749, + "name": "Romance" + }, + { + "id": 18, + "name": "Drama" + } + ], + "relatedVideos": [ + { + "site": "YouTube", + "key": "IoyJOL5WnvQ", + "name": "Nick and Noah Meet Briar and Sofia [Subtitled]", + "size": 1080, + "type": "Clip", + "url": "https://www.youtube.com/watch?v=IoyJOL5WnvQ" + }, + { + "site": "YouTube", + "key": "nuPjieeswM4", + "name": "Sneak Peek: Nick and Noah are Back [Subtitled]", + "size": 1080, + "type": "Clip", + "url": "https://www.youtube.com/watch?v=nuPjieeswM4" + }, + { + "site": "YouTube", + "key": "QT5j0Uf-rdM", + "name": "Official Trailer 2 [Subtitled]", + "size": 1080, + "type": "Trailer", + "url": "https://www.youtube.com/watch?v=QT5j0Uf-rdM" + }, + { + "site": "YouTube", + "key": "m_TWESxP_DE", + "name": "Official Trailer [Subtitled]", + "size": 1080, + "type": "Trailer", + "url": "https://www.youtube.com/watch?v=m_TWESxP_DE" + }, + { + "site": "YouTube", + "key": "Wp4S0-fWgI0", + "name": "Official Teaser [Subtitled]", + "size": 1080, + "type": "Teaser", + "url": "https://www.youtube.com/watch?v=Wp4S0-fWgI0" + }, + { + "site": "YouTube", + "key": "3KTZekgTyFU", + "name": "Date Announce", + "size": 1080, + "type": "Teaser", + "url": "https://www.youtube.com/watch?v=3KTZekgTyFU" + } + ], + "originalLanguage": "es", + "originalTitle": "Culpa tuya", + "popularity": 3958.479, + "productionCompanies": [ + { + "id": 32485, + "name": "Pokeepsie Films", + "originCountry": "ES", + "logoPath": "/fVXreZkiJTOq1cCi6htSQlPSy7R.png" + }, + { + "id": 210099, + "name": "Amazon MGM Studios", + "originCountry": "US", + "logoPath": "/d6HwljzlOzxJ4tXlrpRkNZaZMWL.png" + } + ], + "productionCountries": [ + { + "iso_3166_1": "ES", + "name": "Spain" + }, + { + "iso_3166_1": "US", + "name": "United States of America" + } + ], + "releaseDate": "2024-12-26", + "releases": { + "results": [ + { + "iso_3166_1": "AR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "AS", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-26T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "AT", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "BE", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "BG", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "BO", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "BR", + "release_dates": [ + { + "certification": "18", + "descriptors": ["Sexual Content", "Illegal Drugs"], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-26T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "CA", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "CH", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "CL", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "CO", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "CR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "CZ", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "DE", + "release_dates": [ + { + "certification": "16", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "DK", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "EC", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "EG", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "ES", + "release_dates": [ + { + "certification": "16", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "FI", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "FR", + "release_dates": [ + { + "certification": "16", + "descriptors": [], + "iso_639_1": "", + "note": "Prime vidéo", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "GB", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "GR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "GT", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "GU", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "HK", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "HR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "HU", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "ID", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "IE", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "IN", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "IT", + "release_dates": [ + { + "certification": "14+", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "JP", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "KR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "MP", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "MX", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "MY", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "NL", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "NO", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "NZ", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "PE", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "PH", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "PK", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "PL", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "PR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-26T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "PT", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "RO", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "SA", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "SE", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "SG", + "release_dates": [ + { + "certification": "M18", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "SK", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "TH", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "TR", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "TW", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "US", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-26T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "VE", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "VI", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-26T00:00:00.000Z", + "type": 4 + } + ] + }, + { + "iso_3166_1": "ZA", + "release_dates": [ + { + "certification": "", + "descriptors": [], + "iso_639_1": "", + "note": "Prime Video", + "release_date": "2024-12-27T00:00:00.000Z", + "type": 4 + } + ] + } + ] + }, + "revenue": 0, + "spokenLanguages": [ + { + "english_name": "Spanish", + "iso_639_1": "es", + "name": "Español" + } + ], + "status": "Released", + "title": "Your Fault", + "video": false, + "voteAverage": 7.7, + "voteCount": 190, + "backdropPath": "/6qld2YxAO9gdEblo0rsEb8BcYKO.jpg", + "homepage": "https://www.amazon.com/dp/B0DJ1L7ZN3", + "imdbId": "tt28510079", + "overview": "The love between Noah and Nick seems unwavering despite their parents' attempts to separate them. But his job and her entry into college open up their lives to new relationships that will shake the foundations of both their relationship and the Leister family itself.", + "posterPath": "/1sQA7lfcF9yUyoLYC0e6Zo3jmxE.jpg", + "runtime": 120, + "tagline": "Divided by family. Driven by love.", + "credits": { + "cast": [ + { + "castId": 1, + "character": "Noah Morgan", + "creditId": "64c12ecefdc1460139f9e120", + "id": 2527414, + "name": "Nicole Wallace", + "order": 0, + "gender": 1, + "profilePath": "/gSGCoJVKAMUTmyA3GzCAX22WNBA.jpg" + }, + { + "castId": 2, + "character": "Nick Leister", + "creditId": "64c12ed6df86a80125827557", + "id": 2786960, + "name": "Gabriel Guevara", + "order": 1, + "gender": 2, + "profilePath": "/pviRYKEEmoPUfLYwP1VHJ6LQcRg.jpg" + }, + { + "castId": 12, + "character": "William Leister", + "creditId": "65e0ed456a300b017d1dc9fc", + "id": 1251336, + "name": "Iván Sánchez", + "order": 2, + "gender": 2, + "profilePath": "/woVz8D7t1VUKjFJnsTAdc8tyz5C.jpg" + }, + { + "castId": 13, + "character": "Rafaela", + "creditId": "65e0ed9851f99a018557897f", + "id": 970027, + "name": "Marta Hazas", + "order": 3, + "gender": 1, + "profilePath": "/1dbeTFRCbWBt70dIGjYHKVLnpaG.jpg" + }, + { + "castId": 14, + "character": "Jenna", + "creditId": "65e0edda41a561016382560b", + "id": 4105602, + "name": "Eva Ruiz", + "order": 4, + "gender": 1, + "profilePath": "/bcu0nmQvhxwTzh4csc4kuxJsQee.jpg" + }, + { + "castId": 15, + "character": "Lion", + "creditId": "65e0ef982d531a0162bf8423", + "id": 2126335, + "name": "Víctor Varona", + "order": 5, + "gender": 0, + "profilePath": "/lcwFAjHjhJXkxf59TXGSjGGOlLj.jpg" + }, + { + "castId": 16, + "character": "Sofía", + "creditId": "65e0f001724de10187de9bf1", + "id": 3513082, + "name": "Gabriela Andrada", + "order": 6, + "gender": 1, + "profilePath": "/h8cAdDqbDK2ayGIuxQQdNCzyCsb.jpg" + }, + { + "castId": 17, + "character": "Briar", + "creditId": "65e0f09541a5610186825d32", + "id": 3904252, + "name": "Alex Bejar", + "order": 7, + "gender": 1, + "profilePath": "/kPeFa6xX57IyhAfoT8dtgfPMgmX.jpg" + }, + { + "castId": 18, + "character": "Michael", + "creditId": "65e0f0b46a300b017d1dcbde", + "id": 2785763, + "name": "Javier Morgade", + "order": 8, + "gender": 2, + "profilePath": "/hcDV10bTZlm1rTi0NRhoGIpdicw.jpg" + }, + { + "castId": 19, + "character": "Luca", + "creditId": "65e0f35ea39d0b018608bda5", + "id": 3117422, + "name": "Felipe Londoño", + "order": 9, + "gender": 0, + "profilePath": "/gUKu2bla3ZKtwuzfymMbyzUsobC.jpg" + }, + { + "castId": 20, + "character": "Anabel", + "creditId": "65e0f37c9dee58017c7cdb1f", + "id": 261, + "name": "Goya Toledo", + "order": 10, + "gender": 1, + "profilePath": "/dihdQxVr2sFA1XznPK4orzC2m7i.jpg" + }, + { + "castId": 21, + "character": "Simón", + "creditId": "65e0f3b107e2810163dc6d82", + "id": 1983424, + "name": "Fran Morcillo", + "order": 11, + "gender": 2, + "profilePath": "/ovPzGuRvMQhB4OrC6lfxlEGLewD.jpg" + }, + { + "castId": 22, + "character": "Dioni", + "creditId": "65e0f420724de10187de9dbf", + "id": 2508286, + "name": "José Manuel Palacios", + "order": 12, + "gender": 2, + "profilePath": "/1oXz8Hht5pBluq700BmHBQwWbVQ.jpg" + } + ], + "crew": [ + { + "creditId": "64c54c10cadb6b01440d5d47", + "department": "Writing", + "id": 4106905, + "job": "Novel", + "name": "Mercedes Ron", + "gender": 1, + "profilePath": null + }, + { + "creditId": "64c12f562f1be000ae4ba431", + "department": "Production", + "id": 57865, + "job": "Producer", + "name": "Álex de la Iglesia", + "gender": 2, + "profilePath": "/vyZFSSNtY2jL06v4nJHLIT5fWa2.jpg" + }, + { + "creditId": "64c12f63097c49011d82bc77", + "department": "Production", + "id": 512958, + "job": "Producer", + "name": "Carolina Bang", + "gender": 1, + "profilePath": "/zwY5dMMeRAxUGU2Q50u7mWk3DA0.jpg" + }, + { + "creditId": "64c17c3d871b34011e697f24", + "department": "Directing", + "id": 1739102, + "job": "Director", + "name": "Domingo González", + "gender": 0, + "profilePath": null + }, + { + "creditId": "674ddb345c9ffdbae7692b9a", + "department": "Writing", + "id": 1739102, + "job": "Screenplay", + "name": "Domingo González", + "gender": 0, + "profilePath": null + }, + { + "creditId": "674ddb3f7473778bbd9afc75", + "department": "Writing", + "id": 1495797, + "job": "Screenplay", + "name": "Sofía Cuenca", + "gender": 0, + "profilePath": "/d5JbOSgQFcLd0GlBSotuNXK9Yia.jpg" + } + ] + }, + "collection": { + "id": 1156666, + "name": "Fault Collection", + "posterPath": "/cAimhhErEnKdvaZoU6Wtbf38sTS.jpg", + "backdropPath": "/7N9p8D39MXJDfm14zlBwW7mBh7g.jpg" + }, + "externalIds": { + "facebookId": null, + "imdbId": "tt28510079", + "instagramId": null, + "twitterId": null + }, + "mediaInfo": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 537, + "mediaType": "movie", + "tmdbId": 1156593, + "tvdbId": null, + "imdbId": null, + "status": 3, + "status4k": 1, + "createdAt": "2024-12-29T10:04:16.000Z", + "updatedAt": "2024-12-29T10:04:17.000Z", + "lastSeasonChange": "2024-12-29T10:04:16.000Z", + "mediaAddedAt": null, + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 423, + "externalServiceId4k": null, + "externalServiceSlug": "1156593", + "externalServiceSlug4k": null, + "ratingKey": null, + "ratingKey4k": null, + "requests": [ + { + "id": 16, + "status": 2, + "createdAt": "2024-12-29T10:04:16.000Z", + "updatedAt": "2024-12-29T10:04:16.000Z", + "type": "movie", + "is4k": false, + "serverId": 0, + "profileId": 7, + "rootFolder": "/media/movies", + "languageProfileId": null, + "tags": [], + "isAutoRequest": false, + "media": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 537, + "mediaType": "movie", + "tmdbId": 1156593, + "tvdbId": null, + "imdbId": null, + "status": 3, + "status4k": 1, + "createdAt": "2024-12-29T10:04:16.000Z", + "updatedAt": "2024-12-29T10:04:17.000Z", + "lastSeasonChange": "2024-12-29T10:04:16.000Z", + "mediaAddedAt": null, + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 423, + "externalServiceId4k": null, + "externalServiceSlug": "1156593", + "externalServiceSlug4k": null, + "ratingKey": null, + "ratingKey4k": null, + "serviceUrl": "http://192.168.0.1:7878/movie/1156593" + }, + "requestedBy": { + "permissions": 2, + "id": 1, + "email": "me@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 43972689, + "avatar": "https://plex.tv/users/aaaaaaa/avatar?c=aaaaaaa", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "modifiedBy": { + "permissions": 2, + "id": 1, + "email": "me@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 43972689, + "avatar": "https://plex.tv/users/aaaaaaa/avatar?c=aaaaaaa", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "seasons": [], + "seasonCount": 0 + } + ], + "issues": [], + "seasons": [], + "serviceUrl": "http://192.168.0.1:7878/movie/1156593" + }, + "watchProviders": [ + { + "iso_3166_1": "AD", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AD", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AE", + "buy": [], + "flatrate": [ + { + "displayPriority": 9, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AL", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AL", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AR", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 65, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "AU", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=AU", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BB", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BB", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BE", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BH", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BM", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BO", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BR", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BS", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=BS", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CA", + "buy": [], + "flatrate": [ + { + "displayPriority": 3, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 152, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "CH", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CI", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CL", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CL", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CO", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CZ", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=CZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "DE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=DE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 157, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "DK", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=DK", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "DO", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=DO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "DZ", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=DZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "EC", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=EC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "EE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=EE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "EG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=EG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ES", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=ES", + "buy": [], + "flatrate": [ + { + "displayPriority": 3, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "FI", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=FI", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "FR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=FR", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GB", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GB", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 136, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "GF", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GF", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GH", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GI", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=GT", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HK", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=HK", + "buy": [], + "flatrate": [ + { + "displayPriority": 5, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HN", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=HN", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=HR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HU", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=HU", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ID", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=ID", + "buy": [], + "flatrate": [ + { + "displayPriority": 7, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=IE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IL", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=IL", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IN", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=IN", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IQ", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=IQ", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IS", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=IS", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=IT", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 15, + "logoPath": "/6FDKQWcR6JfmRKLqezSsvGgRuUY.jpg", + "id": 109, + "name": "Timvision" + } + ] + }, + { + "iso_3166_1": "JM", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=JM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "JO", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=JO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "JP", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=JP", + "buy": [], + "flatrate": [ + { + "displayPriority": 4, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "KE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=KE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "KR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=KR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "KW", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=KW", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LB", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=LB", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LC", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=LC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LI", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=LI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=LT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LV", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=LV", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LY", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=LY", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MC", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MD", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MD", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MK", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MK", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MX", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MX", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MY", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MY", + "buy": [], + "flatrate": [ + { + "displayPriority": 9, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MZ", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=MZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=NE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=NG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NL", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=NL", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NO", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=NO", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NZ", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=NZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "OM", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=OM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PF", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PF", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PH", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PK", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PK", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PL", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PL", + "buy": [], + "flatrate": [ + { + "displayPriority": 5, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PS", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PS", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PT", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PY", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=PY", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "QA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=QA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "RO", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=RO", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "RS", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=RS", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SA", + "buy": [], + "flatrate": [ + { + "displayPriority": 23, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SE", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SI", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SK", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SK", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SM", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SV", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=SV", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TC", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=TC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TH", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=TH", + "buy": [], + "flatrate": [ + { + "displayPriority": 3, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TN", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=TN", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TR", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=TR", + "buy": [], + "flatrate": [ + { + "displayPriority": 6, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TT", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=TT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TW", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=TW", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "UG", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=UG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "US", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=US", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 258, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "UY", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=UY", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "VA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=VA", + "buy": [], + "flatrate": [ + { + "displayPriority": 0, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "VE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=VE", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "YE", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=YE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ZA", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=ZA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ZM", + "link": "https://www.themoviedb.org/movie/1156593-culpa-tuya/watch?locale=ZM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + } + ], + "keywords": [ + { + "id": 818, + "name": "based on novel or book" + }, + { + "id": 9663, + "name": "sequel" + } + ] +} diff --git a/tests/components/overseerr/fixtures/requests.json b/tests/components/overseerr/fixtures/requests.json new file mode 100644 index 00000000000..ff422420893 --- /dev/null +++ b/tests/components/overseerr/fixtures/requests.json @@ -0,0 +1,176 @@ +{ + "pageInfo": { + "pages": 2, + "pageSize": 10, + "results": 14, + "page": 1 + }, + "results": [ + { + "id": 16, + "status": 2, + "createdAt": "2024-12-29T10:04:16.000Z", + "updatedAt": "2024-12-29T10:04:16.000Z", + "type": "movie", + "is4k": false, + "serverId": 0, + "profileId": 7, + "rootFolder": "/media/movies", + "languageProfileId": null, + "tags": [], + "isAutoRequest": false, + "media": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 537, + "mediaType": "movie", + "tmdbId": 1156593, + "tvdbId": null, + "imdbId": null, + "status": 3, + "status4k": 1, + "createdAt": "2024-12-29T10:04:16.000Z", + "updatedAt": "2024-12-29T10:04:17.000Z", + "lastSeasonChange": "2024-12-29T10:04:16.000Z", + "mediaAddedAt": null, + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 423, + "externalServiceId4k": null, + "externalServiceSlug": "1156593", + "externalServiceSlug4k": null, + "ratingKey": null, + "ratingKey4k": null, + "serviceUrl": "http://192.168.0.1:7878/movie/1156593" + }, + "seasons": [], + "modifiedBy": { + "permissions": 2, + "id": 1, + "email": "one@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 321321321, + "avatar": "https://plex.tv/users/aaaaa/avatar?c=aaaaa", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "requestedBy": { + "permissions": 2, + "id": 1, + "email": "one@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 321321321, + "avatar": "https://plex.tv/users/aaaaa/avatar?c=aaaaa", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "seasonCount": 0 + }, + { + "id": 14, + "status": 2, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:37:30.000Z", + "type": "tv", + "is4k": false, + "serverId": 0, + "profileId": 7, + "rootFolder": "/media/tv", + "languageProfileId": 1, + "tags": [], + "isAutoRequest": false, + "media": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 535, + "mediaType": "tv", + "tmdbId": 249522, + "tvdbId": 447806, + "imdbId": null, + "status": 4, + "status4k": 1, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:45:00.000Z", + "lastSeasonChange": "2024-12-26T14:37:30.000Z", + "mediaAddedAt": "2024-12-26T14:39:56.000Z", + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 144, + "externalServiceId4k": null, + "externalServiceSlug": "beast-games", + "externalServiceSlug4k": null, + "ratingKey": "10189", + "ratingKey4k": null, + "plexUrl": "https://app.plex.tv/desktop#!/server/aaaa/details?key=%2Flibrary%2Fmetadata%2F10189", + "iOSPlexUrl": "plex://preplay/?metadataKey=%2Flibrary%2Fmetadata%2F10189&server=aaaa", + "serviceUrl": "http://192.168.0.2:8989/series/beast-games" + }, + "seasons": [ + { + "id": 4, + "seasonNumber": 1, + "status": 2, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:37:30.000Z" + } + ], + "modifiedBy": { + "permissions": 2, + "id": 1, + "email": "one@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 321321321, + "avatar": "https://plex.tv/users/aaaaa/avatar?c=aaaaa", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "requestedBy": { + "permissions": 2, + "id": 1, + "email": "one@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 321321321, + "avatar": "https://plex.tv/users/aaaaa/avatar?c=aaaaa", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "seasonCount": 1 + } + ] +} diff --git a/tests/components/overseerr/fixtures/tv.json b/tests/components/overseerr/fixtures/tv.json new file mode 100644 index 00000000000..445197de0ad --- /dev/null +++ b/tests/components/overseerr/fixtures/tv.json @@ -0,0 +1,2052 @@ +{ + "createdBy": [ + { + "id": 2282154, + "credit_id": "673fc8e2d7bee5585c559789", + "name": "Jimmy Donaldson", + "original_name": "Jimmy Donaldson", + "gender": 2, + "profile_path": "/dE6VIMrvZsY5a9gIaWoX40tzYkV.jpg" + }, + { + "id": 4886515, + "credit_id": "673fc8ecd7bee5585c55979f", + "name": "Tyler Conklin", + "original_name": "Tyler Conklin", + "gender": 2, + "profile_path": null + }, + { + "id": 572350, + "credit_id": "673fc8f4d7bee5585c5597a7", + "name": "Sean Klitzner", + "original_name": "Sean Klitzner", + "gender": 2, + "profile_path": "/rTVGa5hK5N9mhJwrd2oGOWzbeh7.jpg" + }, + { + "id": 5073789, + "credit_id": "673fc8f88337acae076dca7d", + "name": "Mack Hopkins", + "original_name": "Mack Hopkins", + "gender": 2, + "profile_path": "/5yaA2crWsdzTf2BFnlZ3ZuvFaL8.jpg" + } + ], + "episodeRunTime": [], + "firstAirDate": "2024-12-19", + "genres": [ + { + "id": 10764, + "name": "Reality" + } + ], + "relatedVideos": [ + { + "site": "YouTube", + "key": "37ZG9lddxto", + "name": "Official Trailer", + "size": 1080, + "type": "Trailer", + "url": "https://www.youtube.com/watch?v=37ZG9lddxto" + }, + { + "site": "YouTube", + "key": "2lyCZnx71ps", + "name": "Teaser Trailer", + "size": 1080, + "type": "Teaser", + "url": "https://www.youtube.com/watch?v=2lyCZnx71ps" + } + ], + "homepage": "https://www.amazon.com/dp/B0CZ7S3N9Y", + "id": 249522, + "inProduction": true, + "languages": ["da", "en"], + "lastAirDate": "2024-12-26", + "name": "Beast Games", + "networks": [ + { + "id": 1024, + "name": "Prime Video", + "originCountry": "", + "logoPath": "/ifhbNuuVnlwYy5oXA5VIb2YR8AZ.png" + } + ], + "numberOfEpisodes": 10, + "numberOfSeasons": 1, + "originCountry": ["US"], + "originalLanguage": "en", + "originalName": "Beast Games", + "tagline": "1,000 players. 5 million dollars. 1 winner.", + "overview": "I gathered 1,000 people to fight for $5,000,000, the LARGEST cash prize in TV history! We're also giving away a private island, Lamborghinis, and millions more in cash throughout the competition! Go watch to see the greatest show ever made!", + "popularity": 769.189, + "productionCompanies": [ + { + "id": 210099, + "name": "Amazon MGM Studios", + "originCountry": "US", + "logoPath": "/d6HwljzlOzxJ4tXlrpRkNZaZMWL.png" + }, + { + "id": 247865, + "name": "MrBeast", + "originCountry": "US", + "logoPath": "/9jchzJF1IonYRakcyVIu2fKb8Mz.png" + } + ], + "productionCountries": [ + { + "iso_3166_1": "US", + "name": "United States of America" + } + ], + "contentRatings": { + "results": [ + { + "descriptors": [], + "iso_3166_1": "SG", + "rating": "G" + }, + { + "descriptors": [], + "iso_3166_1": "BR", + "rating": "L" + }, + { + "descriptors": [], + "iso_3166_1": "MX", + "rating": "A" + }, + { + "descriptors": [], + "iso_3166_1": "US", + "rating": "TV-G" + }, + { + "descriptors": [], + "iso_3166_1": "ES", + "rating": "7" + } + ] + }, + "spokenLanguages": [ + { + "englishName": "Danish", + "iso_639_1": "da", + "name": "Dansk" + }, + { + "englishName": "English", + "iso_639_1": "en", + "name": "English" + } + ], + "seasons": [ + { + "airDate": "2024-12-19", + "episodeCount": 10, + "id": 384427, + "name": "Season 1", + "overview": "", + "seasonNumber": 1, + "posterPath": "/3itZlypnOcVcqI5xxyO6nvJ52yM.jpg" + } + ], + "status": "Returning Series", + "type": "Reality", + "voteAverage": 7.523, + "voteCount": 44, + "backdropPath": "/bXJII8e2iIQ7EzDx4KRhSghn2me.jpg", + "lastEpisodeToAir": { + "id": 5802152, + "airDate": "2024-12-26", + "episodeNumber": 3, + "name": "The Solitary Experiment", + "overview": "What would happen if three best friends were trapped in a room, but only two could escape? Watch and see for yourself right now!", + "productionCode": "", + "seasonNumber": 1, + "showId": 249522, + "voteAverage": 4.6, + "stillPath": "/r6LRRaA2l2tMDttWbYl3dXdJUij.jpg" + }, + "nextEpisodeToAir": { + "id": 5802153, + "airDate": "2025-01-02", + "episodeNumber": 4, + "name": "Episode 4", + "overview": "", + "productionCode": "", + "seasonNumber": 1, + "showId": 249522, + "voteAverage": 0, + "stillPath": null + }, + "posterPath": "/3itZlypnOcVcqI5xxyO6nvJ52yM.jpg", + "credits": { + "cast": [ + { + "character": "Self - Host", + "creditId": "65f9449f15a4a1012c0c8d19", + "id": 2282154, + "name": "Jimmy Donaldson", + "order": 0, + "gender": 2, + "profilePath": "/dE6VIMrvZsY5a9gIaWoX40tzYkV.jpg" + }, + { + "character": "Self - Co-Host", + "creditId": "6765bca2330bce6ec990e041", + "id": 5131521, + "name": "Chandler Hallow", + "order": 1, + "gender": 2, + "profilePath": "/8MAvWDC4FiiSYlmpZ9p2oCovxl0.jpg" + }, + { + "character": "Self - Co-Host", + "creditId": "6765bcb9330bce6ec990e059", + "id": 5131522, + "name": "Karl Jacobs", + "order": 2, + "gender": 2, + "profilePath": "/9ZNCxiXh4l3i24KXLD67Lqyv04K.jpg" + }, + { + "character": "Self - Co-Host", + "creditId": "6765bcbf87b92a43be5e00bd", + "id": 5131524, + "name": "Nolan Hansen", + "order": 3, + "gender": 2, + "profilePath": "/uyEUcMieLKH6pn9JTPuoI5nURWB.jpg" + }, + { + "character": "Self - Co-Host", + "creditId": "6765bcca919287ef5390dc73", + "id": 5131525, + "name": "Tareq Salameh", + "order": 4, + "gender": 2, + "profilePath": "/bFZn6A8CSn7EPi9MHcIYxTpLAlF.jpg" + }, + { + "character": "Self - Co-Host", + "creditId": "6765bcd1919287ef5390dc7c", + "id": 5073789, + "name": "Mack Hopkins", + "order": 5, + "gender": 2, + "profilePath": "/5yaA2crWsdzTf2BFnlZ3ZuvFaL8.jpg" + }, + { + "character": "Self", + "creditId": "6767dae0ae1b411f405e4af9", + "id": 1126417, + "name": "Arturo del Puerto", + "order": 6, + "gender": 2, + "profilePath": "/tALGmngyUUtxyeQtMSy7KyzjdYc.jpg" + } + ], + "crew": [ + { + "creditId": "65f94625223e20016079bd7c", + "department": "Production", + "id": 2282154, + "job": "Executive Producer", + "name": "Jimmy Donaldson", + "gender": 2, + "profilePath": "/dE6VIMrvZsY5a9gIaWoX40tzYkV.jpg" + }, + { + "creditId": "673fcb2b7b825e685b4e0a34", + "department": "Production", + "id": 4886515, + "job": "Executive Producer", + "name": "Tyler Conklin", + "gender": 2, + "profilePath": null + }, + { + "creditId": "673fcb357b825e685b4e0a37", + "department": "Production", + "id": 572350, + "job": "Executive Producer", + "name": "Sean Klitzner", + "gender": 2, + "profilePath": "/rTVGa5hK5N9mhJwrd2oGOWzbeh7.jpg" + }, + { + "creditId": "673fcb41dae2e6a938254d38", + "department": "Production", + "id": 5073789, + "job": "Executive Producer", + "name": "Mack Hopkins", + "gender": 2, + "profilePath": "/5yaA2crWsdzTf2BFnlZ3ZuvFaL8.jpg" + }, + { + "creditId": "673fcb57dae2e6a938254d4e", + "department": "Production", + "id": 5073813, + "job": "Executive Producer", + "name": "Michael Cruz", + "gender": 0, + "profilePath": null + }, + { + "creditId": "673fcb605cac041cfae26a54", + "department": "Production", + "id": 4851894, + "job": "Executive Producer", + "name": "Matt Apps", + "gender": 0, + "profilePath": null + }, + { + "creditId": "673fcb6b7b825e685b4e0a3d", + "department": "Production", + "id": 4007900, + "job": "Executive Producer", + "name": "Charles Wachter", + "gender": 0, + "profilePath": null + }, + { + "creditId": "673fcb747b825e685b4e0a43", + "department": "Production", + "id": 2292335, + "job": "Executive Producer", + "name": "Keith Geller", + "gender": 0, + "profilePath": null + }, + { + "creditId": "673fcb807b825e685b4e0a4d", + "department": "Production", + "id": 1251868, + "job": "Executive Producer", + "name": "Joe Coleman", + "gender": 2, + "profilePath": null + }, + { + "creditId": "673fcb877b825e685b4e0a53", + "department": "Production", + "id": 1450643, + "job": "Executive Producer", + "name": "Rachel Skidmore", + "gender": 0, + "profilePath": null + }, + { + "creditId": "673fcb91dae2e6a938254d5c", + "department": "Production", + "id": 4338334, + "job": "Executive Producer", + "name": "Chris Keiper", + "gender": 0, + "profilePath": null + }, + { + "creditId": "673fcb9a5cac041cfae26a5c", + "department": "Production", + "id": 5073815, + "job": "Executive Producer", + "name": "Joshua Kulic", + "gender": 0, + "profilePath": null + } + ] + }, + "externalIds": { + "facebookId": null, + "freebaseId": null, + "freebaseMid": null, + "imdbId": "tt31812476", + "instagramId": "beastgamesonprime", + "tvdbId": 447806, + "tvrageId": null, + "twitterId": null + }, + "keywords": [ + { + "id": 271, + "name": "competition" + }, + { + "id": 4325, + "name": "game show" + }, + { + "id": 330122, + "name": "mrbeast" + } + ], + "mediaInfo": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 535, + "mediaType": "tv", + "tmdbId": 249522, + "tvdbId": 447806, + "imdbId": null, + "status": 4, + "status4k": 1, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:45:00.000Z", + "lastSeasonChange": "2024-12-26T14:37:30.000Z", + "mediaAddedAt": "2024-12-26T14:39:56.000Z", + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 144, + "externalServiceId4k": null, + "externalServiceSlug": "beast-games", + "externalServiceSlug4k": null, + "ratingKey": "10189", + "ratingKey4k": null, + "requests": [ + { + "id": 14, + "status": 2, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:37:30.000Z", + "type": "tv", + "is4k": false, + "serverId": 0, + "profileId": 7, + "rootFolder": "/media/tv", + "languageProfileId": 1, + "tags": [], + "isAutoRequest": false, + "media": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 535, + "mediaType": "tv", + "tmdbId": 249522, + "tvdbId": 447806, + "imdbId": null, + "status": 4, + "status4k": 1, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:45:00.000Z", + "lastSeasonChange": "2024-12-26T14:37:30.000Z", + "mediaAddedAt": "2024-12-26T14:39:56.000Z", + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 144, + "externalServiceId4k": null, + "externalServiceSlug": "beast-games", + "externalServiceSlug4k": null, + "ratingKey": "10189", + "ratingKey4k": null, + "plexUrl": "https://app.plex.tv/desktop#!/server/aaaaaaa/details?key=%2Flibrary%2Fmetadata%2F10189", + "iOSPlexUrl": "plex://preplay/?metadataKey=%2Flibrary%2Fmetadata%2F10189&server=aaaaaaa", + "serviceUrl": "http://192.168.0.2:8989/series/beast-games" + }, + "requestedBy": { + "permissions": 2, + "id": 1, + "email": "me@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 123123, + "avatar": "https://plex.tv/users/123123/avatar?c=123123", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "modifiedBy": { + "permissions": 2, + "id": 1, + "email": "me@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 123123, + "avatar": "https://plex.tv/users/123123/avatar?c=123123", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "seasons": [ + { + "id": 4, + "seasonNumber": 1, + "status": 2, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:37:30.000Z" + } + ], + "seasonCount": 1 + } + ], + "issues": [ + { + "id": 1, + "issueType": 2, + "status": 1, + "problemSeason": 1, + "problemEpisode": 0, + "createdAt": "2024-12-28T14:22:29.000Z", + "updatedAt": "2024-12-28T14:22:54.000Z", + "media": { + "downloadStatus": [], + "downloadStatus4k": [], + "id": 535, + "mediaType": "tv", + "tmdbId": 249522, + "tvdbId": 447806, + "imdbId": null, + "status": 4, + "status4k": 1, + "createdAt": "2024-12-26T14:37:30.000Z", + "updatedAt": "2024-12-26T14:45:00.000Z", + "lastSeasonChange": "2024-12-26T14:37:30.000Z", + "mediaAddedAt": "2024-12-26T14:39:56.000Z", + "serviceId": 0, + "serviceId4k": null, + "externalServiceId": 144, + "externalServiceId4k": null, + "externalServiceSlug": "beast-games", + "externalServiceSlug4k": null, + "ratingKey": "10189", + "ratingKey4k": null, + "plexUrl": "https://app.plex.tv/desktop#!/server/aaaaaaa/details?key=%2Flibrary%2Fmetadata%2F10189", + "iOSPlexUrl": "plex://preplay/?metadataKey=%2Flibrary%2Fmetadata%2F10189&server=aaaaaaa", + "serviceUrl": "http://192.168.0.2:8989/series/beast-games" + }, + "createdBy": { + "permissions": 2, + "id": 1, + "email": "me@email.com", + "plexUsername": "somebody", + "username": null, + "recoveryLinkExpirationDate": null, + "userType": 1, + "plexId": 123123, + "avatar": "https://plex.tv/users/123123/avatar?c=123123", + "movieQuotaLimit": null, + "movieQuotaDays": null, + "tvQuotaLimit": null, + "tvQuotaDays": null, + "createdAt": "2024-12-16T21:13:58.000Z", + "updatedAt": "2024-12-16T23:59:03.000Z", + "requestCount": 11, + "displayName": "somebody" + }, + "modifiedBy": null, + "comments": [ + { + "id": 2, + "message": "boop", + "createdAt": "2024-12-28T14:22:54.000Z", + "updatedAt": "2024-12-28T14:22:54.000Z" + }, + { + "id": 1, + "message": "test", + "createdAt": "2024-12-28T14:22:29.000Z", + "updatedAt": "2024-12-28T14:22:29.000Z" + } + ] + } + ], + "seasons": [ + { + "id": 577, + "seasonNumber": 1, + "status": 4, + "status4k": 1, + "createdAt": "2024-12-26T14:45:00.000Z", + "updatedAt": "2024-12-26T14:45:00.000Z" + } + ], + "plexUrl": "https://app.plex.tv/desktop#!/server/aaaaaaa/details?key=%2Flibrary%2Fmetadata%2F10189", + "iOSPlexUrl": "plex://preplay/?metadataKey=%2Flibrary%2Fmetadata%2F10189&server=aaaaaaa", + "serviceUrl": "http://192.168.0.2:8989/series/beast-games" + }, + "watchProviders": [ + { + "iso_3166_1": "AD", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AD", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AE", + "buy": [], + "flatrate": [ + { + "displayPriority": 9, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AL", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AL", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AR", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "AT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 65, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "AU", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=AU", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BB", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BB", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BE", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BH", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BM", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BO", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BR", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "BS", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=BS", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CA", + "buy": [], + "flatrate": [ + { + "displayPriority": 3, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 152, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "CH", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CI", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CL", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CL", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CO", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "CZ", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=CZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "DE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=DE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 157, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "DK", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=DK", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "DO", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=DO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "DZ", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=DZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "EC", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=EC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "EE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=EE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "EG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=EG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ES", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=ES", + "buy": [], + "flatrate": [ + { + "displayPriority": 3, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "FI", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=FI", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "FR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=FR", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GB", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GB", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 136, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "GF", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GF", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GH", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GI", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "GT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=GT", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HK", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=HK", + "buy": [], + "flatrate": [ + { + "displayPriority": 5, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HN", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=HN", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=HR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "HU", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=HU", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ID", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=ID", + "buy": [], + "flatrate": [ + { + "displayPriority": 7, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=IE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IL", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=IL", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IN", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=IN", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IQ", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=IQ", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IS", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=IS", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "IT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=IT", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 15, + "logoPath": "/6FDKQWcR6JfmRKLqezSsvGgRuUY.jpg", + "id": 109, + "name": "Timvision" + } + ] + }, + { + "iso_3166_1": "JM", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=JM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "JO", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=JO", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "JP", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=JP", + "buy": [], + "flatrate": [ + { + "displayPriority": 4, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "KE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=KE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "KR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=KR", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "KW", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=KW", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LB", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=LB", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LC", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=LC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LI", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=LI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=LT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LV", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=LV", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "LY", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=LY", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MC", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MD", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MD", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MK", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MK", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MX", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MX", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MY", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MY", + "buy": [], + "flatrate": [ + { + "displayPriority": 9, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "MZ", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=MZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=NE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=NG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NL", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=NL", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NO", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=NO", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "NZ", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=NZ", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "OM", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=OM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PF", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PF", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PH", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PH", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PK", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PK", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PL", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PL", + "buy": [], + "flatrate": [ + { + "displayPriority": 5, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PS", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PS", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PT", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "PY", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=PY", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "QA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=QA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "RO", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=RO", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "RS", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=RS", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SA", + "buy": [], + "flatrate": [ + { + "displayPriority": 23, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SE", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SI", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SI", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SK", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SK", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SM", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "SV", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=SV", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TC", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=TC", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TH", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=TH", + "buy": [], + "flatrate": [ + { + "displayPriority": 3, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TN", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=TN", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TR", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=TR", + "buy": [], + "flatrate": [ + { + "displayPriority": 6, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TT", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=TT", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "TW", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=TW", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "UG", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=UG", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "US", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=US", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 9, + "name": "Amazon Prime Video" + }, + { + "displayPriority": 258, + "logoPath": "/8aBqoNeGGr0oSA85iopgNZUOTOc.jpg", + "id": 2100, + "name": "Amazon Prime Video with Ads" + } + ] + }, + { + "iso_3166_1": "UY", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=UY", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "VA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=VA", + "buy": [], + "flatrate": [ + { + "displayPriority": 0, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "VE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=VE", + "buy": [], + "flatrate": [ + { + "displayPriority": 2, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "YE", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=YE", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ZA", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=ZA", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + }, + { + "iso_3166_1": "ZM", + "link": "https://www.themoviedb.org/tv/249522-beast-games/watch?locale=ZM", + "buy": [], + "flatrate": [ + { + "displayPriority": 1, + "logoPath": "/pvske1MyAoymrs5bguRfVqYiM9a.jpg", + "id": 119, + "name": "Amazon Prime Video" + } + ] + } + ] +} diff --git a/tests/components/overseerr/snapshots/test_services.ambr b/tests/components/overseerr/snapshots/test_services.ambr new file mode 100644 index 00000000000..5a0b0ce6586 --- /dev/null +++ b/tests/components/overseerr/snapshots/test_services.ambr @@ -0,0 +1,204 @@ +# serializer version: 1 +# name: test_service_get_requests + dict({ + 'requests': list([ + dict({ + 'created_at': datetime.datetime(2024, 12, 29, 10, 4, 16, tzinfo=datetime.timezone.utc), + 'id': 16, + 'is4k': False, + 'media': dict({ + 'adult': False, + 'budget': 0, + 'genres': list([ + dict({ + 'id': 10749, + 'name': 'Romance', + }), + dict({ + 'id': 18, + 'name': 'Drama', + }), + ]), + 'id': 1156593, + 'imdb_id': 'tt28510079', + 'keywords': list([ + dict({ + 'id': 818, + 'name': 'based on novel or book', + }), + dict({ + 'id': 9663, + 'name': 'sequel', + }), + ]), + 'media_info': dict({ + 'created_at': datetime.datetime(2024, 12, 29, 10, 4, 16, tzinfo=datetime.timezone.utc), + 'id': 537, + 'imdb_id': None, + 'media_type': , + 'status': , + 'tmdb_id': 1156593, + 'tvdb_id': None, + 'updated_at': datetime.datetime(2024, 12, 29, 10, 4, 17, tzinfo=datetime.timezone.utc), + }), + 'original_language': 'es', + 'original_title': 'Culpa tuya', + 'overview': "The love between Noah and Nick seems unwavering despite their parents' attempts to separate them. But his job and her entry into college open up their lives to new relationships that will shake the foundations of both their relationship and the Leister family itself.", + 'popularity': 3958.479, + 'release_date': datetime.date(2024, 12, 26), + 'revenue': 0, + 'runtime': 120, + 'tagline': 'Divided by family. Driven by love.', + 'title': 'Your Fault', + 'vote_average': 7.7, + 'vote_count': 190, + }), + 'modified_by': dict({ + 'avatar': 'https://plex.tv/users/aaaaa/avatar?c=aaaaa', + 'created_at': datetime.datetime(2024, 12, 16, 21, 13, 58, tzinfo=datetime.timezone.utc), + 'display_name': 'somebody', + 'email': 'one@email.com', + 'id': 1, + 'movie_quota_days': None, + 'movie_quota_limit': None, + 'plex_id': 321321321, + 'plex_username': 'somebody', + 'request_count': 11, + 'tv_quota_days': None, + 'tv_quota_limit': None, + 'updated_at': datetime.datetime(2024, 12, 16, 23, 59, 3, tzinfo=datetime.timezone.utc), + }), + 'requested_by': dict({ + 'avatar': 'https://plex.tv/users/aaaaa/avatar?c=aaaaa', + 'created_at': datetime.datetime(2024, 12, 16, 21, 13, 58, tzinfo=datetime.timezone.utc), + 'display_name': 'somebody', + 'email': 'one@email.com', + 'id': 1, + 'movie_quota_days': None, + 'movie_quota_limit': None, + 'plex_id': 321321321, + 'plex_username': 'somebody', + 'request_count': 11, + 'tv_quota_days': None, + 'tv_quota_limit': None, + 'updated_at': datetime.datetime(2024, 12, 16, 23, 59, 3, tzinfo=datetime.timezone.utc), + }), + 'season_count': 0, + 'status': , + 'updated_at': datetime.datetime(2024, 12, 29, 10, 4, 16, tzinfo=datetime.timezone.utc), + }), + dict({ + 'created_at': datetime.datetime(2024, 12, 26, 14, 37, 30, tzinfo=datetime.timezone.utc), + 'id': 14, + 'is4k': False, + 'media': dict({ + 'first_air_date': datetime.date(2024, 12, 19), + 'genres': list([ + dict({ + 'id': 10764, + 'name': 'Reality', + }), + ]), + 'id': 249522, + 'keywords': list([ + dict({ + 'id': 271, + 'name': 'competition', + }), + dict({ + 'id': 4325, + 'name': 'game show', + }), + dict({ + 'id': 330122, + 'name': 'mrbeast', + }), + ]), + 'languages': list([ + 'da', + 'en', + ]), + 'last_air_date': datetime.date(2024, 12, 26), + 'last_episode_to_air': dict({ + 'air_date': datetime.date(2024, 12, 26), + 'episode_number': 3, + 'id': 5802152, + 'name': 'The Solitary Experiment', + 'overview': 'What would happen if three best friends were trapped in a room, but only two could escape? Watch and see for yourself right now!', + 'still_path': '/r6LRRaA2l2tMDttWbYl3dXdJUij.jpg', + }), + 'media_info': dict({ + 'created_at': datetime.datetime(2024, 12, 26, 14, 37, 30, tzinfo=datetime.timezone.utc), + 'id': 535, + 'imdb_id': None, + 'media_type': , + 'status': , + 'tmdb_id': 249522, + 'tvdb_id': 447806, + 'updated_at': datetime.datetime(2024, 12, 26, 14, 45, tzinfo=datetime.timezone.utc), + }), + 'name': 'Beast Games', + 'next_episode_to_air': dict({ + 'air_date': datetime.date(2025, 1, 2), + 'episode_number': 4, + 'id': 5802153, + 'name': 'Episode 4', + 'overview': '', + 'still_path': 'None', + }), + 'number_of_episodes': 10, + 'number_of_seasons': 1, + 'original_language': 'en', + 'original_name': 'Beast Games', + 'overview': "I gathered 1,000 people to fight for $5,000,000, the LARGEST cash prize in TV history! We're also giving away a private island, Lamborghinis, and millions more in cash throughout the competition! Go watch to see the greatest show ever made!", + 'popularity': 769.189, + 'seasons': list([ + dict({ + 'air_date': datetime.date(2024, 12, 19), + 'episode_count': 10, + 'id': 384427, + 'name': 'Season 1', + 'overview': '', + 'poster_path': '/3itZlypnOcVcqI5xxyO6nvJ52yM.jpg', + 'season_number': 1, + }), + ]), + 'tagline': '1,000 players. 5 million dollars. 1 winner.', + }), + 'modified_by': dict({ + 'avatar': 'https://plex.tv/users/aaaaa/avatar?c=aaaaa', + 'created_at': datetime.datetime(2024, 12, 16, 21, 13, 58, tzinfo=datetime.timezone.utc), + 'display_name': 'somebody', + 'email': 'one@email.com', + 'id': 1, + 'movie_quota_days': None, + 'movie_quota_limit': None, + 'plex_id': 321321321, + 'plex_username': 'somebody', + 'request_count': 11, + 'tv_quota_days': None, + 'tv_quota_limit': None, + 'updated_at': datetime.datetime(2024, 12, 16, 23, 59, 3, tzinfo=datetime.timezone.utc), + }), + 'requested_by': dict({ + 'avatar': 'https://plex.tv/users/aaaaa/avatar?c=aaaaa', + 'created_at': datetime.datetime(2024, 12, 16, 21, 13, 58, tzinfo=datetime.timezone.utc), + 'display_name': 'somebody', + 'email': 'one@email.com', + 'id': 1, + 'movie_quota_days': None, + 'movie_quota_limit': None, + 'plex_id': 321321321, + 'plex_username': 'somebody', + 'request_count': 11, + 'tv_quota_days': None, + 'tv_quota_limit': None, + 'updated_at': datetime.datetime(2024, 12, 16, 23, 59, 3, tzinfo=datetime.timezone.utc), + }), + 'season_count': 1, + 'status': , + 'updated_at': datetime.datetime(2024, 12, 26, 14, 37, 30, tzinfo=datetime.timezone.utc), + }), + ]), + }) +# --- diff --git a/tests/components/overseerr/test_services.py b/tests/components/overseerr/test_services.py new file mode 100644 index 00000000000..a0b87b5deef --- /dev/null +++ b/tests/components/overseerr/test_services.py @@ -0,0 +1,156 @@ +"""Tests for the Overseerr services.""" + +from unittest.mock import AsyncMock + +import pytest +from python_overseerr import OverseerrConnectionError +from syrupy import SnapshotAssertion + +from homeassistant.components.overseerr.const import ( + ATTR_CONFIG_ENTRY_ID, + ATTR_REQUESTED_BY, + ATTR_SORT_ORDER, + ATTR_STATUS, + DOMAIN, +) +from homeassistant.components.overseerr.services import SERVICE_GET_REQUESTS +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import HomeAssistantError, ServiceValidationError + +from . import setup_integration + +from tests.common import MockConfigEntry + + +async def test_service_get_requests( + hass: HomeAssistant, + mock_overseerr_client: AsyncMock, + mock_config_entry: MockConfigEntry, + snapshot: SnapshotAssertion, +) -> None: + """Test the get_requests service.""" + + await setup_integration(hass, mock_config_entry) + + response = await hass.services.async_call( + DOMAIN, + SERVICE_GET_REQUESTS, + { + ATTR_CONFIG_ENTRY_ID: mock_config_entry.entry_id, + ATTR_STATUS: "approved", + ATTR_SORT_ORDER: "added", + ATTR_REQUESTED_BY: 1, + }, + blocking=True, + return_response=True, + ) + assert response == snapshot + for request in response["requests"]: + assert "requests" not in request["media"]["media_info"] + mock_overseerr_client.get_requests.assert_called_once_with( + status="approved", sort="added", requested_by=1 + ) + + +async def test_service_get_requests_no_meta( + hass: HomeAssistant, + mock_overseerr_client: AsyncMock, + mock_config_entry: MockConfigEntry, + snapshot: SnapshotAssertion, +) -> None: + """Test the get_requests service.""" + mock_overseerr_client.get_movie_details.side_effect = OverseerrConnectionError + mock_overseerr_client.get_tv_details.side_effect = OverseerrConnectionError + + await setup_integration(hass, mock_config_entry) + + response = await hass.services.async_call( + DOMAIN, + SERVICE_GET_REQUESTS, + {ATTR_CONFIG_ENTRY_ID: mock_config_entry.entry_id}, + blocking=True, + return_response=True, + ) + for request in response["requests"]: + assert request["media"] == {} + + +@pytest.mark.parametrize( + ("service", "payload", "function", "exception", "raised_exception", "message"), + [ + ( + SERVICE_GET_REQUESTS, + {}, + "get_requests", + OverseerrConnectionError("Timeout"), + HomeAssistantError, + "Error connecting to the Overseerr instance: Timeout", + ) + ], +) +async def test_services_connection_error( + hass: HomeAssistant, + mock_overseerr_client: AsyncMock, + mock_config_entry: MockConfigEntry, + service: str, + payload: dict[str, str], + function: str, + exception: Exception, + raised_exception: type[Exception], + message: str, +) -> None: + """Test a connection error in the services.""" + + await setup_integration(hass, mock_config_entry) + + getattr(mock_overseerr_client, function).side_effect = exception + + with pytest.raises(raised_exception, match=message): + await hass.services.async_call( + DOMAIN, + service, + {ATTR_CONFIG_ENTRY_ID: mock_config_entry.entry_id} | payload, + blocking=True, + return_response=True, + ) + + +@pytest.mark.parametrize( + ("service", "payload"), + [ + (SERVICE_GET_REQUESTS, {}), + ], +) +async def test_service_entry_availability( + hass: HomeAssistant, + mock_overseerr_client: AsyncMock, + mock_config_entry: MockConfigEntry, + service: str, + payload: dict[str, str], +) -> None: + """Test the services without valid entry.""" + mock_config_entry.add_to_hass(hass) + mock_config_entry2 = MockConfigEntry(domain=DOMAIN) + mock_config_entry2.add_to_hass(hass) + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + with pytest.raises(ServiceValidationError, match="Mock Title is not loaded"): + await hass.services.async_call( + DOMAIN, + service, + {ATTR_CONFIG_ENTRY_ID: mock_config_entry2.entry_id} | payload, + blocking=True, + return_response=True, + ) + + with pytest.raises( + ServiceValidationError, match='Integration "overseerr" not found in registry' + ): + await hass.services.async_call( + DOMAIN, + service, + {ATTR_CONFIG_ENTRY_ID: "bad-config_id"} | payload, + blocking=True, + return_response=True, + )