aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Session/SessionManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/Session/SessionManager.cs')
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs200
1 files changed, 50 insertions, 150 deletions
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 42cd5d1b1..a5582ddc5 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -338,7 +338,7 @@ namespace Emby.Server.Implementations.Session
}
}
- info.Item = GetItemInfo(libraryItem, libraryItem, mediaSource);
+ info.Item = GetItemInfo(libraryItem, mediaSource);
info.Item.RunTimeTicks = runtimeTicks;
}
@@ -813,7 +813,7 @@ namespace Emby.Server.Implementations.Session
mediaSource = await GetMediaSource(hasMediaSources, info.MediaSourceId, info.LiveStreamId).ConfigureAwait(false);
}
- info.Item = GetItemInfo(libraryItem, libraryItem, mediaSource);
+ info.Item = GetItemInfo(libraryItem, mediaSource);
}
else
{
@@ -1637,165 +1637,65 @@ namespace Emby.Server.Implementations.Session
return dto;
}
+ private DtoOptions _itemInfoDtoOptions;
+
/// <summary>
/// Converts a BaseItem to a BaseItemInfo
/// </summary>
- /// <param name="item">The item.</param>
- /// <param name="chapterOwner">The chapter owner.</param>
- /// <param name="mediaSource">The media source.</param>
- /// <returns>BaseItemInfo.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
- private BaseItemInfo GetItemInfo(BaseItem item, BaseItem chapterOwner, MediaSourceInfo mediaSource)
+ private BaseItemDto GetItemInfo(BaseItem item, MediaSourceInfo mediaSource)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
- var info = new BaseItemInfo
- {
- Id = GetDtoId(item),
- Name = item.Name,
- MediaType = item.MediaType,
- Type = item.GetClientTypeName(),
- RunTimeTicks = item.RunTimeTicks,
- IndexNumber = item.IndexNumber,
- ParentIndexNumber = item.ParentIndexNumber,
- PremiereDate = item.PremiereDate,
- ProductionYear = item.ProductionYear,
- IsThemeMedia = item.IsThemeMedia
- };
-
- info.PrimaryImageTag = GetImageCacheTag(item, ImageType.Primary);
- if (info.PrimaryImageTag != null)
- {
- info.PrimaryImageItemId = GetDtoId(item);
- }
-
- var episode = item as Episode;
- if (episode != null)
- {
- info.IndexNumberEnd = episode.IndexNumberEnd;
- }
-
- var hasSeries = item as IHasSeries;
- if (hasSeries != null)
- {
- info.SeriesName = hasSeries.SeriesName;
- }
-
- var recording = item as ILiveTvRecording;
- if (recording != null)
- {
- if (recording.IsSeries)
- {
- info.Name = recording.EpisodeTitle;
- info.SeriesName = recording.Name;
-
- if (string.IsNullOrWhiteSpace(info.Name))
- {
- info.Name = recording.Name;
- }
- }
- }
-
- var audio = item as Audio;
- if (audio != null)
- {
- info.Album = audio.Album;
- info.Artists = audio.Artists;
-
- if (info.PrimaryImageTag == null)
- {
- var album = audio.AlbumEntity;
-
- if (album != null && album.HasImage(ImageType.Primary))
- {
- info.PrimaryImageTag = GetImageCacheTag(album, ImageType.Primary);
- if (info.PrimaryImageTag != null)
- {
- info.PrimaryImageItemId = GetDtoId(album);
- }
- }
- }
- }
-
- var musicVideo = item as MusicVideo;
- if (musicVideo != null)
- {
- info.Album = musicVideo.Album;
- info.Artists = musicVideo.Artists.ToList();
- }
-
- var backropItem = item.HasImage(ImageType.Backdrop) ? item : null;
- var thumbItem = item.HasImage(ImageType.Thumb) ? item : null;
- var logoItem = item.HasImage(ImageType.Logo) ? item : null;
-
- if (thumbItem == null)
- {
- if (episode != null)
- {
- var series = episode.Series;
-
- if (series != null && series.HasImage(ImageType.Thumb))
- {
- thumbItem = series;
- }
- }
- }
+ var dtoOptions = _itemInfoDtoOptions;
- if (backropItem == null)
+ if (_itemInfoDtoOptions == null)
{
- if (episode != null)
+ dtoOptions = new DtoOptions
{
- var series = episode.Series;
-
- if (series != null && series.HasImage(ImageType.Backdrop))
- {
- backropItem = series;
- }
- }
- }
-
- if (backropItem == null)
- {
- backropItem = item.GetParents().FirstOrDefault(i => i.HasImage(ImageType.Backdrop));
- }
-
- if (thumbItem == null)
- {
- thumbItem = item.GetParents().FirstOrDefault(i => i.HasImage(ImageType.Thumb));
- }
-
- if (logoItem == null)
- {
- logoItem = item.GetParents().FirstOrDefault(i => i.HasImage(ImageType.Logo));
- }
-
- if (thumbItem != null)
- {
- info.ThumbImageTag = GetImageCacheTag(thumbItem, ImageType.Thumb);
- info.ThumbItemId = GetDtoId(thumbItem);
- }
-
- if (backropItem != null)
- {
- info.BackdropImageTag = GetImageCacheTag(backropItem, ImageType.Backdrop);
- info.BackdropItemId = GetDtoId(backropItem);
- }
-
- if (logoItem != null)
- {
- info.LogoImageTag = GetImageCacheTag(logoItem, ImageType.Logo);
- info.LogoItemId = GetDtoId(logoItem);
- }
-
- if (chapterOwner != null)
- {
- info.ChapterImagesItemId = chapterOwner.Id.ToString("N");
-
- info.Chapters = _dtoService.GetChapterInfoDtos(chapterOwner).ToList();
- }
+ AddProgramRecordingInfo = false
+ };
+
+ dtoOptions.Fields.Remove(ItemFields.BasicSyncInfo);
+ dtoOptions.Fields.Remove(ItemFields.SyncInfo);
+ dtoOptions.Fields.Remove(ItemFields.CanDelete);
+ dtoOptions.Fields.Remove(ItemFields.CanDownload);
+ dtoOptions.Fields.Remove(ItemFields.ChildCount);
+ dtoOptions.Fields.Remove(ItemFields.CustomRating);
+ dtoOptions.Fields.Remove(ItemFields.DateLastMediaAdded);
+ dtoOptions.Fields.Remove(ItemFields.DateLastRefreshed);
+ dtoOptions.Fields.Remove(ItemFields.DateLastSaved);
+ dtoOptions.Fields.Remove(ItemFields.DisplayMediaType);
+ dtoOptions.Fields.Remove(ItemFields.DisplayPreferencesId);
+ dtoOptions.Fields.Remove(ItemFields.Etag);
+ dtoOptions.Fields.Remove(ItemFields.ExternalEtag);
+ dtoOptions.Fields.Remove(ItemFields.IndexOptions);
+ dtoOptions.Fields.Remove(ItemFields.InheritedParentalRatingValue);
+ dtoOptions.Fields.Remove(ItemFields.ItemCounts);
+ dtoOptions.Fields.Remove(ItemFields.Keywords);
+ dtoOptions.Fields.Remove(ItemFields.MediaSourceCount);
+ dtoOptions.Fields.Remove(ItemFields.MediaStreams);
+ dtoOptions.Fields.Remove(ItemFields.MediaSources);
+ dtoOptions.Fields.Remove(ItemFields.People);
+ dtoOptions.Fields.Remove(ItemFields.PlayAccess);
+ dtoOptions.Fields.Remove(ItemFields.People);
+ dtoOptions.Fields.Remove(ItemFields.ProductionLocations);
+ dtoOptions.Fields.Remove(ItemFields.RecursiveItemCount);
+ dtoOptions.Fields.Remove(ItemFields.RemoteTrailers);
+ dtoOptions.Fields.Remove(ItemFields.SeasonUserData);
+ dtoOptions.Fields.Remove(ItemFields.SeriesGenres);
+ dtoOptions.Fields.Remove(ItemFields.Settings);
+ dtoOptions.Fields.Remove(ItemFields.SortName);
+ dtoOptions.Fields.Remove(ItemFields.Tags);
+ dtoOptions.Fields.Remove(ItemFields.ThemeSongIds);
+ dtoOptions.Fields.Remove(ItemFields.ThemeVideoIds);
+
+ _itemInfoDtoOptions = dtoOptions;
+ }
+
+ var info = _dtoService.GetBaseItemDto(item, dtoOptions);
if (mediaSource != null)
{
@@ -1837,7 +1737,7 @@ namespace Emby.Server.Implementations.Session
//ReportNowViewingItem(sessionId, info);
}
- public void ReportNowViewingItem(string sessionId, BaseItemInfo item)
+ public void ReportNowViewingItem(string sessionId, BaseItemDto item)
{
//var session = GetSession(sessionId);