20 Commits

Author SHA1 Message Date
Maximilian Dorninger
f5253990e0 switch from APScheduler to Taskiq (#461)
This PR replaces the APScheduler lib with the Taskiq task queuing lib. 

# why

APScheduler doesn't support FastAPI's DI in tasks, this makes them quite
cumbersome to read and write since DB, Repositories and Services all
need to be instanciated manually.

Moreover, Taskiq makes it easier to start background tasks from FastAPI
requests. This enables MM to move to a more event-based architecture.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* App now uses an orchestrated async startup/shutdown and runs
background scheduling via a database-backed task queue; startup enqueues
pre-load/import/update tasks.

* **Bug Fixes**
* Improved torrent client handling with clearer conflict messages and
guidance for manual resolution.
* Enhanced logging around season, episode and metadata update
operations; minor regex/behaviour formatting preserved.

* **Chores**
* Updated dependencies to support the new task queue and connection
pooling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-26 21:23:24 +01:00
Maximilian Dorninger
c45c9e5873 add correlation id to logging (#398)
This PR adds Correlation IDs to logs and request responses.

```
2026-02-04 12:40:32,793 - [afd825081d874d6e835b5c59a6ddb371] DEBUG - media_manager.movies - get_importable_movies(): Found 5 importable movies.
2026-02-04 12:40:32,794 - [afd825081d874d6e835b5c59a6ddb371] INFO - uvicorn.access - send(): 172.19.0.1:64094 - "GET /api/v1/movies/importable HTTP/1.1" 200
2026-02-04 12:40:47,322 - [41d30b7003fd45288c6a4bb1cfba5e7a] INFO - uvicorn.access - send(): 127.0.0.1:52964 - "GET /api/v1/health HTTP/1.1" 200
2026-02-04 12:41:17,408 - [157027ea5dde472a9e620f53739ccd53] INFO - uvicorn.access - send(): 127.0.0.1:39850 - "GET /api/v1/health HTTP/1.1" 200
```
2026-02-04 13:55:05 +01:00
Sergey Khruschak
24fcba6bee Torrent file name sanitizing (#390)
Hi, I've added file names sanitization when saving the torrent file, as
previously the import was failing on torrents with special characters in
names. This fixes #367
2026-02-03 17:09:36 +01:00
Maximilian Dorninger
a39e0d204a Ruff enable type annotations rule (#362)
This PR enables the ruff rule for return type annotations (ANN), and
adds the ty package for type checking.
2026-01-06 17:07:19 +01:00
Marcel Hellwig
0b4b84a4aa add ruff as dev-dependency
since it is mentioned in the development doc, it makes sense to install
it as such
2026-01-05 19:30:34 +01:00
Marcel Hellwig
593e1828cc remove pillow-avif package
it is possible since 11.3 to use avif in the main pillow package,
therefore the avif package is no longer needed

https://github.com/python-pillow/Pillow/pull/5201#issuecomment-3023668716
2026-01-05 19:29:52 +01:00
maxid
86130f0a6e update dependencies 2025-12-30 00:32:39 +01:00
maxid
b510b1a6e4 enhance Prowlarr indexer: use tmdb, imdb, tvdb id, and season number for searches 2025-12-27 22:22:19 +01:00
maxDorninger
558d18163c add libtorrent as dependency 2025-07-27 13:41:15 +02:00
maxDorninger
b3c762040d add support for transmission 2025-07-15 19:56:46 +02:00
maxDorninger
fa7e03a640 add pydantic[toml] as dependency 2025-07-11 00:56:25 +02:00
Maximilian Dorninger
8e5e069263 Merge branch 'master' into add-usenet-support 2025-07-10 01:44:12 +02:00
maxDorninger
28349641c0 format files 2025-07-09 23:56:34 +02:00
Joe Thomas
5e3b40bb43 updated some setup steps 2025-07-03 15:45:00 +02:00
maxDorninger
ec2493afdb add logic to convert images to avif and webp 2025-06-08 21:32:59 +02:00
maxDorninger
5c646db42a add tests 2025-06-07 16:45:15 +02:00
maxDorninger
69d6fa7c15 add automatic alembic migrations to docker images 2025-06-01 22:45:16 +02:00
maxDorninger
3ec45c5f0a format code 2025-05-31 14:40:33 +02:00
maxDorninger
71cbed8a6f working on making things work with docker 2025-05-29 23:57:26 +02:00
maxDorninger
88c72e3303 switch to uv and remove old logo.svg 2025-05-29 22:33:13 +02:00