107 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
a643c9426d remove everything related to requests (#455)
This PR removes the requests feature. The functionality will be replaced
either by Seerr or by reimplementing it in a better way.
2026-02-22 19:46:47 +01:00
Marcel Hellwig
96b84d45db Adding some more new lints (#393)
Enable `UP` and `TRY` lint
2026-02-01 18:04:15 +01:00
Marcel Hellwig
311e625eee two hotfixes (#392)
this prevents the app from running correctly
2026-02-01 17:42:15 +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
75406cbc64 ruff: add RET lint
lints about assign and immediatly returning a variable
2026-01-05 19:30:42 +01:00
Marcel Hellwig
acd883df21 ruff: enable PIE lint
this just removes needless pass or ...
2026-01-05 19:30:42 +01:00
Marcel Hellwig
f2141ca8b8 ruff: enable PERF lint
this complains a lot about using manual append where a list
comprehension would be more suitable
2026-01-05 19:30:42 +01:00
Marcel Hellwig
29476e2008 ruff: enable INT and N lint
this renames some files to use snake_case and add Error suffix to custom
exceptions
2026-01-05 19:30:42 +01:00
Marcel Hellwig
6e46b482cb ruff: enable A lint 2026-01-05 19:30:42 +01:00
Marcel Hellwig
1857cf501c ruff: enable RUF lint 2026-01-05 19:30:42 +01:00
Marcel Hellwig
a7bb5e1e04 Make proper use of function overloading
In preparation of the RUFF lint, I rewrote the function to use
typing.overload.
This is the proper way to accept either two arguments or one argument
2026-01-05 19:30:42 +01:00
Marcel Hellwig
ff013ac76e ruff: enable I lint 2026-01-05 19:30:42 +01:00
Marcel Hellwig
eac58d2843 ruff: enable FAST lint
this mostly is replacing the response_model attribute with a return type
of that function since that's the more idiomatic way to do
2026-01-05 19:30:42 +01:00
Marcel Hellwig
97cb3b5c1e ruff: enable EM lint 2026-01-05 19:30:42 +01:00
Marcel Hellwig
2c36adfd75 ruff: Enable B lint 2026-01-05 19:30:42 +01:00
Maximilian Dorninger
fc691f95bb fix bugs in MovieService
fix some small bugs in MovieService that were caused by the refactor
2026-01-04 23:37:33 +01:00
maxid
3f500eccc6 fix: replace ValueError with ConflictError in movie route 2026-01-01 14:22:19 +01:00
maxid
dd1e5d6621 refactor: update metadata methods to include optional language parameter 2026-01-01 14:21:51 +01:00
maxid
dc7cc98a1a refactor: enhance error handling in check_if_movie_exists method 2026-01-01 14:01:44 +01:00
maxid
e14f19bd45 format files 2025-12-30 00:19:28 +01:00
maxid
7c488e4fae refactor: improve logging and correct directory deletion in service.py 2025-12-30 00:17:45 +01:00
maxid
95c22fa854 Merge branch 'master' into refactor-code
# Conflicts:
#	media_manager/movies/service.py
#	media_manager/tv/service.py
2025-12-30 00:14:24 +01:00
maxid
40130c6a37 refactor: rename AllEncompassingConfig to MediaManagerConfig 2025-12-29 23:38:17 +01:00
maxid
009f743259 refactor: enhance exception handling 2025-12-29 22:54:45 +01:00
maxid
8de3a71bfd refactor: standardize parameter usage in movie router and service 2025-12-29 22:45:50 +01:00
Maximilian Dorninger
d3e12579ac Merge pull request #324 from briandipalma/extra-spaces
fix: only add one space between release year and release ID and fix formatting of dev guide docs
2025-12-29 22:14:14 +01:00
Brian Di Palma
57c94dbd57 feat(importing): Only add one space between release year and release ID 2025-12-29 20:05:51 +00:00
maxid
3c67705275 refactor movie/router.py 2025-12-29 13:17:20 +01:00
maxid
499d6a2b3f refactor: update movie handling in router.py to use movie_dep 2025-12-29 12:58:15 +01:00
maxid
4cc4ff3629 refactor: improve logging for deleted torrents in service.py 2025-12-29 11:54:56 +01:00
maxid
12ce02473d fix: set success variable when importing movie 2025-12-29 00:35:54 +01:00
maxid
7ea1984d6c refactor indexer search: streamline result evaluation by using raw torrent list 2025-12-28 23:41:06 +01:00
maxid
91ed5e34dc refactor indexer service: streamline movie and season search methods 2025-12-28 11:20:51 +01:00
maxid
61fc87e577 fix bug: actually save imdb_id to database 2025-12-27 12:42:36 +01:00
maxid
9c6676f1f3 feat: add imdb_id parameter to update movie and show methods 2025-12-23 20:29:51 +01:00
maxid
3b920135c2 format files 2025-12-23 19:54:27 +01:00
maxid
0c30ede537 feat: add imdb_id fields to movies and shows 2025-12-23 19:54:17 +01:00
aasmoe
3574a0a08e Merge branch 'master' into feat/multi-language-metadata 2025-12-21 14:43:17 +01:00
maxid
1293cc692c fix: rename source directory before importing existing movies and TV shows 2025-12-20 21:16:52 +01:00
maxid
cfe34358a0 refactor title processing to remove special characters and brackets 2025-12-20 20:00:27 +01:00
maxid
1f50b18b9f refactor media detection functions to improve accuracy 2025-12-20 19:37:34 +01:00
maxid
eb7a15d32d Merge branch 'refs/heads/master' into fork/aasmoe/feat/multi-language-metadata
# Conflicts:
#	metadata_relay/app/tmdb.py
#	web/src/lib/api/api.d.ts
2025-12-20 14:53:41 +01:00
maxid
c78bc05627 format files 2025-12-20 13:08:32 +01:00
Maximilian Dorninger
a40077a5b1 remove unnecessary check of movie.library 2025-12-18 22:06:16 +01:00
aasmoe
1afa13a954 Merge branch 'master' into feat/multi-language-metadata 2025-12-18 12:00:54 +01:00
xNinjaKittyx
28915a5484 fix: use the right functions and also make sure the 2 checkboxes are on movies too. 2025-12-16 02:41:04 +00:00
xNinjaKittyx
380de78b51 feature: delete files and torrents. 2025-12-15 21:14:16 +00:00
xNinjaKittyx
18dd20d93e feature: add basic delete capability. 2025-12-15 18:06:04 +00:00
xNinjaKittyx
db044d9351 fix: change id to movieID/ShowID type. 2025-12-15 17:54:31 +00:00