mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05: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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user