531 Commits

Author SHA1 Message Date
Dominik Krivohlavek
93dd5551df
Add support for reading and storing Recording MBIDs from file metadata (#12173)
* Add recording metadata provider

* Add recording MBID

* Save recording MBID during probing

* Set recording ID in probe result normalizer

* Add recording external media type

* Reimplement after changes in upstream

* Rename variable

* Rename variable

* Revert "Set recording ID in probe result normalizer"

This reverts commit 9dd18c8aba3f970a5816a13a33acf3d58b0e440f.

* Fix setting provider ID

* Simplify code

* Fix comment

* Add missing using
2025-02-28 23:00:52 -07:00
Cody Robibero
712908d53c
Revert nullability of MediaStream.IsHearingImpaired (#13573) 2025-02-17 19:20:18 -07:00
choyakawa
fb69b976bf
Fix the issue where the external audio track always defaults. (#13132) 2025-02-13 20:24:39 -07:00
gnattu
f4a2679177 Backport pull request #13490 from jellyfin/release-10.10.z
Correctly handle audio number tag fallbacks

Original-merge: 117d2082aa4f46f470c361c39f4a2189014260ee

Merged-by: joshuaboniface <joshua@boniface.me>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-02-09 08:39:56 -05:00
gnattu
4c17498369 Backport pull request #13182 from jellyfin/release-10.10.z
Don't fall back to ffprobe results for multi-value audio tags

Original-merge: f97f38585b69c7d810b5708a3c9d822a3ac545b6

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-02-03 16:55:56 -05:00
Bond-009
bcdffa74a8
Remove useless checks and dead code (#13405)
* Remove useless checks and dead code

* Enable adaptive bitrate streaming again

* Disable adaptive bitrate streaming by default
2025-01-28 11:29:22 +01:00
Josh Soref
40da2ccac5
Fix spelling (#13444)
* spelling: anamorphic

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: associated

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: channelinfo

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: eagerly

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: enumerable

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: greater than/less than

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: greater

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: lineup

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: logs out

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: names

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: paging

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: playlist

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: sanitized

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: saving

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

---------

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-01-28 11:27:34 +01:00
Bond_009
47f798827b Remove useless checks and dead code 2025-01-22 17:31:52 +01:00
JPVenson
56a4aa180b Fixed codesmell 2025-01-18 16:22:05 +00:00
JPVenson
2f306358c0 applied review comments 2025-01-18 16:17:26 +00:00
JPVenson
a0c568bc6c Applied review comments 2024-12-15 14:46:40 +00:00
JPVenson
fe1aab034e
Merge branch 'jellyfin:master' into feature/EFUserData 2024-12-06 17:59:27 +01:00
Ethan Pippin
06923cbf2b
Implement TaskTriggerInfoType enum (#12783) 2024-12-01 17:08:37 -07:00
JPVenson
0dd6dacc4f Merge remote-tracking branch 'origin/master' into feature/EFUserData 2024-11-19 20:53:38 +00:00
gnattu
7f296d06e6 Backport pull request #13003 from jellyfin/release-10.10.z
Only set first MusicBrainz ID for audio tags

Original-merge: e2434d38c54b90070bc4eaffa7e3c5cdd9934602

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

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-11-19 15:43:28 -05:00
JPVenson
d073e2c664 Fixed invalid columns on MediaStreams 2024-11-12 23:53:05 +00:00
JPVenson
b09a41ad1f WIP porting new Repository structure 2024-10-09 10:36:08 +00:00
JPVenson
be48cdd9e9 Naming refactoring and WIP porting of new interface repositories 2024-10-09 09:53:39 +00:00
gnattu
7cc3f9506e
Disable ATL's internal ID3v2.2/3 splitting (#12751) 2024-09-30 07:15:52 -06:00
gnattu
992d56e565
Workaround ATL tag parsing (#12705) 2024-09-28 08:52:05 -06:00
gnattu
0ffddacf11 Move GetCustomTagDelimiters to Extension 2024-09-24 12:36:05 +08:00
gnattu
00ca4abbe1 Sanitize CustomTagDelimiters server side
The API requires an array type and does not support runtime generated default value. Use server side helper function to sanitize it into char.
2024-09-24 05:15:46 +08:00
Shadowghost
2351eeba56 Rework PR 6203 2024-09-17 20:35:23 +02:00
gnattu
c6de7225b9
Add non-standard multi-value audio tag support (#12385) 2024-09-07 21:10:59 -06:00
gnattu
79c4469ac7 Remove redundant NaN check
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-29 06:23:16 +08:00
gnattu
5c5b326b1a Remove test var
Co-authored-by: Cody Robibero <cody@robibe.ro>
2024-07-29 06:23:16 +08:00
gnattu
56a98a3bb0 Make internal value separator a constant
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-29 06:23:16 +08:00
gnattu
1d658a5a4d Remove redundant check
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-29 06:23:13 +08:00
gnattu
939e02ccee Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2024-07-29 06:21:51 +08:00
gnattu
ac9322370b Check if the metadata is supported for title fallback
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-29 06:21:51 +08:00
gnattu
172feab084 Migrate to z440.atl instead of TagLib-Sharp
The ATL lib provides a lot of advantages to the TagLib we are currently using.

Notably:

- auto-detect the format of the audio data, even if the file extension has the wrong label, and provides unified API for different file types.

- supports more audio formats than TagLib

- supports lyrics natively

- supports playlists and cuesheets

- srovides relatively simple and controllable way for non-standard fields, enable us to implement compatibility features instead of waiting for lib updates

- is actually maintained

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-29 06:21:47 +08:00
Bond_009
ecd2dab0a2 Add TrySetProviderId extension 2024-07-17 15:48:21 +02:00
Bond_009
2e338f74ec Fix (another) ArgumentNullException while scanning music
```
[2024-07-17 14:31:18.202 +02:00] [ERR] [19] MediaBrowser.Providers.Music.AudioMetadataService: Error in "Probe Provider"
System.ArgumentNullException: Value cannot be null. (Parameter 'value')
   at System.ArgumentNullException.Throw(String paramName)
   at System.ArgumentNullException.ThrowIfNull(Object argument, String paramName)
   at System.ArgumentException.ThrowNullOrEmptyException(String argument, String paramName)
   at MediaBrowser.Model.Entities.ProviderIdsExtensions.SetProviderId(IHasProviderIds instance, String name, String value) in /home/loma/dev/jellyfin/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs:line 121
   at MediaBrowser.Model.Entities.ProviderIdsExtensions.SetProviderId(IHasProviderIds instance, MetadataProvider provider, String value) in /home/loma/dev/jellyfin/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs:line 151
   at MediaBrowser.Providers.MediaInfo.AudioFileProber.FetchDataFromTags(Audio audio, MediaInfo mediaInfo, MetadataRefreshOptions options, Boolean tryExtractEmbeddedLyrics) in /home/loma/dev/jellyfin/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs:line 330
   at MediaBrowser.Providers.MediaInfo.AudioFileProber.FetchAsync(Audio audio, MediaInfo mediaInfo, MetadataRefreshOptions options, CancellationToken cancellationToken) in /home/loma/dev/jellyfin/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs:line 139
   at MediaBrowser.Providers.MediaInfo.AudioFileProber.Probe[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken) in /home/loma/dev/jellyfin/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs:line 105
   at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken) in /home/loma/dev/jellyfin/MediaBrowser.Providers/Manager/MetadataService.cs:line 800
```
2024-07-17 14:36:47 +02:00
Bond_009
60c45d6273 Use complete paths in BD info
This way we don't need to find the complete path later
2024-07-01 00:21:06 +02:00
Bond-009
e063fcb036 Backport pull request #12166 from jellyfin/release-10.9.z
Fix HDR detection for 4K Blu-Ray BDMVs

Original-merge: 30fc089dd54a248a78b47dcb3dffcd5ece9130e7

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-06-24 20:29:06 -04:00
gnattu
ea7e834ae1 Backport pull request #12126 from jellyfin/release-10.9.z
Try to add extracted lyrics during scanning

Original-merge: 25f02658f08c484338d4288e048a6e71dfb39d96

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-06-24 20:29:05 -04:00
gnattu
2599babe31 Backport pull request #11859 from jellyfin/release-10.9.z
Use music metadata from ffprobe when TagLib fails

Original-merge: b8a0cf6a9e627c3137700b71d3e52e6e11f8d96b

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

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-06-01 18:41:07 -04:00
Shadowghost
2af1ae5d8a Backport pull request #11792 from jellyfin/release-10.9.z
Improve reliability of HasChanged check

Original-merge: b2d54b82fac0954a201c092ea4d5efd7219fbbf2

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

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-05-25 11:46:21 -04:00
nfmccrina
4385430f05 Backport pull request #11621 from jellyfin/release-10.9.z
Handle exception for unexpected audio file YEAR tag values

Original-merge: d5dc4435d9d0e2a1bbbb64a9133134afa9655da6

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

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-05-17 13:51:37 -04:00
gnattu
cf483203f5
Fix external LRC files being incorrectly overwritten during the initial scan (#11480) 2024-05-05 08:22:48 -06:00
Bond_009
88a38a61b5 Improve audio normalization
* Move calculation of LUFS to a scheduled task as it's pretty slow
* Correctly calculate album LUFS
* Don't try to convert replaygain tags to LUFS values
2024-04-28 15:18:53 +02:00
Bond-009
428283f787
Always scan ReplayGain tag (#11418) 2024-04-24 08:09:01 -06:00
Bond-009
3936fc9f25
Don't run ffprobe a second time for music file (#11419) 2024-04-23 07:08:49 -06:00
Cody Robibero
d402005d32 fix: fallback to artist if album artist not provided 2024-04-14 14:29:55 -06:00
Dominik Krivohlavek
ab731d9212
Fix track MBID in audio metadata (#11301) 2024-04-12 17:44:30 -06:00
Bond-009
b6d130ae2d
Merge pull request #11155 from sel10ut/bugfix/fix-releasedate-tag
Fix parsing of audio PremiereDate property
2024-03-16 16:43:59 +01:00
sel10ut
368a1b385a
fix: fallback to TagLib date parsing if ffprobe fails
Bring back hardcoded PremiereDate with correctly parsed year from TagLib, if ffprobe cannot get it
2024-03-15 01:37:11 +03:00
sel10ut
e9caa65eba
fix: change parsing of audio title tag 2024-03-14 13:25:04 +03:00
sel10ut
1236bb298c
fix: correct parsing of audio release date property
Read full date from ffmpeg probe.
2024-03-14 12:54:53 +03:00
Bond-009
35df0486f5
Merge pull request #11081 from crobibero/embedded-lyrics
Save embedded lyrics when probing audio
2024-03-03 07:52:23 -05:00