Merge pull request #2482 from MediaBrowser/dev

Dev
pull/1154/head
Luke 8 years ago committed by GitHub
commit e298968fe5

@ -65,6 +65,11 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
} }
} }
private bool CopySubtitles
{
get { return string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase); }
}
public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile) public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
{ {
return Path.ChangeExtension(targetFile, "." + OutputFormat); return Path.ChangeExtension(targetFile, "." + OutputFormat);
@ -154,8 +159,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var durationParam = " -t " + _mediaEncoder.GetTimeParameter(duration.Ticks); var durationParam = " -t " + _mediaEncoder.GetTimeParameter(duration.Ticks);
var inputModifiers = "-fflags +genpts -async 1 -vsync -1"; var inputModifiers = "-fflags +genpts -async 1 -vsync -1";
var mapArgs = string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase) ? "-map 0" : "-sn"; var mapArgs = "-map 0 -ignore_unknown";
var commandLineArgs = "-i \"{0}\"{4} " + mapArgs + " {2} -map_metadata -1 -threads 0 {3} -y \"{1}\""; var commandLineArgs = "-i \"{0}\"{5} " + mapArgs + " {2} -map_metadata -1 -threads 0 {3}{4} -y \"{1}\"";
long startTimeTicks = 0; long startTimeTicks = 0;
//if (mediaSource.DateLiveStreamOpened.HasValue) //if (mediaSource.DateLiveStreamOpened.HasValue)
@ -183,7 +188,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
(analyzeDurationSeconds * 1000000).ToString(CultureInfo.InvariantCulture); (analyzeDurationSeconds * 1000000).ToString(CultureInfo.InvariantCulture);
inputModifiers += analyzeDuration; inputModifiers += analyzeDuration;
commandLineArgs = string.Format(commandLineArgs, inputTempFile, targetFile, videoArgs, GetAudioArgs(mediaSource), durationParam); var subtitleArgs = CopySubtitles ? " -codec:s copy" : " -sn";
commandLineArgs = string.Format(commandLineArgs, inputTempFile, targetFile, videoArgs, GetAudioArgs(mediaSource), subtitleArgs, durationParam);
return inputModifiers + " " + commandLineArgs; return inputModifiers + " " + commandLineArgs;
} }
@ -196,7 +203,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
// do not copy aac because many players have difficulty with aac_latm // do not copy aac because many players have difficulty with aac_latm
if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings && !string.Equals(inputAudioCodec, "aac", StringComparison.OrdinalIgnoreCase)) if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings && !string.Equals(inputAudioCodec, "aac", StringComparison.OrdinalIgnoreCase))
{ {
return "-codec:a:0 copy"; return "-codec:a copy";
} }
var audioChannels = 2; var audioChannels = 2;
@ -205,7 +212,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{ {
audioChannels = audioStream.Channels ?? audioChannels; audioChannels = audioStream.Channels ?? audioChannels;
} }
return "-codec:a:0 aac -strict experimental -ab 320000"; return "-codec:a aac -strict experimental -ab 320000";
} }
private bool EncodeVideo(MediaSourceInfo mediaSource) private bool EncodeVideo(MediaSourceInfo mediaSource)

@ -348,7 +348,7 @@ namespace MediaBrowser.Providers.MediaInfo
{ {
var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh; var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
if (!video.LockedFields.Contains(MetadataFields.OfficialRating)) if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.OfficialRating))
{ {
if (!string.IsNullOrWhiteSpace(data.OfficialRating) || isFullRefresh) if (!string.IsNullOrWhiteSpace(data.OfficialRating) || isFullRefresh)
{ {
@ -361,7 +361,7 @@ namespace MediaBrowser.Providers.MediaInfo
video.OfficialRatingDescription = data.OfficialRatingDescription; video.OfficialRatingDescription = data.OfficialRatingDescription;
} }
if (!video.LockedFields.Contains(MetadataFields.Genres)) if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Genres))
{ {
if (video.Genres.Count == 0 || isFullRefresh) if (video.Genres.Count == 0 || isFullRefresh)
{ {
@ -374,7 +374,7 @@ namespace MediaBrowser.Providers.MediaInfo
} }
} }
if (!video.LockedFields.Contains(MetadataFields.Studios)) if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Studios))
{ {
if (video.Studios.Count == 0 || isFullRefresh) if (video.Studios.Count == 0 || isFullRefresh)
{ {
@ -415,14 +415,18 @@ namespace MediaBrowser.Providers.MediaInfo
video.ParentIndexNumber = data.ParentIndexNumber; video.ParentIndexNumber = data.ParentIndexNumber;
} }
} }
if (!string.IsNullOrWhiteSpace(data.Name))
if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Name))
{ {
if (string.IsNullOrWhiteSpace(video.Name) || (string.Equals(video.Name, Path.GetFileNameWithoutExtension(video.Path), StringComparison.OrdinalIgnoreCase) && !video.ProviderIds.Any())) if (!string.IsNullOrWhiteSpace(data.Name))
{ {
// Don't use the embedded name for extras because it will often be the same name as the movie if (string.IsNullOrWhiteSpace(video.Name) || (string.Equals(video.Name, Path.GetFileNameWithoutExtension(video.Path), StringComparison.OrdinalIgnoreCase) && !video.ProviderIds.Any()))
if (!video.ExtraType.HasValue && !video.IsOwnedItem)
{ {
video.Name = data.Name; // Don't use the embedded name for extras because it will often be the same name as the movie
if (!video.ExtraType.HasValue && !video.IsOwnedItem)
{
video.Name = data.Name;
}
} }
} }
} }
@ -433,7 +437,7 @@ namespace MediaBrowser.Providers.MediaInfo
video.ProductionYear = video.PremiereDate.Value.ToLocalTime().Year; video.ProductionYear = video.PremiereDate.Value.ToLocalTime().Year;
} }
if (!video.LockedFields.Contains(MetadataFields.Overview)) if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Overview))
{ {
if (string.IsNullOrWhiteSpace(video.Overview) || isFullRefresh) if (string.IsNullOrWhiteSpace(video.Overview) || isFullRefresh)
{ {
@ -446,7 +450,7 @@ namespace MediaBrowser.Providers.MediaInfo
{ {
var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh; var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
if (!video.LockedFields.Contains(MetadataFields.Cast)) if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Cast))
{ {
if (isFullRefresh || _libraryManager.GetPeople(video).Count == 0) if (isFullRefresh || _libraryManager.GetPeople(video).Count == 0)
{ {

@ -45,7 +45,6 @@ namespace MediaBrowser.Providers.Music
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(AlbumInfo searchInfo, CancellationToken cancellationToken) public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(AlbumInfo searchInfo, CancellationToken cancellationToken)
{ {
var releaseId = searchInfo.GetReleaseId(); var releaseId = searchInfo.GetReleaseId();
var releaseGroupId = searchInfo.GetReleaseGroupId();
string url = null; string url = null;
var isNameSearch = false; var isNameSearch = false;
@ -54,10 +53,6 @@ namespace MediaBrowser.Providers.Music
{ {
url = string.Format("/ws/2/release/?query=reid:{0}", releaseId); url = string.Format("/ws/2/release/?query=reid:{0}", releaseId);
} }
else if (!string.IsNullOrEmpty(releaseGroupId))
{
url = string.Format("/ws/2/release?release-group={0}", releaseGroupId);
}
else else
{ {
var artistMusicBrainzId = searchInfo.GetMusicBrainzArtistId(); var artistMusicBrainzId = searchInfo.GetMusicBrainzArtistId();
@ -136,14 +131,7 @@ namespace MediaBrowser.Providers.Music
Item = new MusicAlbum() Item = new MusicAlbum()
}; };
// If we have a release group Id but not a release Id... if (string.IsNullOrEmpty(releaseId))
if (string.IsNullOrWhiteSpace(releaseId) && !string.IsNullOrWhiteSpace(releaseGroupId))
{
releaseId = await GetReleaseIdFromReleaseGroupId(releaseGroupId, cancellationToken).ConfigureAwait(false);
result.HasMetadata = true;
}
if (string.IsNullOrWhiteSpace(releaseId))
{ {
var artistMusicBrainzId = id.GetMusicBrainzArtistId(); var artistMusicBrainzId = id.GetMusicBrainzArtistId();
@ -151,13 +139,13 @@ namespace MediaBrowser.Providers.Music
if (releaseResult != null) if (releaseResult != null)
{ {
if (!string.IsNullOrWhiteSpace(releaseResult.ReleaseId)) if (!string.IsNullOrEmpty(releaseResult.ReleaseId))
{ {
releaseId = releaseResult.ReleaseId; releaseId = releaseResult.ReleaseId;
result.HasMetadata = true; result.HasMetadata = true;
} }
if (!string.IsNullOrWhiteSpace(releaseResult.ReleaseGroupId)) if (!string.IsNullOrEmpty(releaseResult.ReleaseGroupId))
{ {
releaseGroupId = releaseResult.ReleaseGroupId; releaseGroupId = releaseResult.ReleaseGroupId;
result.HasMetadata = true; result.HasMetadata = true;
@ -169,13 +157,13 @@ namespace MediaBrowser.Providers.Music
} }
// If we have a release Id but not a release group Id... // If we have a release Id but not a release group Id...
if (!string.IsNullOrWhiteSpace(releaseId) && string.IsNullOrWhiteSpace(releaseGroupId)) if (!string.IsNullOrEmpty(releaseId) && string.IsNullOrEmpty(releaseGroupId))
{ {
releaseGroupId = await GetReleaseGroupFromReleaseId(releaseId, cancellationToken).ConfigureAwait(false); releaseGroupId = await GetReleaseGroupId(releaseId, cancellationToken).ConfigureAwait(false);
result.HasMetadata = true; result.HasMetadata = true;
} }
if (!string.IsNullOrWhiteSpace(releaseId) || !string.IsNullOrWhiteSpace(releaseGroupId)) if (!string.IsNullOrEmpty(releaseId) || !string.IsNullOrEmpty(releaseGroupId))
{ {
result.HasMetadata = true; result.HasMetadata = true;
} }
@ -423,42 +411,13 @@ namespace MediaBrowser.Providers.Music
} }
} }
private async Task<string> GetReleaseIdFromReleaseGroupId(string releaseGroupId, CancellationToken cancellationToken)
{
var url = string.Format("/ws/2/release?release-group={0}", releaseGroupId);
using (var stream = await GetMusicBrainzResponse(url, true, cancellationToken).ConfigureAwait(false))
{
using (var oReader = new StreamReader(stream, Encoding.UTF8))
{
var settings = _xmlSettings.Create(false);
settings.CheckCharacters = false;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreComments = true;
using (var reader = XmlReader.Create(oReader, settings))
{
var result = ReleaseResult.Parse(reader).FirstOrDefault();
if (result != null)
{
return result.ReleaseId;
}
}
}
}
return null;
}
/// <summary> /// <summary>
/// Gets the release group id internal. /// Gets the release group id internal.
/// </summary> /// </summary>
/// <param name="releaseEntryId">The release entry id.</param> /// <param name="releaseEntryId">The release entry id.</param>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{System.String}.</returns> /// <returns>Task{System.String}.</returns>
private async Task<string> GetReleaseGroupFromReleaseId(string releaseEntryId, CancellationToken cancellationToken) private async Task<string> GetReleaseGroupId(string releaseEntryId, CancellationToken cancellationToken)
{ {
var url = string.Format("/ws/2/release-group/?query=reid:{0}", releaseEntryId); var url = string.Format("/ws/2/release-group/?query=reid:{0}", releaseEntryId);
@ -662,4 +621,4 @@ namespace MediaBrowser.Providers.Music
public int throttleMs { get; set; } public int throttleMs { get; set; }
} }
} }
} }

@ -1,3 +1,3 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.2.1.113")] [assembly: AssemblyVersion("3.2.1.114")]

Loading…
Cancel
Save