mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-15 18:08:53 -07:00
#2407: Prefer MP4-Metadata for episodes
This commit is contained in:
parent
3bc0ce070d
commit
d7f199bb1c
@ -29,11 +29,13 @@ using MediaBrowser.Controller.Entities.TV;
|
|||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.LiveTv;
|
using MediaBrowser.Controller.LiveTv;
|
||||||
|
using MediaBrowser.Controller.MediaEncoding;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Controller.Resolvers;
|
using MediaBrowser.Controller.Resolvers;
|
||||||
using MediaBrowser.Controller.Sorting;
|
using MediaBrowser.Controller.Sorting;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
|
using MediaBrowser.Model.Dlna;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
@ -2387,6 +2389,7 @@ namespace Emby.Server.Implementations.Library
|
|||||||
|
|
||||||
public bool FillMissingEpisodeNumbersFromPath(Episode episode, bool forceRefresh)
|
public bool FillMissingEpisodeNumbersFromPath(Episode episode, bool forceRefresh)
|
||||||
{
|
{
|
||||||
|
var libraryOptions = GetLibraryOptions(episode);
|
||||||
var series = episode.Series;
|
var series = episode.Series;
|
||||||
bool? isAbsoluteNaming = series == null ? false : string.Equals(series.DisplayOrder, "absolute", StringComparison.OrdinalIgnoreCase);
|
bool? isAbsoluteNaming = series == null ? false : string.Equals(series.DisplayOrder, "absolute", StringComparison.OrdinalIgnoreCase);
|
||||||
if (!isAbsoluteNaming.Value)
|
if (!isAbsoluteNaming.Value)
|
||||||
@ -2408,6 +2411,28 @@ namespace Emby.Server.Implementations.Library
|
|||||||
episodeInfo = new Naming.TV.EpisodeInfo();
|
episodeInfo = new Naming.TV.EpisodeInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (libraryOptions.EnableEmbeddedEpisodeInfos && episodeInfo.Container.ToLowerInvariant() == "mp4") {
|
||||||
|
// Read from metadata
|
||||||
|
IMediaEncoder mediaEncoder = _appHost.Resolve<IMediaEncoder>();
|
||||||
|
var task = mediaEncoder.GetMediaInfo(new MediaInfoRequest
|
||||||
|
{
|
||||||
|
MediaSource = episode.GetMediaSources(false).First(),
|
||||||
|
MediaType = DlnaProfileType.Video,
|
||||||
|
ExtractChapters = false
|
||||||
|
|
||||||
|
}, CancellationToken.None);
|
||||||
|
task.Wait();
|
||||||
|
if (task.Result.ParentIndexNumber > 0) {
|
||||||
|
episodeInfo.SeasonNumber = task.Result.ParentIndexNumber;
|
||||||
|
}
|
||||||
|
if (task.Result.IndexNumber > 0) {
|
||||||
|
episodeInfo.EpisodeNumber = task.Result.IndexNumber;
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(task.Result.ShowName)) {
|
||||||
|
episodeInfo.SeriesName = task.Result.ShowName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var changed = false;
|
var changed = false;
|
||||||
|
|
||||||
if (episodeInfo.IsByDate)
|
if (episodeInfo.IsByDate)
|
||||||
|
@ -112,6 +112,9 @@ namespace MediaBrowser.MediaEncoding.Probing
|
|||||||
info.Name = title;
|
info.Name = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info.IndexNumber = FFProbeHelpers.GetDictionaryNumericValue(tags, "episode_sort");
|
||||||
|
info.ParentIndexNumber = FFProbeHelpers.GetDictionaryNumericValue(tags, "season_number");
|
||||||
|
info.ShowName = FFProbeHelpers.GetDictionaryValue(tags, "show_name");
|
||||||
info.ProductionYear = FFProbeHelpers.GetDictionaryNumericValue(tags, "date");
|
info.ProductionYear = FFProbeHelpers.GetDictionaryNumericValue(tags, "date");
|
||||||
|
|
||||||
// Several different forms of retaildate
|
// Several different forms of retaildate
|
||||||
|
@ -21,6 +21,7 @@ namespace MediaBrowser.Model.Configuration
|
|||||||
public bool ImportMissingEpisodes { get; set; }
|
public bool ImportMissingEpisodes { get; set; }
|
||||||
public bool EnableAutomaticSeriesGrouping { get; set; }
|
public bool EnableAutomaticSeriesGrouping { get; set; }
|
||||||
public bool EnableEmbeddedTitles { get; set; }
|
public bool EnableEmbeddedTitles { get; set; }
|
||||||
|
public bool EnableEmbeddedEpisodeInfos { get; set; }
|
||||||
|
|
||||||
public int AutomaticRefreshIntervalDays { get; set; }
|
public int AutomaticRefreshIntervalDays { get; set; }
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ namespace MediaBrowser.Model.MediaInfo
|
|||||||
/// <value>The studios.</value>
|
/// <value>The studios.</value>
|
||||||
public string[] Studios { get; set; }
|
public string[] Studios { get; set; }
|
||||||
public string[] Genres { get; set; }
|
public string[] Genres { get; set; }
|
||||||
|
public string ShowName { get; set; }
|
||||||
public int? IndexNumber { get; set; }
|
public int? IndexNumber { get; set; }
|
||||||
public int? ParentIndexNumber { get; set; }
|
public int? ParentIndexNumber { get; set; }
|
||||||
public int? ProductionYear { get; set; }
|
public int? ProductionYear { get; set; }
|
||||||
|
Loading…
Reference in New Issue
Block a user