mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-08 23:00:51 +02:00
fixes #903 - Display image info on web client detail page
This commit is contained in:
parent
d2494148f7
commit
7e636a977a
|
@ -34,6 +34,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
public Audio()
|
public Audio()
|
||||||
{
|
{
|
||||||
Artists = new List<string>();
|
Artists = new List<string>();
|
||||||
|
AlbumArtists = new List<string>();
|
||||||
Tags = new List<string>();
|
Tags = new List<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,12 +91,14 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
/// <value>The artist.</value>
|
/// <value>The artist.</value>
|
||||||
public List<string> Artists { get; set; }
|
public List<string> Artists { get; set; }
|
||||||
|
|
||||||
|
public List<string> AlbumArtists { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public List<string> AllArtists
|
public List<string> AllArtists
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var list = AlbumArtists;
|
var list = AlbumArtists.ToList();
|
||||||
|
|
||||||
list.AddRange(Artists);
|
list.AddRange(Artists);
|
||||||
|
|
||||||
|
@ -104,36 +107,11 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
|
||||||
public List<string> AlbumArtists
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var list = new List<string>();
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(AlbumArtist))
|
|
||||||
{
|
|
||||||
list.Add(AlbumArtist);
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
AlbumArtist = value.FirstOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the album.
|
/// Gets or sets the album.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The album.</value>
|
/// <value>The album.</value>
|
||||||
public string Album { get; set; }
|
public string Album { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the album artist.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The album artist.</value>
|
|
||||||
public string AlbumArtist { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the type of the media.
|
/// Gets the type of the media.
|
||||||
|
|
|
@ -17,8 +17,9 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
|
|
||||||
public MusicAlbum()
|
public MusicAlbum()
|
||||||
{
|
{
|
||||||
Artists = new List<string>();
|
|
||||||
SoundtrackIds = new List<Guid>();
|
SoundtrackIds = new List<Guid>();
|
||||||
|
Artists = new List<string>();
|
||||||
|
AlbumArtists = new List<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool SupportsAddingToPlaylist
|
public override bool SupportsAddingToPlaylist
|
||||||
|
@ -40,7 +41,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var list = AlbumArtists;
|
var list = AlbumArtists.ToList();
|
||||||
|
|
||||||
list.AddRange(Artists);
|
list.AddRange(Artists);
|
||||||
|
|
||||||
|
@ -49,25 +50,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
public List<string> AlbumArtists { get; set; }
|
||||||
public List<string> AlbumArtists
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var list = new List<string>();
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(AlbumArtist))
|
|
||||||
{
|
|
||||||
list.Add(AlbumArtist);
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
AlbumArtist = value.FirstOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the tracks.
|
/// Gets the tracks.
|
||||||
|
@ -139,8 +122,6 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return AllArtists.Contains(artist, StringComparer.OrdinalIgnoreCase);
|
return AllArtists.Contains(artist, StringComparer.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AlbumArtist { get; set; }
|
|
||||||
|
|
||||||
public List<string> Artists { get; set; }
|
public List<string> Artists { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -24,14 +24,12 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public int? Width { get; set; }
|
public int? Width { get; set; }
|
||||||
public int? Height { get; set; }
|
public int? Height { get; set; }
|
||||||
public string CameraManufacturer { get; set; }
|
public string CameraMake { get; set; }
|
||||||
public string CameraModel { get; set; }
|
public string CameraModel { get; set; }
|
||||||
public string Software { get; set; }
|
public string Software { get; set; }
|
||||||
public double? ExposureTime { get; set; }
|
public double? ExposureTime { get; set; }
|
||||||
public double? FocalLength { get; set; }
|
public double? FocalLength { get; set; }
|
||||||
|
|
||||||
public ImageOrientation? Orientation { get; set; }
|
public ImageOrientation? Orientation { get; set; }
|
||||||
|
|
||||||
public double? Aperture { get; set; }
|
public double? Aperture { get; set; }
|
||||||
public double? ShutterSpeed { get; set; }
|
public double? ShutterSpeed { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -341,9 +341,6 @@
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\RecommendationType.cs">
|
<Compile Include="..\MediaBrowser.Model\Dto\RecommendationType.cs">
|
||||||
<Link>Dto\RecommendationType.cs</Link>
|
<Link>Dto\RecommendationType.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\StreamOptions.cs">
|
|
||||||
<Link>Dto\StreamOptions.cs</Link>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\StudioDto.cs">
|
<Compile Include="..\MediaBrowser.Model\Dto\StudioDto.cs">
|
||||||
<Link>Dto\StudioDto.cs</Link>
|
<Link>Dto\StudioDto.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -356,9 +353,6 @@
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\UserItemDataDto.cs">
|
<Compile Include="..\MediaBrowser.Model\Dto\UserItemDataDto.cs">
|
||||||
<Link>Dto\UserItemDataDto.cs</Link>
|
<Link>Dto\UserItemDataDto.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\VideoStreamOptions.cs">
|
|
||||||
<Link>Dto\VideoStreamOptions.cs</Link>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="..\MediaBrowser.Model\Entities\BaseItemInfo.cs">
|
<Compile Include="..\MediaBrowser.Model\Entities\BaseItemInfo.cs">
|
||||||
<Link>Entities\BaseItemInfo.cs</Link>
|
<Link>Entities\BaseItemInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -304,9 +304,6 @@
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\RecommendationType.cs">
|
<Compile Include="..\MediaBrowser.Model\Dto\RecommendationType.cs">
|
||||||
<Link>Dto\RecommendationType.cs</Link>
|
<Link>Dto\RecommendationType.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\StreamOptions.cs">
|
|
||||||
<Link>Dto\StreamOptions.cs</Link>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\StudioDto.cs">
|
<Compile Include="..\MediaBrowser.Model\Dto\StudioDto.cs">
|
||||||
<Link>Dto\StudioDto.cs</Link>
|
<Link>Dto\StudioDto.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -319,9 +316,6 @@
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\UserItemDataDto.cs">
|
<Compile Include="..\MediaBrowser.Model\Dto\UserItemDataDto.cs">
|
||||||
<Link>Dto\UserItemDataDto.cs</Link>
|
<Link>Dto\UserItemDataDto.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\MediaBrowser.Model\Dto\VideoStreamOptions.cs">
|
|
||||||
<Link>Dto\VideoStreamOptions.cs</Link>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="..\MediaBrowser.Model\Entities\BaseItemInfo.cs">
|
<Compile Include="..\MediaBrowser.Model\Entities\BaseItemInfo.cs">
|
||||||
<Link>Entities\BaseItemInfo.cs</Link>
|
<Link>Entities\BaseItemInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -61,30 +61,6 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
Task<T> GetAsync<T>(string url, CancellationToken cancellationToken = default(CancellationToken))
|
Task<T> GetAsync<T>(string url, CancellationToken cancellationToken = default(CancellationToken))
|
||||||
where T : class;
|
where T : class;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the url needed to stream an audio file
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="options">The options.</param>
|
|
||||||
/// <returns>System.String.</returns>
|
|
||||||
/// <exception cref="ArgumentNullException">options</exception>
|
|
||||||
string GetAudioStreamUrl(StreamOptions options);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the url needed to stream a video file
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="options">The options.</param>
|
|
||||||
/// <returns>System.String.</returns>
|
|
||||||
/// <exception cref="ArgumentNullException">options</exception>
|
|
||||||
string GetVideoStreamUrl(VideoStreamOptions options);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Formulates a url for streaming video using the HLS protocol
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="options">The options.</param>
|
|
||||||
/// <returns>System.String.</returns>
|
|
||||||
/// <exception cref="ArgumentNullException">options</exception>
|
|
||||||
string GetHlsVideoStreamUrl(VideoStreamOptions options);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reports the capabilities.
|
/// Reports the capabilities.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Dto;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Dlna
|
namespace MediaBrowser.Model.Dlna
|
||||||
{
|
{
|
||||||
|
@ -8,6 +8,11 @@ namespace MediaBrowser.Model.Dlna
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class AudioOptions
|
public class AudioOptions
|
||||||
{
|
{
|
||||||
|
public AudioOptions()
|
||||||
|
{
|
||||||
|
Context = EncodingContext.Streaming;
|
||||||
|
}
|
||||||
|
|
||||||
public string ItemId { get; set; }
|
public string ItemId { get; set; }
|
||||||
public List<MediaSourceInfo> MediaSources { get; set; }
|
public List<MediaSourceInfo> MediaSources { get; set; }
|
||||||
public DeviceProfile Profile { get; set; }
|
public DeviceProfile Profile { get; set; }
|
||||||
|
|
|
@ -3,7 +3,6 @@ namespace MediaBrowser.Model.Drawing
|
||||||
{
|
{
|
||||||
public enum ImageOrientation
|
public enum ImageOrientation
|
||||||
{
|
{
|
||||||
None = 0,
|
|
||||||
TopLeft = 1,
|
TopLeft = 1,
|
||||||
TopRight = 2,
|
TopRight = 2,
|
||||||
BottomRight = 3,
|
BottomRight = 3,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Drawing;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Extensions;
|
using MediaBrowser.Model.Extensions;
|
||||||
using MediaBrowser.Model.Library;
|
using MediaBrowser.Model.Library;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
|
@ -721,6 +722,17 @@ namespace MediaBrowser.Model.Dto
|
||||||
/// <value><c>true</c> if [enable internet providers]; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if [enable internet providers]; otherwise, <c>false</c>.</value>
|
||||||
public bool? LockData { get; set; }
|
public bool? LockData { get; set; }
|
||||||
|
|
||||||
|
public int? Width { get; set; }
|
||||||
|
public int? Height { get; set; }
|
||||||
|
public string CameraMake { get; set; }
|
||||||
|
public string CameraModel { get; set; }
|
||||||
|
public string Software { get; set; }
|
||||||
|
public double? ExposureTime { get; set; }
|
||||||
|
public double? FocalLength { get; set; }
|
||||||
|
public ImageOrientation? ImageOrientation { get; set; }
|
||||||
|
public double? Aperture { get; set; }
|
||||||
|
public double? ShutterSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether this instance can resume.
|
/// Gets a value indicating whether this instance can resume.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
namespace MediaBrowser.Model.Dto
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Class StreamOptions
|
|
||||||
/// </summary>
|
|
||||||
public class StreamOptions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the audio bit rate.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The audio bit rate.</value>
|
|
||||||
public int? AudioBitRate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the audio codec.
|
|
||||||
/// Omit to copy the original stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The audio encoding format.</value>
|
|
||||||
public string AudioCodec { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the item id.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The item id.</value>
|
|
||||||
public string ItemId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the max audio channels.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The max audio channels.</value>
|
|
||||||
public int? MaxAudioChannels { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the max audio sample rate.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The max audio sample rate.</value>
|
|
||||||
public int? MaxAudioSampleRate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the start time ticks.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The start time ticks.</value>
|
|
||||||
public long? StartTimeTicks { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether the original media should be served statically
|
|
||||||
/// Only used with progressive streaming
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if static; otherwise, <c>false</c>.</value>
|
|
||||||
public bool? Static { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the output file extension.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The output file extension.</value>
|
|
||||||
public string OutputFileExtension { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the device id.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The device id.</value>
|
|
||||||
public string DeviceId { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,99 +0,0 @@
|
||||||
namespace MediaBrowser.Model.Dto
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Class VideoStreamOptions
|
|
||||||
/// </summary>
|
|
||||||
public class VideoStreamOptions : StreamOptions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the video codec.
|
|
||||||
/// Omit to copy
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The video codec.</value>
|
|
||||||
public string VideoCodec { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the video bit rate.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The video bit rate.</value>
|
|
||||||
public int? VideoBitRate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the width.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The width.</value>
|
|
||||||
public int? Width { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the height.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The height.</value>
|
|
||||||
public int? Height { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the width of the max.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The width of the max.</value>
|
|
||||||
public int? MaxWidth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the height of the max.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The height of the max.</value>
|
|
||||||
public int? MaxHeight { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the frame rate.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The frame rate.</value>
|
|
||||||
public double? FrameRate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the index of the audio stream.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The index of the audio stream.</value>
|
|
||||||
public int? AudioStreamIndex { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the index of the video stream.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The index of the video stream.</value>
|
|
||||||
public int? VideoStreamIndex { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the index of the subtitle stream.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The index of the subtitle stream.</value>
|
|
||||||
public int? SubtitleStreamIndex { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the profile.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The profile.</value>
|
|
||||||
public string Profile { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the level.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The level.</value>
|
|
||||||
public string Level { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the baseline stream audio bit rate.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The baseline stream audio bit rate.</value>
|
|
||||||
public int? BaselineStreamAudioBitRate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [append baseline stream].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [append baseline stream]; otherwise, <c>false</c>.</value>
|
|
||||||
public bool AppendBaselineStream { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the time stamp offset ms. Only used with HLS.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The time stamp offset ms.</value>
|
|
||||||
public int? TimeStampOffsetMs { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -152,7 +152,6 @@
|
||||||
<Compile Include="Dto\MediaSourceInfo.cs" />
|
<Compile Include="Dto\MediaSourceInfo.cs" />
|
||||||
<Compile Include="Dto\RecommendationType.cs" />
|
<Compile Include="Dto\RecommendationType.cs" />
|
||||||
<Compile Include="Dto\SubtitleDownloadOptions.cs" />
|
<Compile Include="Dto\SubtitleDownloadOptions.cs" />
|
||||||
<Compile Include="Dto\VideoStreamOptions.cs" />
|
|
||||||
<Compile Include="Entities\IsoType.cs" />
|
<Compile Include="Entities\IsoType.cs" />
|
||||||
<Compile Include="Entities\MediaInfo.cs" />
|
<Compile Include="Entities\MediaInfo.cs" />
|
||||||
<Compile Include="Entities\MediaStreamType.cs" />
|
<Compile Include="Entities\MediaStreamType.cs" />
|
||||||
|
@ -285,7 +284,6 @@
|
||||||
<Compile Include="Querying\ItemQuery.cs" />
|
<Compile Include="Querying\ItemQuery.cs" />
|
||||||
<Compile Include="Entities\LibraryUpdateInfo.cs" />
|
<Compile Include="Entities\LibraryUpdateInfo.cs" />
|
||||||
<Compile Include="Entities\ParentalRating.cs" />
|
<Compile Include="Entities\ParentalRating.cs" />
|
||||||
<Compile Include="Dto\StreamOptions.cs" />
|
|
||||||
<Compile Include="Entities\VirtualFolderInfo.cs" />
|
<Compile Include="Entities\VirtualFolderInfo.cs" />
|
||||||
<Compile Include="IO\IZipClient.cs" />
|
<Compile Include="IO\IZipClient.cs" />
|
||||||
<Compile Include="Logging\ILogger.cs" />
|
<Compile Include="Logging\ILogger.cs" />
|
||||||
|
|
|
@ -168,6 +168,15 @@ namespace MediaBrowser.Providers.MediaInfo
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item is Audio)
|
||||||
|
{
|
||||||
|
// Moved to plural AlbumArtists
|
||||||
|
if (date < new DateTime(2014, 8, 28))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (item.SupportsLocalMetadata)
|
if (item.SupportsLocalMetadata)
|
||||||
{
|
{
|
||||||
var video = item as Video;
|
var video = item as Video;
|
||||||
|
|
|
@ -9,8 +9,6 @@ using MediaBrowser.Providers.Manager;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Providers.Music
|
namespace MediaBrowser.Providers.Music
|
||||||
{
|
{
|
||||||
|
@ -104,18 +102,16 @@ namespace MediaBrowser.Providers.Music
|
||||||
{
|
{
|
||||||
var updateType = ItemUpdateType.None;
|
var updateType = ItemUpdateType.None;
|
||||||
|
|
||||||
var albumArtist = songs
|
var albumArtists = songs
|
||||||
.SelectMany(i => i.AlbumArtists)
|
.SelectMany(i => i.AlbumArtists)
|
||||||
.FirstOrDefault(i => !string.IsNullOrEmpty(i));
|
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(albumArtist))
|
if (!item.AlbumArtists.SequenceEqual(albumArtists, StringComparer.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
if (!string.Equals(item.AlbumArtist, albumArtist, StringComparison.Ordinal))
|
item.AlbumArtists = albumArtists;
|
||||||
{
|
|
||||||
item.AlbumArtist = albumArtist;
|
|
||||||
updateType = updateType | ItemUpdateType.MetadataDownload;
|
updateType = updateType | ItemUpdateType.MetadataDownload;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return updateType;
|
return updateType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,10 @@ namespace MediaBrowser.Providers.Music
|
||||||
|
|
||||||
private void ProcessResult(MusicAlbum item, Album result)
|
private void ProcessResult(MusicAlbum item, Album result)
|
||||||
{
|
{
|
||||||
item.AlbumArtist = result.strArtist;
|
if (!string.IsNullOrWhiteSpace(result.strArtist))
|
||||||
|
{
|
||||||
|
item.AlbumArtists = new List<string> { result.strArtist };
|
||||||
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(result.intYearReleased))
|
if (!string.IsNullOrEmpty(result.intYearReleased))
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,15 +8,15 @@ namespace MediaBrowser.Providers.Music
|
||||||
{
|
{
|
||||||
public static string GetAlbumArtist(this AlbumInfo info)
|
public static string GetAlbumArtist(this AlbumInfo info)
|
||||||
{
|
{
|
||||||
var id = info.AlbumArtists.FirstOrDefault();
|
var id = info.SongInfos.SelectMany(i => i.AlbumArtists)
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(id))
|
|
||||||
{
|
|
||||||
return info.SongInfos.SelectMany(i => i.AlbumArtists)
|
|
||||||
.FirstOrDefault(i => !string.IsNullOrEmpty(i));
|
.FirstOrDefault(i => !string.IsNullOrEmpty(i));
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(id))
|
||||||
|
{
|
||||||
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
return id;
|
return info.AlbumArtists.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetReleaseGroupId(this AlbumInfo info)
|
public static string GetReleaseGroupId(this AlbumInfo info)
|
||||||
|
|
|
@ -29,7 +29,6 @@ namespace MediaBrowser.Providers.Photos
|
||||||
public Task<ItemUpdateType> FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken)
|
public Task<ItemUpdateType> FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
item.SetImagePath(ImageType.Primary, item.Path);
|
item.SetImagePath(ImageType.Primary, item.Path);
|
||||||
item.SetImagePath(ImageType.Backdrop, item.Path);
|
|
||||||
|
|
||||||
// Examples: https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/tests/fixtures/TagLib.Tests.Images/NullOrientationTest.cs
|
// Examples: https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/tests/fixtures/TagLib.Tests.Images/NullOrientationTest.cs
|
||||||
|
|
||||||
|
@ -77,7 +76,7 @@ namespace MediaBrowser.Providers.Photos
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item.CameraManufacturer = image.ImageTag.Make;
|
item.CameraMake = image.ImageTag.Make;
|
||||||
item.CameraModel = image.ImageTag.Model;
|
item.CameraModel = image.ImageTag.Model;
|
||||||
|
|
||||||
var rating = image.ImageTag.Rating;
|
var rating = image.ImageTag.Rating;
|
||||||
|
@ -105,19 +104,22 @@ namespace MediaBrowser.Providers.Photos
|
||||||
item.ProductionYear = dateTaken.Value.Year;
|
item.ProductionYear = dateTaken.Value.Year;
|
||||||
}
|
}
|
||||||
|
|
||||||
var size = _imageProcessor.GetImageSize(item.Path);
|
|
||||||
item.Height = Convert.ToInt32(size.Height);
|
|
||||||
item.Width = Convert.ToInt32(size.Width);
|
|
||||||
|
|
||||||
item.Genres = image.ImageTag.Genres.ToList();
|
item.Genres = image.ImageTag.Genres.ToList();
|
||||||
item.Tags = image.ImageTag.Keywords.ToList();
|
item.Tags = image.ImageTag.Keywords.ToList();
|
||||||
item.Software = image.ImageTag.Software;
|
item.Software = image.ImageTag.Software;
|
||||||
|
|
||||||
|
if (image.ImageTag.Orientation == TagLib.Image.ImageOrientation.None)
|
||||||
|
{
|
||||||
|
item.Orientation = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
Model.Drawing.ImageOrientation orientation;
|
Model.Drawing.ImageOrientation orientation;
|
||||||
if (Enum.TryParse(image.ImageTag.Orientation.ToString(), true, out orientation))
|
if (Enum.TryParse(image.ImageTag.Orientation.ToString(), true, out orientation))
|
||||||
{
|
{
|
||||||
item.Orientation = orientation;
|
item.Orientation = orientation;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
item.ExposureTime = image.ImageTag.ExposureTime;
|
item.ExposureTime = image.ImageTag.ExposureTime;
|
||||||
item.FocalLength = image.ImageTag.FocalLength;
|
item.FocalLength = image.ImageTag.FocalLength;
|
||||||
|
@ -127,6 +129,10 @@ namespace MediaBrowser.Providers.Photos
|
||||||
_logger.ErrorException("Image Provider - Error reading image tag for {0}", e, item.Path);
|
_logger.ErrorException("Image Provider - Error reading image tag for {0}", e, item.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var size = _imageProcessor.GetImageSize(item.Path);
|
||||||
|
item.Height = Convert.ToInt32(size.Height);
|
||||||
|
item.Width = Convert.ToInt32(size.Width);
|
||||||
|
|
||||||
const ItemUpdateType result = ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataImport;
|
const ItemUpdateType result = ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataImport;
|
||||||
return Task.FromResult(result);
|
return Task.FromResult(result);
|
||||||
}
|
}
|
||||||
|
@ -138,6 +144,13 @@ namespace MediaBrowser.Providers.Photos
|
||||||
|
|
||||||
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
|
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
|
||||||
{
|
{
|
||||||
|
// Moved to plural AlbumArtists
|
||||||
|
if (date < new DateTime(2014, 8, 28))
|
||||||
|
{
|
||||||
|
// Revamped vaptured metadata
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return item.DateModified > date;
|
return item.DateModified > date;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -357,6 +357,19 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||||
{
|
{
|
||||||
dto.SeriesName = item.SeriesName;
|
dto.SeriesName = item.SeriesName;
|
||||||
}
|
}
|
||||||
|
private void SetPhotoProperties(BaseItemDto dto, Photo item)
|
||||||
|
{
|
||||||
|
dto.Width = item.Width;
|
||||||
|
dto.Height = item.Height;
|
||||||
|
dto.CameraMake = item.CameraMake;
|
||||||
|
dto.CameraModel = item.CameraModel;
|
||||||
|
dto.Software = item.Software;
|
||||||
|
dto.ExposureTime = item.ExposureTime;
|
||||||
|
dto.FocalLength = item.FocalLength;
|
||||||
|
dto.ImageOrientation = item.Orientation;
|
||||||
|
dto.Aperture = item.Aperture;
|
||||||
|
dto.ShutterSpeed = item.ShutterSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
private void SetMusicVideoProperties(BaseItemDto dto, MusicVideo item)
|
private void SetMusicVideoProperties(BaseItemDto dto, MusicVideo item)
|
||||||
{
|
{
|
||||||
|
@ -1187,21 +1200,24 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||||
}
|
}
|
||||||
|
|
||||||
var book = item as Book;
|
var book = item as Book;
|
||||||
|
|
||||||
if (book != null)
|
if (book != null)
|
||||||
{
|
{
|
||||||
SetBookProperties(dto, book);
|
SetBookProperties(dto, book);
|
||||||
}
|
}
|
||||||
|
|
||||||
var tvChannel = item as LiveTvChannel;
|
var photo = item as Photo;
|
||||||
|
if (photo != null)
|
||||||
|
{
|
||||||
|
SetPhotoProperties(dto, photo);
|
||||||
|
}
|
||||||
|
|
||||||
|
var tvChannel = item as LiveTvChannel;
|
||||||
if (tvChannel != null)
|
if (tvChannel != null)
|
||||||
{
|
{
|
||||||
dto.MediaSources = tvChannel.GetMediaSources(true).ToList();
|
dto.MediaSources = tvChannel.GetMediaSources(true).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
var channelItem = item as IChannelItem;
|
var channelItem = item as IChannelItem;
|
||||||
|
|
||||||
if (channelItem != null)
|
if (channelItem != null)
|
||||||
{
|
{
|
||||||
dto.ChannelId = channelItem.ChannelId;
|
dto.ChannelId = channelItem.ChannelId;
|
||||||
|
|
|
@ -1093,8 +1093,8 @@
|
||||||
"MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.",
|
"MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.",
|
||||||
"TabSupporterClub": "Supporter Club",
|
"TabSupporterClub": "Supporter Club",
|
||||||
"HeaderDonationType": "Donation type:",
|
"HeaderDonationType": "Donation type:",
|
||||||
"OptionMakeOneTimeDonation": "Make an additional donation",
|
"OptionMakeOneTimeDonation": "Make a separate donation",
|
||||||
"OptionOneTimeDescription": "This is an additional donation to the team to show extra support. It does not have any additional benefits.",
|
"OptionOneTimeDescription": "This is an additional donation to the team to show your support. It does not have any additional benefits.",
|
||||||
"OptionLifeTimeSupporterClubMembership": "Lifetime supporter club membership",
|
"OptionLifeTimeSupporterClubMembership": "Lifetime supporter club membership",
|
||||||
"HeaderSupporterBenefit": "Becoming a supporter club member provides additional benefits such as access to premium plugins, internet channel content, and more.",
|
"HeaderSupporterBenefit": "Becoming a supporter club member provides additional benefits such as access to premium plugins, internet channel content, and more.",
|
||||||
"OptionNoTrailer": "No Trailer",
|
"OptionNoTrailer": "No Trailer",
|
||||||
|
@ -1108,5 +1108,7 @@
|
||||||
"OptionProducer": "Producer",
|
"OptionProducer": "Producer",
|
||||||
"OptionWriter": "Writer",
|
"OptionWriter": "Writer",
|
||||||
"LabelAirDays": "Air days:",
|
"LabelAirDays": "Air days:",
|
||||||
"LabelAirTime": "Air time:"
|
"LabelAirTime": "Air time:",
|
||||||
|
"HeaderMediaInfo": "Media Info",
|
||||||
|
"HeaderPhotoInfo": "Photo Info"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common.Internal</id>
|
<id>MediaBrowser.Common.Internal</id>
|
||||||
<version>3.0.427</version>
|
<version>3.0.428</version>
|
||||||
<title>MediaBrowser.Common.Internal</title>
|
<title>MediaBrowser.Common.Internal</title>
|
||||||
<authors>Luke</authors>
|
<authors>Luke</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
|
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
|
||||||
<copyright>Copyright © Media Browser 2013</copyright>
|
<copyright>Copyright © Media Browser 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.427" />
|
<dependency id="MediaBrowser.Common" version="3.0.428" />
|
||||||
<dependency id="NLog" version="3.1.0.0" />
|
<dependency id="NLog" version="3.1.0.0" />
|
||||||
<dependency id="SimpleInjector" version="2.5.2" />
|
<dependency id="SimpleInjector" version="2.5.2" />
|
||||||
<dependency id="sharpcompress" version="0.10.2" />
|
<dependency id="sharpcompress" version="0.10.2" />
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common</id>
|
<id>MediaBrowser.Common</id>
|
||||||
<version>3.0.427</version>
|
<version>3.0.428</version>
|
||||||
<title>MediaBrowser.Common</title>
|
<title>MediaBrowser.Common</title>
|
||||||
<authors>Media Browser Team</authors>
|
<authors>Media Browser Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Model.Signed</id>
|
<id>MediaBrowser.Model.Signed</id>
|
||||||
<version>3.0.427</version>
|
<version>3.0.428</version>
|
||||||
<title>MediaBrowser.Model - Signed Edition</title>
|
<title>MediaBrowser.Model - Signed Edition</title>
|
||||||
<authors>Media Browser Team</authors>
|
<authors>Media Browser Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Server.Core</id>
|
<id>MediaBrowser.Server.Core</id>
|
||||||
<version>3.0.427</version>
|
<version>3.0.428</version>
|
||||||
<title>Media Browser.Server.Core</title>
|
<title>Media Browser.Server.Core</title>
|
||||||
<authors>Media Browser Team</authors>
|
<authors>Media Browser Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<description>Contains core components required to build plugins for Media Browser Server.</description>
|
<description>Contains core components required to build plugins for Media Browser Server.</description>
|
||||||
<copyright>Copyright © Media Browser 2013</copyright>
|
<copyright>Copyright © Media Browser 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.427" />
|
<dependency id="MediaBrowser.Common" version="3.0.428" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
|
Loading…
Reference in a new issue