aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-05-31 14:22:51 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-05-31 14:22:51 -0400
commit25736b259a56ff11ca3b7298be023b87eb3fda99 (patch)
tree11c34708b21caa28ec0ead2146671c102fba5553 /MediaBrowser.Server.Implementations
parenta93045c01a2a04f52fd13fff4db7c8e859bbcf25 (diff)
normalize tv recording objects
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs11
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs118
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs170
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json3
4 files changed, 132 insertions, 170 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 1b55f47d5..cf56fc9ce 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -46,8 +46,9 @@ namespace MediaBrowser.Server.Implementations.Dto
private readonly IApplicationHost _appHost;
private readonly Func<IDeviceManager> _deviceManager;
private readonly Func<IMediaSourceManager> _mediaSourceManager;
+ private readonly Func<ILiveTvManager> _livetvManager;
- public DtoService(ILogger logger, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory, ISyncManager syncManager, IApplicationHost appHost, Func<IDeviceManager> deviceManager, Func<IMediaSourceManager> mediaSourceManager)
+ public DtoService(ILogger logger, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory, ISyncManager syncManager, IApplicationHost appHost, Func<IDeviceManager> deviceManager, Func<IMediaSourceManager> mediaSourceManager, Func<ILiveTvManager> livetvManager)
{
_logger = logger;
_libraryManager = libraryManager;
@@ -62,6 +63,7 @@ namespace MediaBrowser.Server.Implementations.Dto
_appHost = appHost;
_deviceManager = deviceManager;
_mediaSourceManager = mediaSourceManager;
+ _livetvManager = livetvManager;
}
/// <summary>
@@ -350,6 +352,11 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.Etag = item.GetEtag(user);
}
+ if (item is ILiveTvRecording)
+ {
+ _livetvManager().AddInfoToRecordingDto(item, dto, user);
+ }
+
return dto;
}
@@ -1384,7 +1391,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.AirDays = series.AirDays;
dto.AirTime = series.AirTime;
- dto.Status = series.Status;
+ dto.SeriesStatus = series.Status;
dto.SeasonCount = series.SeasonCount;
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
index 00c15fdfc..939d057cb 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -167,122 +167,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return val.Value;
}
- public string GetStatusName(RecordingStatus status)
- {
- if (status == RecordingStatus.InProgress)
- {
- return "In Progress";
- }
-
- if (status == RecordingStatus.ConflictedNotOk)
- {
- return "Conflicted";
- }
-
- if (status == RecordingStatus.ConflictedOk)
- {
- return "Scheduled";
- }
-
- return status.ToString();
- }
-
- public RecordingInfoDto GetRecordingInfoDto(ILiveTvRecording recording, LiveTvChannel channel, ILiveTvService service, User user = null)
- {
- var info = recording.RecordingInfo;
-
- var dto = new RecordingInfoDto
- {
- Id = GetInternalRecordingId(service.Name, info.Id).ToString("N"),
- SeriesTimerId = string.IsNullOrEmpty(info.SeriesTimerId) ? null : GetInternalSeriesTimerId(service.Name, info.SeriesTimerId).ToString("N"),
- Type = recording.GetClientTypeName(),
- Overview = info.Overview,
- EndDate = info.EndDate,
- Name = info.Name,
- StartDate = info.StartDate,
- ExternalId = info.Id,
- ChannelId = GetInternalChannelId(service.Name, info.ChannelId).ToString("N"),
- Status = info.Status,
- StatusName = GetStatusName(info.Status),
- Path = info.Path,
- Genres = info.Genres,
- IsRepeat = info.IsRepeat,
- EpisodeTitle = info.EpisodeTitle,
- ChannelType = info.ChannelType,
- MediaType = info.ChannelType == ChannelType.Radio ? MediaType.Audio : MediaType.Video,
- CommunityRating = GetClientCommunityRating(info.CommunityRating),
- OfficialRating = info.OfficialRating,
- Audio = info.Audio,
- IsHD = info.IsHD,
- ServiceName = service.Name,
- IsMovie = info.IsMovie,
- IsSeries = info.IsSeries,
- IsSports = info.IsSports,
- IsLive = info.IsLive,
- IsNews = info.IsNews,
- IsKids = info.IsKids,
- IsPremiere = info.IsPremiere,
- RunTimeTicks = (info.EndDate - info.StartDate).Ticks,
- OriginalAirDate = info.OriginalAirDate,
-
- MediaSources = recording.GetMediaSources(true).ToList(),
- ServerId = _appHost.SystemId
- };
-
- dto.CanDelete = user == null
- ? recording.CanDelete()
- : recording.CanDelete(user);
-
- dto.MediaStreams = dto.MediaSources.SelectMany(i => i.MediaStreams).ToList();
-
- if (info.Status == RecordingStatus.InProgress)
- {
- var now = DateTime.UtcNow.Ticks;
- var start = info.StartDate.Ticks;
- var end = info.EndDate.Ticks;
-
- var pct = now - start;
- pct /= end;
- pct *= 100;
- dto.CompletionPercentage = pct;
- }
-
- var imageTag = GetImageTag(recording);
-
- if (imageTag != null)
- {
- dto.ImageTags[ImageType.Primary] = imageTag;
- _dtoService.AttachPrimaryImageAspectRatio(dto, recording, new List<ItemFields>
- {
- ItemFields.PrimaryImageAspectRatio
- });
- }
-
- if (user != null)
- {
- dto.UserData = _userDataManager.GetUserDataDto(recording, user);
-
- dto.PlayAccess = recording.GetPlayAccess(user);
- }
-
- if (!string.IsNullOrEmpty(info.ProgramId))
- {
- dto.ProgramId = GetInternalProgramId(service.Name, info.ProgramId).ToString("N");
- }
-
- if (channel != null)
- {
- dto.ChannelName = channel.Name;
-
- if (!string.IsNullOrEmpty(channel.PrimaryImagePath))
- {
- dto.ChannelPrimaryImageTag = GetImageTag(channel);
- }
- }
-
- return dto;
- }
-
public LiveTvTunerInfoDto GetTunerInfoDto(string serviceName, LiveTvTunerInfo info, string channelName)
{
var dto = new LiveTvTunerInfoDto
@@ -430,7 +314,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return dto;
}
- private string GetImageTag(IHasImages info)
+ internal string GetImageTag(IHasImages info)
{
try
{
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index a82775de7..52c96bca6 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -119,11 +119,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
var dict = new Dictionary<Guid, LiveTvProgram>();
- foreach (var item in _itemRepo.GetItemsOfType(typeof (LiveTvProgram))
+ foreach (var item in _itemRepo.GetItemsOfType(typeof(LiveTvProgram))
.Cast<LiveTvProgram>()
.ToList())
{
- dict[item.Id] = item;
+ dict[item.Id] = item;
}
_programs = dict;
@@ -658,7 +658,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var id = _tvDtoService.GetInternalRecordingId(serviceName, info.Id);
- var item = _itemRepo.RetrieveItem(id) as ILiveTvRecording;
+ var item = _itemRepo.RetrieveItem(id);
if (item == null)
{
@@ -687,8 +687,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv
isNew = true;
}
- item.RecordingInfo = info;
- item.ServiceName = serviceName;
+ item.CommunityRating = info.CommunityRating;
+ item.OfficialRating = info.OfficialRating;
+ item.Overview = info.Overview;
+ item.EndDate = info.EndDate;
+
+ var recording = (ILiveTvRecording)item;
+
+ recording.RecordingInfo = info;
+ recording.ServiceName = serviceName;
var originalPath = item.Path;
@@ -709,9 +716,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}, cancellationToken);
- _libraryManager.RegisterItem((BaseItem)item);
+ _libraryManager.RegisterItem(item);
- return item;
+ return recording;
}
private LiveTvChannel GetChannel(LiveTvProgram program)
@@ -1355,20 +1362,89 @@ namespace MediaBrowser.Server.Implementations.LiveTv
};
}
- public async Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken)
+ public void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null)
{
- var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
+ var recording = (ILiveTvRecording)item;
+ var service = GetService(recording);
- var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false);
+ var channel = string.IsNullOrEmpty(recording.RecordingInfo.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, recording.RecordingInfo.ChannelId));
- var returnArray = internalResult.Items.Cast<ILiveTvRecording>()
- .Select(i =>
+ var info = recording.RecordingInfo;
+
+ dto.Id = _tvDtoService.GetInternalRecordingId(service.Name, info.Id).ToString("N");
+ dto.SeriesTimerId = string.IsNullOrEmpty(info.SeriesTimerId)
+ ? null
+ : _tvDtoService.GetInternalSeriesTimerId(service.Name, info.SeriesTimerId).ToString("N");
+
+ dto.ChannelId = _tvDtoService.GetInternalChannelId(service.Name, info.ChannelId).ToString("N");
+
+ dto.StartDate = info.StartDate;
+ dto.RecordingStatus = info.Status;
+ dto.IsRepeat = info.IsRepeat;
+ dto.EpisodeTitle = info.EpisodeTitle;
+ dto.ChannelType = info.ChannelType;
+ dto.Audio = info.Audio;
+ dto.IsHD = info.IsHD;
+ dto.IsMovie = info.IsMovie;
+ dto.IsSeries = info.IsSeries;
+ dto.IsSports = info.IsSports;
+ dto.IsLive = info.IsLive;
+ dto.IsNews = info.IsNews;
+ dto.IsKids = info.IsKids;
+ dto.IsPremiere = info.IsPremiere;
+ dto.RunTimeTicks = (info.EndDate - info.StartDate).Ticks;
+ dto.OriginalAirDate = info.OriginalAirDate;
+
+ dto.CanDelete = user == null
+ ? recording.CanDelete()
+ : recording.CanDelete(user);
+
+ if (dto.MediaSources == null)
+ {
+ dto.MediaSources = recording.GetMediaSources(true).ToList();
+ }
+
+ if (dto.MediaStreams == null)
+ {
+ dto.MediaStreams = dto.MediaSources.SelectMany(i => i.MediaStreams).ToList();
+ }
+
+ if (info.Status == RecordingStatus.InProgress)
+ {
+ var now = DateTime.UtcNow.Ticks;
+ var start = info.StartDate.Ticks;
+ var end = info.EndDate.Ticks;
+
+ var pct = now - start;
+ pct /= end;
+ pct *= 100;
+ dto.CompletionPercentage = pct;
+ }
+
+ if (!string.IsNullOrEmpty(info.ProgramId))
+ {
+ dto.ProgramId = _tvDtoService.GetInternalProgramId(service.Name, info.ProgramId).ToString("N");
+ }
+
+ if (channel != null)
+ {
+ dto.ChannelName = channel.Name;
+
+ if (!string.IsNullOrEmpty(channel.PrimaryImagePath))
{
- var service = GetService(i);
+ dto.ChannelPrimaryImageTag = _tvDtoService.GetImageTag(channel);
+ }
+ }
+ }
- var channel = string.IsNullOrEmpty(i.RecordingInfo.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.RecordingInfo.ChannelId));
- return _tvDtoService.GetRecordingInfoDto(i, channel, service, user);
- })
+ public async Task<QueryResult<BaseItemDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken)
+ {
+ var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
+
+ var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false);
+
+ var returnArray = internalResult.Items
+ .Select(i => _dtoService.GetBaseItemDto(i, options, user))
.ToArray();
if (user != null)
@@ -1376,7 +1452,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
_dtoService.FillSyncInfo(returnArray, new DtoOptions(), user);
}
- return new QueryResult<RecordingInfoDto>
+ return new QueryResult<BaseItemDto>
{
Items = returnArray,
TotalRecordCount = internalResult.TotalRecordCount
@@ -1448,10 +1524,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
public async Task DeleteRecording(string recordingId)
{
- var dtoOptions = new DtoOptions();
- dtoOptions.Fields.Remove(ItemFields.SyncInfo);
-
- var recording = await GetRecording(recordingId, dtoOptions, CancellationToken.None).ConfigureAwait(false);
+ var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false);
if (recording == null)
{
@@ -1460,7 +1533,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var service = GetService(recording.ServiceName);
- await service.DeleteRecordingAsync(recording.ExternalId, CancellationToken.None).ConfigureAwait(false);
+ await service.DeleteRecordingAsync(recording.RecordingInfo.Id, CancellationToken.None).ConfigureAwait(false);
}
public async Task CancelTimer(string id)
@@ -1491,16 +1564,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv
await service.CancelSeriesTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false);
}
- public async Task<RecordingInfoDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null)
+ public async Task<BaseItemDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null)
{
- var results = await GetRecordings(new RecordingQuery
- {
- UserId = user == null ? null : user.Id.ToString("N"),
- Id = id
+ var item = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false);
- }, options, cancellationToken).ConfigureAwait(false);
+ if (item == null)
+ {
+ return null;
+ }
- return results.Items.FirstOrDefault();
+ return _dtoService.GetBaseItemDto((BaseItem)item, options, user);
}
public async Task<TimerInfoDto> GetTimer(string id, CancellationToken cancellationToken)
@@ -1776,60 +1849,57 @@ namespace MediaBrowser.Server.Implementations.LiveTv
.ToList();
}
- public async Task<QueryResult<RecordingGroupDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken)
+ public async Task<QueryResult<BaseItemDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken)
{
- var dtoOptions = new DtoOptions();
- dtoOptions.Fields.Remove(ItemFields.SyncInfo);
-
- var recordingResult = await GetRecordings(new RecordingQuery
+ var recordingResult = await GetInternalRecordings(new RecordingQuery
{
UserId = query.UserId
- }, dtoOptions, cancellationToken).ConfigureAwait(false);
+ }, cancellationToken).ConfigureAwait(false);
- var recordings = recordingResult.Items;
+ var recordings = recordingResult.Items.Cast<ILiveTvRecording>().ToList();
- var groups = new List<RecordingGroupDto>();
+ var groups = new List<BaseItemDto>();
var series = recordings
- .Where(i => i.IsSeries)
+ .Where(i => i.RecordingInfo.IsSeries)
.ToLookup(i => i.Name, StringComparer.OrdinalIgnoreCase)
.ToList();
- groups.AddRange(series.OrderByString(i => i.Key).Select(i => new RecordingGroupDto
+ groups.AddRange(series.OrderByString(i => i.Key).Select(i => new BaseItemDto
{
Name = i.Key,
RecordingCount = i.Count()
}));
- groups.Add(new RecordingGroupDto
+ groups.Add(new BaseItemDto
{
Name = "Kids",
- RecordingCount = recordings.Count(i => i.IsKids)
+ RecordingCount = recordings.Count(i => i.RecordingInfo.IsKids)
});
- groups.Add(new RecordingGroupDto
+ groups.Add(new BaseItemDto
{
Name = "Movies",
- RecordingCount = recordings.Count(i => i.IsMovie)
+ RecordingCount = recordings.Count(i => i.RecordingInfo.IsMovie)
});
- groups.Add(new RecordingGroupDto
+ groups.Add(new BaseItemDto
{
Name = "News",
- RecordingCount = recordings.Count(i => i.IsNews)
+ RecordingCount = recordings.Count(i => i.RecordingInfo.IsNews)
});
- groups.Add(new RecordingGroupDto
+ groups.Add(new BaseItemDto
{
Name = "Sports",
- RecordingCount = recordings.Count(i => i.IsSports)
+ RecordingCount = recordings.Count(i => i.RecordingInfo.IsSports)
});
- groups.Add(new RecordingGroupDto
+ groups.Add(new BaseItemDto
{
Name = "Others",
- RecordingCount = recordings.Count(i => !i.IsSports && !i.IsNews && !i.IsMovie && !i.IsKids && !i.IsSeries)
+ RecordingCount = recordings.Count(i => !i.RecordingInfo.IsSports && !i.RecordingInfo.IsNews && !i.RecordingInfo.IsMovie && !i.RecordingInfo.IsKids && !i.RecordingInfo.IsSeries)
});
groups = groups
@@ -1841,7 +1911,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
group.Id = group.Name.ToLower().GetMD5().ToString("N");
}
- return new QueryResult<RecordingGroupDto>
+ return new QueryResult<BaseItemDto>
{
Items = groups.ToArray(),
TotalRecordCount = groups.Count
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
index c48de8797..286c7cd04 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
@@ -790,5 +790,6 @@
"OptionEnableFullscreen": "Enable Fullscreen",
"ButtonServer": "Server",
"HeaderAdmin": "Admin",
- "HeaderLibrary": "Library"
+ "HeaderLibrary": "Library",
+ "HeaderMedia": "Media"
}