We are excited to announce the release of the next version of Shoko Server! This new version brings a few breaking changes, lots of bug fixes among other changes, pushing us a few steps closer to completely removing the need for Shoko Desktop.
For our detailed report, we highly recommend reading the accompanying blog post.
Read the blog post on our site
Read the changelog on our site
Read the full changelog on GitHub
Breaking Changes
-
Removed ALL TvDB support from server except the TvDB IDs stored on the TMDB show/episode models and the exposed TvDB IDs sourced from said models in the APIv3. (c016174, d3df135, 1c392eb, 355183d) @revam
-
Soft deprecated TvDB support in APIv1, so we won't make Shoko Desktop throw any weird errors. (c016174)
-
Replaced the TvDB usage in APIv2 with TMDB or removed it outright, except the TvDB IDs. (c016174, 1ddec53, 0da092d, 5b95562, 99407e8, 56c383a)
-
Removed all TvDB endpoints and models in APIv3 except for the TvDB IDs exposed in the Shoko series/episode models sourced from the TMDB data. (c016174)
-
Simplified
IImageMetadata
in plugin abstraction. RemovedIsAvailable
(useIsLocalAvailable
orIsRemoteAvailable
), changedGetStream(bool allowLocal = true, bool allowRemote = true)
toGetStream()
, which will now only search for local data. no remote data, and kept theDownloadImage(bool force = false)
method for now, so plugins can still instruct the core to download images not already present locally if needed, but added doc-comments for which exceptions may be thrown by the methods which plugins (and the core) should watch out for if they're using the method. (e1abf14) -
Convert episode images from a list to the images DTO model in APIv3. (0af72dc)
-
Refactored TMDB APIv3 endpoints in one or more breaking ways. See the individual commits for more details. (5c286d4, bba2446, dec67a1)
-
Remove unused AniDB settings. (28abed7)
-
Removed old deprecated and unused endpoints in APIv3. (12a93c1)
New Additions
-
Added "fake" TMDB season cross-references inferred from the linked episodes. (0cfc5d4, 99407e8, 56c383a)
-
Added the images linked to the seasons to the Shoko series entry, because apparently there isn't a 100% overlap between the show images and season images. (0cfc5d4, 99407e8, 56c383a, c77f76a)
-
Added genres to TMDB remote searches. (69b817e)
-
Added new filter expressions. (98aa738, d79b2d5, db9a9a6, abdeb2c, d1d3379) @da3dsoul
-
Added a new generated playlist service to generate m3u8 playlists for media player consumption. (7c760e2, b0779a7, e1abd9f, f3bc104, 3013fcf, 9182c13, 31e56e9, 5c36776)
-
Added new file endpoints in APIv3. (5be796c, c3cce2f, f6ad5bd)
-
Added duplicates management and missing episodes endpoints, and move around existing release management endpoints in APIv3. (6fe68cd, 2880905, 097dd74, b7f0356, 252cb62) @harshithmohan
-
Added a 'log sql in console' debug setting. (2382e45)
-
Added actions to purge all movie collections & show alternate orderings. (159ca4c, ace74b3)
-
Added direct virtual getters to get to the TMDB entities through the plugin abstraction. (94d6358)
-
Added action to search for TMDB matches for all unlinked AniDB anime. (35297d9)
-
Added
UpdateTraktShowJob
& Trakt series sync/refresh endpoints in APIv3. (#1211) (a6a5c54) @harshithmohan -
Added an action to purge all AniDB↔TMDB links and optionally reset the auto linking state. (0da2d92)
Minor Changes
-
Improved TMDB linking logic to be more through. (a5d0e02, 69b817e, a4d1223, 5bc8be0, 3635a46, 94045ad, d9f2faa, a2dabcd, 79f8073, 10467fe, 9ab467e)
-
Store TMDB keywords and production countries. (3c66619)
-
Only check if a zip is attached to the release when checking for new Web UI releases. (32ae459)
-
Make AniDB rate limiting configurable and non-blocking, among other improvements to the provider such as fixing some incorrectly assumed AniDB UDP bans. (2e08d8c, f06a89b, 963a641, 9cc0c51, 8e41e48, eef67dd, eef67dd) @da3dsoul
-
Modified the trakt provider to use TMDB IDs for the search. And removed the stored TvDB IDs from the Trakt Show model, and added TMDB IDs to the model instead. The Trakt support may still need an overhaul though, but this is a start at least. (c016174, e97a3b7) @krbrs
-
Moved the code to check the validity of the trakt token to a job that runs every 12h instead of spamming the log every few minutes. (#1201) (c24465c) @krbrs
-
Exposed if a Shoko episode is hidden in the plugin abstraction. (c573bb9)
-
Reimplemented anime↔character/creator mappings for AniDB internally, and made them show up properly in APIv3. (#1183, #1213) (1568143, 1709eb3, 9cb88d9, 677b0e9, a480222) @krbrs
-
Added indexes for all TMDB tables, and cached more core TMDB tables. (#1216) (b4d10e6, 76f4ce0, 9f3a0c7, 8c82241, 99407e8, 61edd15, 23061b5, 56c383a) @harshithmohan @da3dsoul
-
Exposed community rating on images if available in APIv3. (e7b5cc2)
-
Improved TMDB cross-reference import endpoint. Made it remove existing cross-references for the episodes not in the import file by default, but allow the user to disable this behavior at import time if needed. Allowed optionally not downloading the missing movies/shows if the respective query parameter is set to false. (ae74297)
-
Improved concurrency when scheduling jobs. (036bb66, a165338)
-
Made it possible to search for only restricted episodes/series in the APIv3 dashboard endpoints, and also made it possible to return a list of episodes for a given time-frame, and not just the
x
number of next days from today. (7c76681) -
More query options for the random image metadata endpoint in APIv3. (fb60709)
-
Exposed created/updated timestamps for episode/group in APIv3. (db935d3)
-
Exposed main AniDB anime ID for Shoko group in APIv3. (0fb3ac3)
Bug Fixes
-
Fixed width/height for
IImageMetadata
implementation on images served in APIv3. (b7d3a4e) -
Hide files in "import limbo" from the unrecognized files option again, but this time properly add new include options to the monolithic file endpoint to include them separately. They're hidden/excluded by default but can be included if needed. (ac81733, 7b4273f)
-
Fixed match field of search result in internal search utility. (34a3e4a)
-
Fixed serialization error in
SyncTraktEpisodeHistoryJob
. (723b20a) @da3dsoul -
Fixed default sort of files in APIv3. (b0ae6be)
-
Ensured only 1 cross-reference per company exist. (991ac1c)
-
Removed stall entry during relocation. (552259c)
-
Always remove files from the file watcher exception list after they have been moved. (4a5598f)
-
Don't send cross-references for non-existing files in APIv3. (49705f6)
-
Get top level groups for groups matching the filter. (62c49b1)
-
Search all group names. (6c2cebf)
-
Don't drop cross-references if we're unable to get the anime id and instead allow the missing id to be later retrieved. (359d7a4)
-
Fixed casing for AniDB episode UDP command. (87983f2)
-
Fixed relation depth comparison in
GetAniDBAnimeJob
. (d66b282) @harshithmohan -
Use correct IDs for custom tag endpoints in APIv3. (d3fecd9)
-
Don't dispose the AniDB connection at first time setup. (eef67dd) @da3dsoul
-
Fixed restricted tags not getting saved. (#1199) (4313d61) @harshithmohan
-
Avoid the logout timer trying to acquire the lock twice. (#1200) (51e529b) @fearnlj01
-
More accurate release date selection logic for TMDB movies. (64e2e99)
-
Also resolve Shoko series links for alternate TMDB seasons. (6363c9f)
-
Fixed default settings for default renamer config. (5559ed4) @harshithmohan
-
Fixed TMDB cross-reference import endpoint in APIv3. (c66528d, f7c2fbc)
-
Check the max image limits properly for TMDB. (9808915)
-
Only add the same tag once in case we're using a newer tag. (d41fee3, 016323b)
-
Strip the '
(voice)
' appearing at the end of each character name, because we only have voice-actors for anime, and no live-action actors. (2573743) -
Get all relations in APIv3 and plugin abstraction. (9c7ce5e, b2113c2)
-
Extend
ProductionCountries
column length for MySQL/MariaDB & MS SQL Server. (#1206, #1207) (d91932f, ecd308b) @krbrs -
Remove cross-references for missing TMDB episodes. (a96d01c)
-
Added a database migration and endpoint to download missing TMDB people. (#1202, #1203) (85cac43, 1f19d95, b4c1cae) @fearnlj01
-
Update
datetime
todatetime2
for MS SQL Server. (#1210) (5a1bc7f) @krbrs -
Fixed setting/viewing preferred episode images. (66723fe)
-
Removed bogus '
$
' in TMDB role details in APIv3. (e110785) -
Only schedule AniDB images if the entry's image path is not empty. (f76efe8)
-
Small fixes in APIv2. (9dfedb0)
-
Return plex IsAuthenticated false if token is missing. (594e954, 4b78415, 087ab5b) @harshithmohan
-
Ensured requests wait for TMDB metadata lock. (d23feaa, 717f98c)
-
Remove creator if it's not found on AniDB and also reschedule any related anime to be downloaded again. (a8b6399)
-
Lock while getting TMDB config and add fallback for when we're unable to get the config in some scenarios. (2da9d81)
-
Fix NRE when looking up images for TMDB shows. (1c30ed5)
-
Lock when updating movie collection. (80072a3)
-
Save staff cross-references for new relations. (8f9a931)
-
Ignore places virtual field on import folder when serializing it. (f2099b0)
-
Only use cross-references with files for file summaries. (ae8f31e)
-
URL decode renamer config names to allow '
/
'. (ad927a2) @harshithmohan -
Always force MyList sync when ran as an action. (c4d3447)
-
Check for error code 330 in case the user's MyList is empty. (c299c67)
-
Delete any and all preferred image overrides set to an image that is being disabled. (fb9c86a)
-
Set all fields when converting the current TMDB image to
IImageMetadata
. (a95c83a) -
Added missing MediaInfo codec ID mapping for '
V_AV1
' → 'AV1
'. (f1db5f2) @harshithmohan
Repository Changes
-
Updated stable GHA workflow. (7ca0b07)
-
Use git tags for version tracking of dailies, since it will make it easier to get the build number of dailies in the server in the next commit. (e572640, 7df1758, b5832e3, 46ebde4, d72f0b1, 24d2e8c)
-
Misc QoL changes. (808d7ae, c2ca416, 493abe4, 5188ae5, f924b4e, 1ee7bc6, fad746d, 6b65930, 340435b, ae73fc9, 063658d)
-
Add workflow to cleanup untagged docker images. (40b09c7)
-
Update NuGet packages. (#1188, #1206) (e836426, 211c0a0, 04281b0) @dependabot @krbrs
-
Change Shoko home for VS Code debug environment. (2014ab7)
-
Fix self-contained builds. (82f041d) @harshithmohan
-
Move NuGet publish to daily build workflow. (a8ff2be, 788206c)
-
Added installer builds to daily build workflow. (99deb66)