|
@@ -607,6 +607,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
|
|
var item = _libraryManager.GetItemById(id) as LiveTvProgram;
|
|
|
var isNew = false;
|
|
|
+ var forceUpdate = false;
|
|
|
|
|
|
if (item == null)
|
|
|
{
|
|
@@ -621,7 +622,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- item.ChannelType = channelType;
|
|
|
+ //item.ChannelType = channelType;
|
|
|
+ if (!string.Equals(item.ServiceName, serviceName, StringComparison.Ordinal))
|
|
|
+ {
|
|
|
+ forceUpdate = true;
|
|
|
+ }
|
|
|
item.ServiceName = serviceName;
|
|
|
|
|
|
item.Audio = info.Audio;
|
|
@@ -666,7 +671,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
{
|
|
|
await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false);
|
|
|
}
|
|
|
- else if (string.IsNullOrWhiteSpace(info.Etag))
|
|
|
+ else if (forceUpdate || string.IsNullOrWhiteSpace(info.Etag))
|
|
|
{
|
|
|
await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
|
|
|
}
|
|
@@ -814,7 +819,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
|
|
public async Task<QueryResult<BaseItemDto>> GetPrograms(ProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var internalQuery = new InternalItemsQuery
|
|
|
+ var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
|
|
|
+
|
|
|
+ var internalQuery = new InternalItemsQuery(user)
|
|
|
{
|
|
|
IncludeItemTypes = new[] { typeof(LiveTvProgram).Name },
|
|
|
MinEndDate = query.MinEndDate,
|
|
@@ -832,11 +839,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
SortOrder = query.SortOrder ?? SortOrder.Ascending
|
|
|
};
|
|
|
|
|
|
- var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
|
|
|
if (user != null)
|
|
|
{
|
|
|
- internalQuery.MaxParentalRating = user.Policy.MaxParentalRating;
|
|
|
-
|
|
|
if (user.Policy.BlockUnratedItems.Contains(UnratedItem.LiveTvProgram))
|
|
|
{
|
|
|
internalQuery.HasParentalRating = true;
|
|
@@ -874,7 +878,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
|
|
public async Task<QueryResult<LiveTvProgram>> GetRecommendedProgramsInternal(RecommendedProgramQuery query, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var internalQuery = new InternalItemsQuery
|
|
|
+ var user = _userManager.GetUserById(query.UserId);
|
|
|
+
|
|
|
+ var internalQuery = new InternalItemsQuery(user)
|
|
|
{
|
|
|
IncludeItemTypes = new[] { typeof(LiveTvProgram).Name },
|
|
|
IsAiring = query.IsAiring,
|
|
@@ -895,11 +901,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var user = _userManager.GetUserById(query.UserId);
|
|
|
if (user != null)
|
|
|
{
|
|
|
- internalQuery.MaxParentalRating = user.Policy.MaxParentalRating;
|
|
|
-
|
|
|
if (user.Policy.BlockUnratedItems.Contains(UnratedItem.LiveTvProgram))
|
|
|
{
|
|
|
internalQuery.HasParentalRating = true;
|
|
@@ -1037,6 +1040,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
{
|
|
|
var internalProgram = GetInternalProgram(program.Id);
|
|
|
|
|
|
+ if (string.IsNullOrWhiteSpace(internalProgram.ServiceName))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
List<TimerInfo> timerList;
|
|
|
if (!timers.TryGetValue(internalProgram.ServiceName, out timerList))
|
|
|
{
|
|
@@ -1052,7 +1060,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, internalProgram.ExternalId, StringComparison.OrdinalIgnoreCase));
|
|
|
|
|
|
if (timer != null)
|
|
@@ -1429,18 +1436,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
public void AddInfoToProgramDto(BaseItem item, BaseItemDto dto, bool addChannelInfo, User user = null)
|
|
|
{
|
|
|
var program = (LiveTvProgram)item;
|
|
|
- var service = GetService(program);
|
|
|
-
|
|
|
- dto.Id = _tvDtoService.GetInternalProgramId(service.Name, program.ExternalId).ToString("N");
|
|
|
|
|
|
dto.StartDate = program.StartDate;
|
|
|
dto.EpisodeTitle = program.EpisodeTitle;
|
|
|
- dto.Audio = program.Audio;
|
|
|
|
|
|
- if (program.IsHD.HasValue && program.IsHD.Value)
|
|
|
- {
|
|
|
- dto.IsHD = program.IsHD;
|
|
|
- }
|
|
|
if (program.IsRepeat)
|
|
|
{
|
|
|
dto.IsRepeat = program.IsRepeat;
|
|
@@ -1499,7 +1498,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
|
|
var info = recording;
|
|
|
|
|
|
- dto.Id = item.Id.ToString("N");
|
|
|
dto.SeriesTimerId = string.IsNullOrEmpty(info.SeriesTimerId)
|
|
|
? null
|
|
|
: _tvDtoService.GetInternalSeriesTimerId(service.Name, info.SeriesTimerId).ToString("N");
|
|
@@ -1508,8 +1506,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
dto.RecordingStatus = info.Status;
|
|
|
dto.IsRepeat = info.IsRepeat;
|
|
|
dto.EpisodeTitle = info.EpisodeTitle;
|
|
|
- dto.Audio = info.Audio;
|
|
|
- dto.IsHD = info.IsHD;
|
|
|
dto.IsMovie = info.IsMovie;
|
|
|
dto.IsSeries = info.IsSeries;
|
|
|
dto.IsSports = info.IsSports;
|