Commit Graph

342 Commits

Author SHA1 Message Date
Shadowghost 79a6ac6d82 Don't read episode markers in episode titles as a multi-episode range 2026-09-06 08:04:34 +02:00
Kyle Farnung 39c2885fd6 Probe .idx instead of .sub for external VobSub subtitle language detection
External VobSub subtitle pairs (.idx and .sub) were only probed via the
bare .sub file. In cases where multiple languages are present, this
results in missing language metadata.

Fix by detecting the matching .idx file during media info resolution
to run ffprobe on that file and skip processing the .sub entirely.
ffprobe will automatically find the matching (same directory,
case-sensitive base) .sub file and process both.

Added regression tests covering idx/sub pairing, unpaired files,
cross-directory pairs, and language-flagged filenames.

Fixes #17745
2026-08-30 17:29:49 -07:00
st7105 7b66b32cdf Recognize WEB-DL release tags in video names 2026-08-14 06:03:42 +03:00
Bond-009 41b8bd4459 Merge pull request #17310 from TowyTowy/fix/format3d-trailing-token
Fix 3D format detection when the tag is the last token of the path
2026-07-28 20:05:51 +02:00
Shadowghost d1d89dfb12 Fix hyphenated numbers in episode titles parsed as multi-episodes 2026-07-25 16:21:26 +02:00
dkanada b62fef3c1f remove ogg from video extensions since it should only be used for audio 2026-07-25 14:10:30 +09:00
TowyTowy 5be844e1b7 Fix 3D format detection when the tag is the last token of the path
Format3DParser drops the last character of the final path token: when
IndexOfAny finds no more delimiters, the slice is taken with
'index = path.Length - 1', so e.g. "hsbs" is compared as "hsb" and
never matches any rule.

File paths are unaffected because the extension is always the final
token, but directory based media have no extension. For DVD/BluRay
folder rips (BaseVideoResolver parses the folder path via
Set3DFormat), a trailing 3D tag such as
"Gravity (2013) 3d hsbs/BDMV" is silently ignored and Video3DFormat
is never set.

This is a regression from 42a2cc174 which replaced the string.Split
based FlagParser with span slicing; the Split implementation kept the
final token intact.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:11:29 +02:00
Nils Lehnen f8ffccae7f Use InvariantCulture when parsing machine-generated dates
DateTime.TryParse without an IFormatProvider falls back to the current
thread culture, so the same string can parse differently (or fail)
depending on the server's locale. None of these call sites deal with
user-entered text - they parse dates that come from filenames, an
HTTP header, ffprobe metadata and values the app itself wrote to the
auth database - so InvariantCulture is the correct provider everywhere
here.

Fixes the S6580 / CA1305 warnings on these call sites.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 23:55:31 +02:00
Bond-009 bebb7ce803 Merge pull request #17112 from theguymadmax/add-year-to-series-resolver
Fix series year lost during name parsing
2026-06-18 17:46:23 +02:00
theguymadmax 64e02c0e28 Apply review feedback 2026-06-17 15:41:31 -04:00
theguymadmax 068bbb7981 Fix series year lost during parsing 2026-06-15 11:42:17 -04:00
dkanada f4bab458a2 improve book resolution from filename 2026-06-15 11:31:49 +09:00
Bond-009 8b387c82cf Merge pull request #16259 from theguymadmax/fix-season-in-mixed-library
Fix folders being identified as seasons in mixed libraries
2026-05-31 19:18:44 +02:00
jakobkukla 37350282cc Run tree-wide dotnet format 2026-05-21 20:48:41 +02:00
Shadowghost c91f640d37 Support stacked multi versions 2026-05-13 21:17:40 +02:00
Shadowghost 7f5ff3dabd Address review comments 2026-05-12 22:48:48 +02:00
Shadowghost d5bb7756f1 Implement multiple versions for episodes. 2026-05-11 16:41:22 +02:00
Bond-009 de64a69c7a Merge pull request #14847 from tjwalkr3/warnings-5
Fix CA1051 and CA1815 warnings, Change public fields to auto properties
2026-05-08 17:55:25 +02:00
theguymadmax 0028104ed9 Consolidate kewords 2026-05-06 20:58:40 -04:00
theguymadmax f6ac1d9f38 Fix folders being identified as seasons in mixed libraries 2026-05-06 18:35:23 -04:00
Tim Eisele bc074b5283 Switch to new version scheme (#16758) 2026-05-06 17:41:34 -04:00
Bond-009 28546f535c Merge pull request #16646 from Biosias/cz-sk-season-parse
Add different Slovak and Czech translation of Season for parsing
2026-05-06 17:40:47 +02:00
Niels van Velzen 57821e4cde Merge pull request #16475 from Shadowghost/fix-triple-digit-episode-numbers
Fix triple digit episode number handling
2026-05-04 17:58:13 +02:00
Biosias 31e8e197cf Add differen Slovak and Czech translation of Season for parsing 2026-04-16 13:14:59 +02:00
upscaylman ea206f43a2 recognize underscore and dot separators for multi-version grouping (#16465)
* Add underscore and dot as multi-version file separators

Extend IsEligibleForMultiVersion to recognize _ and . as valid
separators between the base movie name and the version suffix.

Common naming patterns like 'Movie_4K.mkv' or 'Movie.UHD.mkv'
are now correctly grouped as alternate versions during library scan.

* Address review: remove comment, add 3D recognition assertions

---------

Co-authored-by: aimarshall615-creator <aimarshall615@gmail.com>
2026-03-29 12:42:36 +02:00
Bond-009 6a20f948f4 Merge pull request #16222 from tyage/fix/filename-truncation-bracketed-tags
Fix filename truncation when bracketed tags appear mid-filename
2026-03-27 19:21:43 +01:00
Shadowghost 2147f57df5 Fix triple digit episode number handling 2026-03-26 11:44:35 +01:00
Evan Champion ccf2d15d5d AIFF support: add .aifc as audio file type, remove .aiff as image file type 2026-02-21 20:59:57 +08:00
Bond_009 b346370dfc Fix build 2026-02-15 11:28:42 +01:00
tyage 1c2f08bc17 Fix filename truncation when bracketed tags appear mid-filename 2026-02-12 00:23:44 +09:00
Bond_009 098e8c6fed Replace AlphanumericComparator with new CompareOptions.NumericOrdering 2026-01-14 18:55:47 +01:00
Bond_009 9e480f6efb Update to .NET 10.0 2026-01-14 18:55:47 +01:00
dkanada dd480f96cd parse more information from book filenames (#15655) 2025-12-13 08:29:28 -07:00
Niels van Velzen 8c02c3be93 Merge pull request #14824 from CodyEngel/fix-numeric-titles
Fix TV Series parsing containing only numbers.
2025-11-27 16:32:11 +01:00
theguymadmax 6c5f448787 Backport pull request #15404 from jellyfin/release-10.11.z
Improve season folder parsing

Original-merge: 2e5ced5098

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-11-17 14:08:54 -05:00
Shadowghost 87b02b1316 Backport pull request #15326 from jellyfin/release-10.11.z
Skip too large extracted season numbers

Original-merge: e7dbb3afec

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2025-11-02 21:58:45 -05:00
theguymadmax 3c4dc16003 Backport pull request #15102 from jellyfin/release-10.11.z
Make season paths case-insensitive

Original-merge: 305b0fdca3

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-10-27 15:43:12 -04:00
Joshua M. Boniface c274336563 Bump version to 10.12.0 (for real this time) 2025-10-26 21:52:03 -04:00
Thomas Jones 378ba937b6 Added in pragma warning disable for CA1815 warning.
Co-authored-by: Derpipose <90276123+Derpipose@users.noreply.github.com>
2025-09-23 13:17:52 -06:00
Cody Engel 2508e8349b update summary docs
Signed-off-by: Cody Engel <cengel815@gmail.com>
2025-09-23 08:22:00 -06:00
Cody Engel bd9a44ce7d remove explicit ‘-‘ support in series name 2025-09-20 18:00:44 -06:00
Cody Engel da31d0c6a6 support series that are numeric only
updates SeriesResolver to handle series names that only contain numbers such as 1923.
2025-09-20 14:04:00 -06:00
Shadowghost 594f9e4f6b Add ec3 to audio file extensions 2025-09-14 23:23:04 +02:00
Varoon Pazhyanur cbb569a277 Make private Emby.Naming.Video.StackResolver.StackMetadata sealed to silence compiler warning 2025-09-08 21:21:43 -04:00
Joshua M. Boniface 1262ac31dc Merge pull request #14410 from dyphire/language
Further refinement of BCP 47 language labeling support
2025-08-03 17:29:40 -04:00
dyphire 2007815fa6 Further refinement of BCP 47 language labeling support 2025-07-30 22:15:37 +08:00
Sven Cazier 7785b51f57 Enhance extra rules for video and audio file naming; update tests for new naming conventions 2025-07-26 23:24:58 +02:00
theguymadmax 8368d10d1b Add act as a stacking option for music albums 2025-06-17 12:16:32 -04:00
harry-hart 930a4d0f60 Update NamingOptions.cs to include "part" (#14022) 2025-05-02 07:54:34 -06:00
Michael McElroy f02190c394 Fix for Issue #12142: Fix ExtraRuleResolver filtering out top level folders (#12170)
* Fix ExtraRuleResolver to stop filtering out libraries where the name of the base folder matches an 'videos extras' rule with an ExtraRuleType of DirectoryName

Currently the ExtraRuleResolver code doesn't know anything about the root folder of the current library. As a result, when we're attempting to add items in a library where the root folder has a name with a match in Emby.Naming.Common.NamingOptions.VideoExtraRules, the entire library is being ignored as a Video Extras folder.

Need to pass in the root folder of the current library to compare to the path of the current item being evaluated, and if we match the current item's folder to the root folder, then we ignore the ExtraRules with a type of DirectoryName and we continue to scan deeper in the library. Filters still apply to subfolders within the library itself.

* Update CONTRIBUTORS.md

* Update Emby.Naming/Video/ExtraRuleResolver.cs

* Update ExtraTests.cs

Add tests for this fix.

Also add missing tests in TestKodiExtras, TestExpandedExtras, and TestSample, and expanded TestDirectories into TestDirectoriesAudioExtras and TestDirectoriesVideoExtras. There were no checks for the theme-music folder name previously.

* Update ExtraTests.cs

Removed unnecessary "using System"

* In MediaBrowser.Model, upgrade System.Text.Json from 8.0.3 (vulnerable - high risk) to 8.0.4

* Update ExtraTests.cs

Remove empty lines in usings

* Revert "In MediaBrowser.Model, upgrade System.Text.Json from 8.0.3 (vulnerable - high risk) to 8.0.4"
2025-03-27 18:18:19 -06:00