Skip to content

Commit 8e51ff9

Browse files
Updates and tidyups
1 parent c900509 commit 8e51ff9

9 files changed

Lines changed: 171 additions & 125 deletions

File tree

.github/workflows/publishing.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
if: startsWith(github.ref, 'refs/tags/')
2828
needs:
2929
- build
30-
30+
3131
environment:
3232
name: pypi
3333
url: https://pypi.org/p/Mediux-Posters

.github/workflows/testing.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ jobs:
3030
- ubuntu-latest
3131
- macos-latest
3232
- windows-latest
33-
33+
3434
permissions:
3535
contents: read
3636
runs-on: ${{ matrix.os }}
37-
37+
3838
steps:
3939
- uses: actions/checkout@v4
4040
- uses: astral-sh/setup-uv@v5
@@ -47,15 +47,15 @@ jobs:
4747
MEDIUX__BASE_URL: ${{ secrets.MEDIUX__BASE_URL }}
4848
MEDIUX__API_KEY: ${{ secrets.MEDIUX__API_KEY }}
4949
run: uv run pytest
50-
50+
5151
collector:
5252
if: always()
5353
needs:
5454
- pytest
55-
55+
5656
permissions: {}
5757
runs-on: ubuntu-latest
58-
58+
5959
steps:
6060
- name: Check for failures
6161
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.11.9
3+
rev: v0.11.11
44
hooks:
55
- id: ruff-format
6-
- id: ruff
6+
- id: ruff-check
77
- repo: https://github.com/executablebooks/mdformat
88
rev: 0.7.22
99
hooks:
@@ -38,7 +38,7 @@ repos:
3838
- id: mixed-line-ending
3939
args:
4040
- --fix=auto
41-
# - id: name-tests-test
41+
- id: name-tests-test
4242
- id: trailing-whitespace
4343
args:
4444
- --markdown-linebreak-ext=md

mediux_posters/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def setup_logging(debug: bool = False) -> None:
6060
omit_repeated_times=False,
6161
show_level=True,
6262
show_time=False,
63-
show_path=True,
63+
show_path=debug,
6464
console=CONSOLE,
6565
)
6666
console_handler.setLevel(logging.DEBUG if debug else logging.INFO)

mediux_posters/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ def setup(
5858
delete_folder(folder=get_cache_root())
5959
settings = Settings.load().save()
6060
if not settings.mediux.token:
61-
LOGGER.fatal("Mediux Posters requires a Mediux ApiKey to be set.")
61+
LOGGER.fatal("Mediux Posters requires a Mediux Token to be set.")
6262
raise Abort
63-
mediux = Mediux(base_url=settings.mediux.base_url, api_key=settings.mediux.token)
63+
mediux = Mediux(base_url=settings.mediux.base_url, token=settings.mediux.token)
6464
service_list = []
6565
if settings.plex.token:
6666
service_list.append(Plex(base_url=settings.plex.base_url, token=settings.plex.token))

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ classifiers = [
3232
dependencies = [
3333
"graphql-query >= 1.4.0",
3434
"httpx[http2] >= 0.28.1",
35-
"pydantic >= 2.11.4",
35+
"pydantic >= 2.11.5",
3636
"ratelimit >= 2.2.1",
3737
"rich >= 14.0.0",
3838
"tomli >= 2.2.1 ; python_version < '3.11'",
3939
"tomli-w >= 1.2.0",
40-
"typer >= 0.15.4",
40+
"typer >= 0.15.4"
4141
]
4242
description = "Fetches Show, Movie, and Collection cover art from Mediux and updates Plex/Jellyfin using TMDB IDs."
4343
dynamic = ["version"]

tests/jellyfin_test.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,16 @@ def test_list_shows(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
1818
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
1919
httpx_mock.add_response(
2020
url="http://localhost/Library/MediaFolders",
21-
json=json.loads(Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")),
21+
json=json.loads(
22+
Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")
23+
),
2224
is_reusable=True,
2325
)
2426
httpx_mock.add_response(
2527
url=re.compile("http://localhost/Items.*IncludeItemTypes=Series"),
26-
json=json.loads(Path("tests/resources/jellyfin/list-shows.json").read_text(encoding="UTF-8")),
28+
json=json.loads(
29+
Path("tests/resources/jellyfin/list-shows.json").read_text(encoding="UTF-8")
30+
),
2731
is_reusable=True,
2832
)
2933

@@ -43,7 +47,9 @@ def test_get_series(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
4347
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
4448
httpx_mock.add_response(
4549
url="http://localhost/Library/MediaFolders",
46-
json=json.loads(Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")),
50+
json=json.loads(
51+
Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")
52+
),
4753
is_reusable=True,
4854
)
4955
httpx_mock.add_response(
@@ -75,7 +81,9 @@ def test_list_seasons(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock)
7581
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
7682
httpx_mock.add_response(
7783
url=re.compile("http://localhost/Shows/.*/Seasons.*"),
78-
json=json.loads(Path("tests/resources/jellyfin/list-seasons.json").read_text(encoding="UTF-8")),
84+
json=json.loads(
85+
Path("tests/resources/jellyfin/list-seasons.json").read_text(encoding="UTF-8")
86+
),
7987
is_reusable=True,
8088
)
8189

@@ -102,7 +110,9 @@ def test_list_episodes(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock)
102110
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
103111
httpx_mock.add_response(
104112
url=re.compile("http://localhost/Shows/.*/Episodes.*"),
105-
json=json.loads(Path("tests/resources/jellyfin/list-episodes.json").read_text(encoding="UTF-8")),
113+
json=json.loads(
114+
Path("tests/resources/jellyfin/list-episodes.json").read_text(encoding="UTF-8")
115+
),
106116
is_reusable=True,
107117
)
108118

@@ -131,12 +141,16 @@ def test_list_movies(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) -
131141
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
132142
httpx_mock.add_response(
133143
url="http://localhost/Library/MediaFolders",
134-
json=json.loads(Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")),
144+
json=json.loads(
145+
Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")
146+
),
135147
is_reusable=True,
136148
)
137149
httpx_mock.add_response(
138150
url=re.compile("http://localhost/Items.*IncludeItemTypes=Movie"),
139-
json=json.loads(Path("tests/resources/jellyfin/list-movies.json").read_text(encoding="UTF-8")),
151+
json=json.loads(
152+
Path("tests/resources/jellyfin/list-movies.json").read_text(encoding="UTF-8")
153+
),
140154
is_reusable=True,
141155
)
142156

@@ -155,12 +169,16 @@ def test_get_movie(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
155169
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
156170
httpx_mock.add_response(
157171
url="http://localhost/Library/MediaFolders",
158-
json=json.loads(Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")),
172+
json=json.loads(
173+
Path("tests/resources/jellyfin/list-libraries.json").read_text(encoding="UTF-8")
174+
),
159175
is_reusable=True,
160176
)
161177
httpx_mock.add_response(
162178
url=re.compile("http://localhost/Items.*IncludeItemTypes=Movie"),
163-
json=json.loads(Path("tests/resources/jellyfin/get-movie.json").read_text(encoding="UTF-8")),
179+
json=json.loads(
180+
Path("tests/resources/jellyfin/get-movie.json").read_text(encoding="UTF-8")
181+
),
164182
is_reusable=True,
165183
)
166184

tests/plex_test.py

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ def test_list_shows(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
1818
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
1919
httpx_mock.add_response(
2020
url="http://localhost/library/sections",
21-
json=json.loads(Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")),
21+
json=json.loads(
22+
Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")
23+
),
2224
is_reusable=True,
2325
)
2426
httpx_mock.add_response(
@@ -43,7 +45,9 @@ def test_get_show(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
4345
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
4446
httpx_mock.add_response(
4547
url="http://localhost/library/sections",
46-
json=json.loads(Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")),
48+
json=json.loads(
49+
Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")
50+
),
4751
is_reusable=True,
4852
)
4953
httpx_mock.add_response(
@@ -98,7 +102,9 @@ def test_list_episodes(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None
98102
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
99103
httpx_mock.add_response(
100104
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
101-
json=json.loads(Path("tests/resources/plex/list-episodes.json").read_text(encoding="UTF-8")),
105+
json=json.loads(
106+
Path("tests/resources/plex/list-episodes.json").read_text(encoding="UTF-8")
107+
),
102108
is_reusable=True,
103109
)
104110

@@ -123,17 +129,23 @@ def test_list_collections(plex_session: Plex | None, httpx_mock: HTTPXMock) -> N
123129
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
124130
httpx_mock.add_response(
125131
url="http://localhost/library/sections",
126-
json=json.loads(Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")),
132+
json=json.loads(
133+
Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")
134+
),
127135
is_reusable=True,
128136
)
129137
httpx_mock.add_response(
130138
url=re.compile(r"http://localhost/library/sections/.*/collections\?includeGuids=1"),
131-
json=json.loads(Path("tests/resources/plex/list-collections.json").read_text(encoding="UTF-8")),
139+
json=json.loads(
140+
Path("tests/resources/plex/list-collections.json").read_text(encoding="UTF-8")
141+
),
132142
is_reusable=True,
133143
)
134144
httpx_mock.add_response(
135145
url=re.compile(r"http://localhost/library/metadata/.*\?includeGuids=1"),
136-
json=json.loads(Path("tests/resources/plex/get-collection.json").read_text(encoding="UTF-8")),
146+
json=json.loads(
147+
Path("tests/resources/plex/get-collection.json").read_text(encoding="UTF-8")
148+
),
137149
is_reusable=True,
138150
)
139151

@@ -153,17 +165,23 @@ def test_get_collection(plex_session: Plex | None, httpx_mock: HTTPXMock) -> Non
153165
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
154166
httpx_mock.add_response(
155167
url="http://localhost/library/sections",
156-
json=json.loads(Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")),
168+
json=json.loads(
169+
Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")
170+
),
157171
is_reusable=True,
158172
)
159173
httpx_mock.add_response(
160174
url=re.compile(r"http://localhost/library/sections/.*/collections\?includeGuids=1"),
161-
json=json.loads(Path("tests/resources/plex/list-collections.json").read_text(encoding="UTF-8")),
175+
json=json.loads(
176+
Path("tests/resources/plex/list-collections.json").read_text(encoding="UTF-8")
177+
),
162178
is_reusable=True,
163179
)
164180
httpx_mock.add_response(
165181
url=re.compile(r"http://localhost/library/metadata/.*\?includeGuids=1"),
166-
json=json.loads(Path("tests/resources/plex/get-collection.json").read_text(encoding="UTF-8")),
182+
json=json.loads(
183+
Path("tests/resources/plex/get-collection.json").read_text(encoding="UTF-8")
184+
),
167185
is_reusable=True,
168186
)
169187

@@ -184,7 +202,9 @@ def test_list_collection_movies(plex_session: Plex | None, httpx_mock: HTTPXMock
184202
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
185203
httpx_mock.add_response(
186204
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
187-
json=json.loads(Path("tests/resources/plex/list-collection-movies.json").read_text(encoding="UTF-8")),
205+
json=json.loads(
206+
Path("tests/resources/plex/list-collection-movies.json").read_text(encoding="UTF-8")
207+
),
188208
is_reusable=True,
189209
)
190210

@@ -209,7 +229,9 @@ def test_list_movies(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
209229
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
210230
httpx_mock.add_response(
211231
url="http://localhost/library/sections",
212-
json=json.loads(Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")),
232+
json=json.loads(
233+
Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")
234+
),
213235
is_reusable=True,
214236
)
215237
httpx_mock.add_response(
@@ -234,7 +256,9 @@ def test_get_movie(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
234256
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
235257
httpx_mock.add_response(
236258
url="http://localhost/library/sections",
237-
json=json.loads(Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")),
259+
json=json.loads(
260+
Path("tests/resources/plex/list-libraries.json").read_text(encoding="UTF-8")
261+
),
238262
is_reusable=True,
239263
)
240264
httpx_mock.add_response(

0 commit comments

Comments
 (0)