Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions mnamer/endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ class TvdbLinks(TypedDict):
class TvdbSeriesData(TypedDict):
id: int
series_name: str
first_aired: NotRequired[str]


class TvdbSeriesResponse(TypedDict):
Expand Down Expand Up @@ -116,6 +117,7 @@ class TvMazeShow(TypedDict):
id: int
name: str
externals: TvMazeExternals
premiered: NotRequired[str | None]


class TvMazeSearchEntry(TypedDict):
Expand Down
2 changes: 2 additions & 0 deletions mnamer/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ class MetadataEpisode(Metadata):
"""

series: str | None = None
series_year: str | None = None
season: int | None = None
episode: int | None = None
date: dt.date | None = None
Expand Down Expand Up @@ -179,6 +180,7 @@ def __setattr__(self, key: str, value: Any):
"episode": int,
"season": int,
"series": fn_pipe(str_replace_slashes, str_title_case),
"series_year": year_parse,
"title": fn_pipe(str_replace_slashes, str_title_case),
}
converter: Callable[[Any], Any] | None = converter_map.get(key)
Expand Down
2 changes: 2 additions & 0 deletions mnamer/providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,7 @@ def _search_id(
id_tvdb=id_tvdb,
season=entry["aired_season"],
series=series_data["data"]["series_name"],
series_year=series_data["data"].get("first_aired"),
language=language,
synopsis=(entry["overview"] or "")
.replace("\r\n", "")
Expand Down Expand Up @@ -532,4 +533,5 @@ def _transform_meta(
series=series_entry["name"],
synopsis=episode_entry["summary"] or None,
title=episode_entry["name"] or None,
series_year=series_entry.get("premiered"),
)
6 changes: 6 additions & 0 deletions tests/local/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ def test_metadata_episode__convert_episode():
assert metadata.episode == 1


@pytest.mark.parametrize("value", ["1987", "1987-10-01"])
def test_metadata_episode__convert_series_year(value):
metadata = MetadataEpisode(series_year=value)
assert metadata.series_year == 1987


def test_metadata_episode__format_default():
metadata = MetadataEpisode(series="Spongebob Squarepants", season=4, episode=4)
actual = format(metadata)
Expand Down
7 changes: 6 additions & 1 deletion tests/local/test_providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@
"imdb_id": "tt1234567",
}

TVDB_SERIES = {"data": {"id": 100, "series_name": "Example Series"}}
TVDB_SERIES = {
"data": {"id": 100, "series_name": "Example Series", "first_aired": "2019-01-01"}
}

TVDB_EPISODE = {
"first_aired": "2020-01-02",
Expand All @@ -42,6 +44,7 @@
"id": 200,
"name": "Example Series",
"externals": {"thetvdb": 100, "imdb": "tt7654321"},
"premiered": "2019-01-01",
}

TVMAZE_EPISODE = {
Expand Down Expand Up @@ -227,6 +230,7 @@ def test_tvdb_search__lazy_login_and_id_search(mocker):
assert result.series == "Example Series"
assert result.title == "Episode Two"
assert result.id_tvdb == "100"
assert result.series_year == 2019
mock_login.assert_called_once_with("key")
mock_series.assert_called_once_with("token", "100", language=None, cache=True)
mock_episodes.assert_called_once_with(
Expand Down Expand Up @@ -324,6 +328,7 @@ def test_tvmaze_search__tvmaze_id_season_episode(mocker):
assert result.title == "Episode Two"
assert result.id_tvmaze == "200"
assert result.id_tvdb == "100"
assert result.series_year == 2019


def test_tvmaze_search__tvdb_id_date_lookup(mocker):
Expand Down