gnattu
644df3585b
Use WriteThrough for ImageSaver
...
When writing an image to the disk, we use the completion of the async task as a signal indicating the completion of a write operation. However, this approach may not be entirely accurate, as the operating system can optimize IO operations by writing data to an intermediate cache instead of directly to the disk before completing the operation. This optimization can lead to a data race for our scanner, as subsequent tasks such as blurhash computation may attempt to read a file that has not yet been flushed from the volatile cache. Consequently, the data within the file becomes invalid, causing the blurhash computation task to fail.
Use WriteThrough mode to ensure the data is actual on disk before return to resolve this issue.
2025-01-24 07:54:22 +08:00
Tim Eisele
4e28f4fe03
Fix missing episode removal ( #13218 )
2024-12-31 09:09:42 -07:00
gnattu
d49bb1d86d
Don't fall back to ffprobe results for multi-value audio tags
2024-12-08 10:56:05 +08:00
gnattu
e7ac3e3929
Fix missing ConfigureAwait ( #13139 )
...
Regression from #12940
2024-12-01 10:57:37 -07:00
gnattu
e2434d38c5
Only set first MusicBrainz ID for audio tags ( #13003 )
2024-11-14 17:01:48 -07:00
gnattu
5769d5ca91
Catch all exceptions for file removal
2024-11-03 23:25:11 +08:00
gnattu
03271c43a7
Throw the exception as is
2024-11-03 16:10:17 +08:00
gnattu
bb30d26ffb
Use ExceptionDispatchInfo
2024-11-03 04:28:48 +08:00
gnattu
e9ee0ef1f5
Remove temp file even when saving failed
2024-11-03 04:11:41 +08:00
gnattu
469bf9d514
Move the remove source implementation into ProviderManager
2024-11-03 02:51:11 +08:00
gnattu
74d2c2addf
Remove DynamicImageResponse local image after saved to metadata folder
...
Previously, local images provided by DynamicImageResponse were never cleaned up until the server was restarted. This issue has become more severe in 10.10, as the default is now set to use the system's native temp folder, which might be a RAM backed tmpfs. This behavior could lead to resource starvation for long-running servers performing multiple library scans.
Metadata plugins prefer the old behavior should do its own backup.
2024-11-02 17:15:00 +08:00
Mikal S.
f99e0407fd
Don't try to prune images for virtual episodes. ( #12909 )
2024-10-31 09:40:03 -06:00
Benedikt
c6629aebf8
Fix TMDB import failing when no IMDB ID is set for a movie ( #12891 )
2024-10-28 07:29:15 -06: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
Tim Eisele
d10406fd75
Pre-fill ParentIndexNumber to preserve it between scans ( #12739 )
2024-09-28 08:51:48 -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
Cody Robibero
3c639c2e80
Tweak Trickplay migration for speed ( #12643 )
2024-09-23 09:09:23 -06:00
Tim Eisele
9ff7575c85
Fix metadata merge for BoxSets ( #12583 )
2024-09-20 07:46:44 -06:00
Shadowghost
2351eeba56
Rework PR 6203
2024-09-17 20:35:23 +02:00
gnattu
90a00e1293
Only remove images in metadata folder by default ( #12631 )
2024-09-12 13:45:38 -06:00
gnattu
c6de7225b9
Add non-standard multi-value audio tag support ( #12385 )
2024-09-07 21:10:59 -06:00
JPVenson
5ceedced1c
Feature/media segments plugin api ( #12359 )
2024-09-07 14:56:51 -06:00
Tim Eisele
c56dbc1c44
Enhance Trickplay ( #11883 )
2024-09-07 11:23:48 -06:00
Niels van Velzen
9afaa6ae4d
Merge pull request #12548 from Bond-009/utf8bom
...
Remove BOM from UTF-8 files
2024-09-06 21:56:31 +02:00
Bond_009
97a02f5803
Remove BOM from UTF-8 files
...
I think some people need to change their IDE configuration ;)
2024-08-30 15:29:48 +02:00
Shadowghost
4185558f5e
Upgrade LRCParser to 2024.0728.2
2024-08-30 09:03:57 +02:00
scampower3
1ca2c4b4e1
Backport pull request #12425 from jellyfin/release-10.9.z
...
Don't force non-virtual when all episodes in season are isMissing=true
Original-merge: be949af59e
Merged-by: Bond-009 <bond.009@outlook.com>
Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-08-25 02:46:34 -04:00
gnattu
7da787609b
Fix SA1508 in LyricScheduledTask
...
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-24 06:59:48 +08:00
Bond-009
e211445034
Merge pull request #12397 from crobibero/lyrics-finale
...
Add lyrics library options, add download scheduled task
2024-08-24 00:00:38 +02:00
Bond-009
a21ecda78f
Merge pull request #12375 from tobias-varden/pr_2
...
Update the default repository URL for the StudioImages plugin
2024-08-14 16:09:26 +02:00
Cody Robibero
a4953263bd
Fix class name
2024-08-06 07:53:44 -06:00
Cody Robibero
3873c7fda0
Update MediaBrowser.Providers/Lyric/LyricScheduledTask.cs
...
Co-authored-by: Niels van Velzen <nielsvanvelzen@users.noreply.github.com>
2024-08-06 07:52:59 -06:00
Cody Robibero
eacc8c7d35
Add scheduled task to automatically search for lyrics
2024-08-05 16:00:08 -06:00
nielsvanvelzen
0675b06bea
Backport pull request #12356 from jellyfin/release-10.9.z
...
Fix creating virtual seasons (again)
Original-merge: 900acc03aa
Merged-by: crobibero <cody@robibe.ro>
Backported-by: Bond_009 <bond.009@outlook.com>
2024-08-05 10:58:23 -04:00
CS
919b8ef9e2
Use collection initializers when possible
2024-08-02 16:19:20 +02:00
CS
b34cbc2f16
Update default artwork repository url to point to githubusercontent.com domain
2024-08-02 16:12:55 +02: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
095d4d4d15
Merge pull request #12295 from Bond-009/trysetproviderid
...
Add TrySetProviderId extension
2024-07-29 00:13:40 +02:00
Cody Robibero
b026772764
Move external url listing to provider for plugin use ( #12279 )
2024-07-17 09:48:31 -04: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