mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-21 01:24:44 +01:00
trim tv objects
This commit is contained in:
@@ -76,22 +76,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
private async Task<bool> DownloadImage(LiveTvChannel item, CancellationToken cancellationToken)
|
||||
{
|
||||
var channelInfo = item.ChannelInfo;
|
||||
|
||||
Stream imageStream = null;
|
||||
string contentType = null;
|
||||
|
||||
if (!string.IsNullOrEmpty(channelInfo.ImagePath))
|
||||
if (!string.IsNullOrEmpty(item.ProviderImagePath))
|
||||
{
|
||||
contentType = "image/" + Path.GetExtension(channelInfo.ImagePath).ToLower();
|
||||
imageStream = _fileSystem.GetFileStream(channelInfo.ImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true);
|
||||
contentType = "image/" + Path.GetExtension(item.ProviderImagePath).ToLower();
|
||||
imageStream = _fileSystem.GetFileStream(item.ProviderImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(channelInfo.ImageUrl))
|
||||
else if (!string.IsNullOrEmpty(item.ProviderImageUrl))
|
||||
{
|
||||
var options = new HttpRequestOptions
|
||||
{
|
||||
CancellationToken = cancellationToken,
|
||||
Url = channelInfo.ImageUrl
|
||||
Url = item.ProviderImageUrl
|
||||
};
|
||||
|
||||
var response = await _httpClient.GetResponse(options).ConfigureAwait(false);
|
||||
@@ -105,7 +103,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
imageStream = response.Content;
|
||||
contentType = response.ContentType;
|
||||
}
|
||||
else if (channelInfo.HasImage ?? true)
|
||||
else if (item.HasProviderImage ?? true)
|
||||
{
|
||||
var service = _liveTvManager.Services.FirstOrDefault(i => string.Equals(i.Name, item.ServiceName, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
@@ -113,7 +111,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await service.GetChannelImageAsync(channelInfo.Id, cancellationToken).ConfigureAwait(false);
|
||||
var response = await service.GetChannelImageAsync(item.ExternalId, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
@@ -131,7 +129,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
if (imageStream != null)
|
||||
{
|
||||
// Dummy up the original url
|
||||
var url = item.ServiceName + channelInfo.Id;
|
||||
var url = item.ServiceName + item.ExternalId;
|
||||
|
||||
await _providerManager.SaveImage(item, imageStream, contentType, ImageType.Primary, null, url, cancellationToken).ConfigureAwait(false);
|
||||
return true;
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
if (channel != null)
|
||||
{
|
||||
dto.ChannelName = channel.ChannelInfo.Name;
|
||||
dto.ChannelName = channel.Name;
|
||||
}
|
||||
|
||||
return dto;
|
||||
@@ -280,18 +280,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
/// <returns>ChannelInfoDto.</returns>
|
||||
public ChannelInfoDto GetChannelInfoDto(LiveTvChannel info, LiveTvProgram currentProgram, User user = null)
|
||||
{
|
||||
var channelInfo = info.ChannelInfo;
|
||||
|
||||
var dto = new ChannelInfoDto
|
||||
{
|
||||
Name = info.Name,
|
||||
ServiceName = info.ServiceName,
|
||||
ChannelType = channelInfo.ChannelType,
|
||||
Number = channelInfo.Number,
|
||||
ChannelType = info.ChannelType,
|
||||
Number = info.Number,
|
||||
Type = info.GetClientTypeName(),
|
||||
Id = info.Id.ToString("N"),
|
||||
MediaType = info.MediaType,
|
||||
ExternalId = channelInfo.Id
|
||||
ExternalId = info.ExternalId
|
||||
};
|
||||
|
||||
if (user != null)
|
||||
@@ -316,37 +314,40 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
public ProgramInfoDto GetProgramInfoDto(LiveTvProgram item, LiveTvChannel channel, User user = null)
|
||||
{
|
||||
var program = item.ProgramInfo;
|
||||
|
||||
var dto = new ProgramInfoDto
|
||||
{
|
||||
Id = GetInternalProgramId(item.ServiceName, program.Id).ToString("N"),
|
||||
ChannelId = GetInternalChannelId(item.ServiceName, program.ChannelId).ToString("N"),
|
||||
Overview = program.Overview,
|
||||
EndDate = program.EndDate,
|
||||
Genres = program.Genres,
|
||||
ExternalId = program.Id,
|
||||
Name = program.Name,
|
||||
Id = GetInternalProgramId(item.ServiceName, item.ExternalId).ToString("N"),
|
||||
ChannelId = GetInternalChannelId(item.ServiceName, item.ExternalChannelId).ToString("N"),
|
||||
Overview = item.Overview,
|
||||
Genres = item.Genres,
|
||||
ExternalId = item.ExternalId,
|
||||
Name = item.Name,
|
||||
ServiceName = item.ServiceName,
|
||||
StartDate = program.StartDate,
|
||||
OfficialRating = program.OfficialRating,
|
||||
IsHD = program.IsHD,
|
||||
OriginalAirDate = program.OriginalAirDate,
|
||||
Audio = program.Audio,
|
||||
CommunityRating = GetClientCommunityRating(program.CommunityRating),
|
||||
IsRepeat = program.IsRepeat,
|
||||
EpisodeTitle = program.EpisodeTitle,
|
||||
IsMovie = program.IsMovie,
|
||||
IsSeries = program.IsSeries,
|
||||
IsSports = program.IsSports,
|
||||
IsLive = program.IsLive,
|
||||
IsNews = program.IsNews,
|
||||
IsKids = program.IsKids,
|
||||
IsPremiere = program.IsPremiere,
|
||||
RunTimeTicks = (program.EndDate - program.StartDate).Ticks,
|
||||
StartDate = item.StartDate,
|
||||
OfficialRating = item.OfficialRating,
|
||||
IsHD = item.IsHD,
|
||||
OriginalAirDate = item.PremiereDate,
|
||||
Audio = item.Audio,
|
||||
CommunityRating = GetClientCommunityRating(item.CommunityRating),
|
||||
IsRepeat = item.IsRepeat,
|
||||
EpisodeTitle = item.EpisodeTitle,
|
||||
IsMovie = item.IsMovie,
|
||||
IsSeries = item.IsSeries,
|
||||
IsSports = item.IsSports,
|
||||
IsLive = item.IsLive,
|
||||
IsNews = item.IsNews,
|
||||
IsKids = item.IsKids,
|
||||
IsPremiere = item.IsPremiere,
|
||||
Type = "Program"
|
||||
};
|
||||
|
||||
if (item.EndDate.HasValue)
|
||||
{
|
||||
dto.EndDate = item.EndDate.Value;
|
||||
|
||||
dto.RunTimeTicks = (item.EndDate.Value - item.StartDate).Ticks;
|
||||
}
|
||||
|
||||
if (channel != null)
|
||||
{
|
||||
dto.ChannelName = channel.Name;
|
||||
|
||||
@@ -126,9 +126,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
double number = 0;
|
||||
|
||||
if (!string.IsNullOrEmpty(i.ChannelInfo.Number))
|
||||
if (!string.IsNullOrEmpty(i.Number))
|
||||
{
|
||||
double.TryParse(i.ChannelInfo.Number, out number);
|
||||
double.TryParse(i.Number, out number);
|
||||
}
|
||||
|
||||
return number;
|
||||
@@ -140,9 +140,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
double number = 0;
|
||||
|
||||
if (!string.IsNullOrEmpty(i.ChannelInfo.Number))
|
||||
if (!string.IsNullOrEmpty(i.Number))
|
||||
{
|
||||
double.TryParse(i.ChannelInfo.Number, out number);
|
||||
double.TryParse(i.Number, out number);
|
||||
}
|
||||
|
||||
return number;
|
||||
@@ -163,7 +163,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
}
|
||||
|
||||
var returnChannels = allEnumerable
|
||||
.Select(i => _tvDtoService.GetChannelInfoDto(i, GetCurrentProgram(i.ChannelInfo.Id), user))
|
||||
.Select(i => _tvDtoService.GetChannelInfoDto(i, GetCurrentProgram(i.ExternalId), user))
|
||||
.ToArray();
|
||||
|
||||
var result = new QueryResult<ChannelInfoDto>
|
||||
@@ -251,9 +251,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
var channel = GetInternalChannel(id);
|
||||
|
||||
_logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ChannelInfo.Id);
|
||||
_logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId);
|
||||
|
||||
var result = await service.GetChannelStream(channel.ChannelInfo.Id, cancellationToken).ConfigureAwait(false);
|
||||
var result = await service.GetChannelStream(channel.ExternalId, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (!string.IsNullOrEmpty(result.Id))
|
||||
{
|
||||
@@ -313,8 +313,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
isNew = true;
|
||||
}
|
||||
|
||||
item.ChannelInfo = channelInfo;
|
||||
item.ChannelType = channelInfo.ChannelType;
|
||||
item.ProviderImageUrl = channelInfo.ImageUrl;
|
||||
item.HasProviderImage = channelInfo.HasImage;
|
||||
item.ProviderImagePath = channelInfo.ImagePath;
|
||||
item.ExternalId = channelInfo.Id;
|
||||
item.ServiceName = serviceName;
|
||||
item.Number = channelInfo.Number;
|
||||
|
||||
if (string.IsNullOrEmpty(item.Name))
|
||||
{
|
||||
item.Name = channelInfo.Name;
|
||||
}
|
||||
|
||||
// Set this now so we don't cause additional file system access during provider executions
|
||||
item.ResetResolveArgs(fileInfo);
|
||||
@@ -346,9 +356,34 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
}
|
||||
|
||||
item.ChannelType = channelType;
|
||||
item.ProgramInfo = info;
|
||||
item.ServiceName = serviceName;
|
||||
|
||||
item.Audio = info.Audio;
|
||||
item.ExternalChannelId = info.ChannelId;
|
||||
item.CommunityRating = info.CommunityRating;
|
||||
item.EndDate = info.EndDate;
|
||||
item.EpisodeTitle = info.EpisodeTitle;
|
||||
item.ExternalId = info.Id;
|
||||
item.Genres = info.Genres;
|
||||
item.HasProviderImage = info.HasImage;
|
||||
item.IsHD = info.IsHD;
|
||||
item.IsKids = info.IsKids;
|
||||
item.IsLive = info.IsLive;
|
||||
item.IsMovie = info.IsMovie;
|
||||
item.IsNews = info.IsNews;
|
||||
item.IsPremiere = info.IsPremiere;
|
||||
item.IsRepeat = info.IsRepeat;
|
||||
item.IsSeries = info.IsSeries;
|
||||
item.IsSports = info.IsSports;
|
||||
item.Name = info.Name;
|
||||
item.OfficialRating = info.OfficialRating;
|
||||
item.Overview = info.Overview;
|
||||
item.PremiereDate = info.OriginalAirDate;
|
||||
item.ProviderImagePath = info.ImagePath;
|
||||
item.ProviderImageUrl = info.ImageUrl;
|
||||
item.RunTimeTicks = (info.EndDate - info.StartDate).Ticks;
|
||||
item.StartDate = info.StartDate;
|
||||
|
||||
await item.RefreshMetadata(cancellationToken, forceSave: isNew, resetResolveArgs: false);
|
||||
|
||||
return item;
|
||||
@@ -410,7 +445,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
private LiveTvChannel GetChannel(LiveTvProgram program)
|
||||
{
|
||||
var programChannelId = program.ProgramInfo.ChannelId;
|
||||
var programChannelId = program.ExternalChannelId;
|
||||
|
||||
var internalProgramChannelId = _tvDtoService.GetInternalChannelId(program.ServiceName, programChannelId);
|
||||
|
||||
@@ -438,28 +473,28 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
var val = query.MinEndDate.Value;
|
||||
|
||||
programs = programs.Where(i => i.ProgramInfo.EndDate >= val);
|
||||
programs = programs.Where(i => i.EndDate.HasValue && i.EndDate.Value >= val);
|
||||
}
|
||||
|
||||
if (query.MinStartDate.HasValue)
|
||||
{
|
||||
var val = query.MinStartDate.Value;
|
||||
|
||||
programs = programs.Where(i => i.ProgramInfo.StartDate >= val);
|
||||
programs = programs.Where(i => i.StartDate >= val);
|
||||
}
|
||||
|
||||
if (query.MaxEndDate.HasValue)
|
||||
{
|
||||
var val = query.MaxEndDate.Value;
|
||||
|
||||
programs = programs.Where(i => i.ProgramInfo.EndDate <= val);
|
||||
programs = programs.Where(i => i.EndDate.HasValue && i.EndDate.Value <= val);
|
||||
}
|
||||
|
||||
if (query.MaxStartDate.HasValue)
|
||||
{
|
||||
var val = query.MaxStartDate.Value;
|
||||
|
||||
programs = programs.Where(i => i.ProgramInfo.StartDate <= val);
|
||||
programs = programs.Where(i => i.StartDate <= val);
|
||||
}
|
||||
|
||||
if (query.ChannelIdList.Length > 0)
|
||||
@@ -469,7 +504,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
programs = programs.Where(i =>
|
||||
{
|
||||
var programChannelId = i.ProgramInfo.ChannelId;
|
||||
var programChannelId = i.ExternalChannelId;
|
||||
|
||||
var internalProgramChannelId = _tvDtoService.GetInternalChannelId(serviceName, programChannelId);
|
||||
|
||||
@@ -537,13 +572,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
.Select(i => _libraryManager.GetGenre(i))
|
||||
.ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
programs = programList.OrderByDescending(i => GetRecommendationScore(i.ProgramInfo, user.Id, serviceName, genres))
|
||||
.ThenBy(i => i.ProgramInfo.StartDate);
|
||||
programs = programList.OrderByDescending(i => GetRecommendationScore(i, user.Id, serviceName, genres))
|
||||
.ThenBy(i => i.StartDate);
|
||||
|
||||
if (query.Limit.HasValue)
|
||||
{
|
||||
programs = programs.Take(query.Limit.Value)
|
||||
.OrderBy(i => i.ProgramInfo.StartDate);
|
||||
.OrderBy(i => i.StartDate);
|
||||
}
|
||||
|
||||
var returnArray = programs
|
||||
@@ -566,7 +601,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
return result;
|
||||
}
|
||||
|
||||
private int GetRecommendationScore(ProgramInfo program, Guid userId, string serviceName, Dictionary<string, Genre> genres)
|
||||
private int GetRecommendationScore(LiveTvProgram program, Guid userId, string serviceName, Dictionary<string, Genre> genres)
|
||||
{
|
||||
var score = 0;
|
||||
|
||||
@@ -580,7 +615,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
score++;
|
||||
}
|
||||
|
||||
var internalChannelId = _tvDtoService.GetInternalChannelId(serviceName, program.ChannelId);
|
||||
var internalChannelId = _tvDtoService.GetInternalChannelId(serviceName, program.ExternalChannelId);
|
||||
var channel = GetInternalChannel(internalChannelId);
|
||||
|
||||
var channelUserdata = _userDataManager.GetUserData(userId, channel.GetUserDataKey());
|
||||
@@ -724,9 +759,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
var start = DateTime.UtcNow.AddHours(-1);
|
||||
var end = start.AddDays(guideDays);
|
||||
|
||||
var channelPrograms = await service.GetProgramsAsync(currentChannel.ChannelInfo.Id, start, end, cancellationToken).ConfigureAwait(false);
|
||||
var channelPrograms = await service.GetProgramsAsync(currentChannel.ExternalId, start, end, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var programTasks = channelPrograms.Select(program => GetProgram(program, currentChannel.ChannelInfo.ChannelType, service.Name, cancellationToken));
|
||||
var programTasks = channelPrograms.Select(program => GetProgram(program, currentChannel.ChannelType, service.Name, cancellationToken));
|
||||
var programEntities = await Task.WhenAll(programTasks).ConfigureAwait(false);
|
||||
|
||||
programs.AddRange(programEntities);
|
||||
@@ -1033,7 +1068,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
var internalChannelId = _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId);
|
||||
var channel = GetInternalChannel(internalChannelId);
|
||||
channelName = channel == null ? null : channel.ChannelInfo.Name;
|
||||
channelName = channel == null ? null : channel.Name;
|
||||
}
|
||||
|
||||
return _tvDtoService.GetSeriesTimerInfoDto(i, service, channelName);
|
||||
@@ -1052,7 +1087,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
var channel = GetInternalChannel(id);
|
||||
|
||||
var dto = _tvDtoService.GetChannelInfoDto(channel, GetCurrentProgram(channel.ChannelInfo.Id), user);
|
||||
var dto = _tvDtoService.GetChannelInfoDto(channel, GetCurrentProgram(channel.ExternalId), user);
|
||||
|
||||
return Task.FromResult(dto);
|
||||
}
|
||||
@@ -1062,15 +1097,48 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
var now = DateTime.UtcNow;
|
||||
|
||||
return _programs.Values
|
||||
.Where(i => string.Equals(externalChannelId, i.ProgramInfo.ChannelId, StringComparison.OrdinalIgnoreCase))
|
||||
.OrderBy(i => i.ProgramInfo.StartDate)
|
||||
.SkipWhile(i => now >= i.ProgramInfo.EndDate)
|
||||
.Where(i => string.Equals(externalChannelId, i.ExternalChannelId, StringComparison.OrdinalIgnoreCase))
|
||||
.OrderBy(i => i.StartDate)
|
||||
.SkipWhile(i => now >= (i.EndDate ?? DateTime.MinValue))
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
private async Task<SeriesTimerInfo> GetNewTimerDefaultsInternal(CancellationToken cancellationToken, ProgramInfo program = null)
|
||||
private async Task<SeriesTimerInfo> GetNewTimerDefaultsInternal(CancellationToken cancellationToken, LiveTvProgram program = null)
|
||||
{
|
||||
var info = await ActiveService.GetNewTimerDefaultsAsync(cancellationToken, program).ConfigureAwait(false);
|
||||
ProgramInfo programInfo = null;
|
||||
|
||||
if (program != null)
|
||||
{
|
||||
programInfo = new ProgramInfo
|
||||
{
|
||||
Audio = program.Audio,
|
||||
ChannelId = program.ExternalChannelId,
|
||||
CommunityRating = program.CommunityRating,
|
||||
EndDate = program.EndDate ?? DateTime.MinValue,
|
||||
EpisodeTitle = program.EpisodeTitle,
|
||||
Genres = program.Genres,
|
||||
HasImage = program.HasProviderImage,
|
||||
Id = program.ExternalId,
|
||||
IsHD = program.IsHD,
|
||||
IsKids = program.IsKids,
|
||||
IsLive = program.IsLive,
|
||||
IsMovie = program.IsMovie,
|
||||
IsNews = program.IsNews,
|
||||
IsPremiere = program.IsPremiere,
|
||||
IsRepeat = program.IsRepeat,
|
||||
IsSeries = program.IsSeries,
|
||||
IsSports = program.IsSports,
|
||||
OriginalAirDate = program.PremiereDate,
|
||||
Overview = program.Overview,
|
||||
StartDate = program.StartDate,
|
||||
ImagePath = program.ProviderImagePath,
|
||||
ImageUrl = program.ProviderImageUrl,
|
||||
Name = program.Name,
|
||||
OfficialRating = program.OfficialRating
|
||||
};
|
||||
}
|
||||
|
||||
var info = await ActiveService.GetNewTimerDefaultsAsync(cancellationToken, programInfo).ConfigureAwait(false);
|
||||
|
||||
info.Id = null;
|
||||
|
||||
@@ -1088,7 +1156,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
public async Task<SeriesTimerInfoDto> GetNewTimerDefaults(string programId, CancellationToken cancellationToken)
|
||||
{
|
||||
var program = GetInternalProgram(programId).ProgramInfo;
|
||||
var program = GetInternalProgram(programId);
|
||||
var programDto = await GetProgram(programId, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var defaults = await GetNewTimerDefaultsInternal(cancellationToken, program).ConfigureAwait(false);
|
||||
@@ -1104,13 +1172,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
info.Name = program.Name;
|
||||
info.ChannelId = programDto.ChannelId;
|
||||
info.ChannelName = programDto.ChannelName;
|
||||
info.EndDate = program.EndDate;
|
||||
info.StartDate = program.StartDate;
|
||||
info.Name = program.Name;
|
||||
info.Overview = program.Overview;
|
||||
info.ProgramId = programDto.Id;
|
||||
info.ExternalProgramId = programDto.ExternalId;
|
||||
|
||||
if (program.EndDate.HasValue)
|
||||
{
|
||||
info.EndDate = program.EndDate.Value;
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@@ -1299,8 +1371,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
var programs = _programs.ToList();
|
||||
|
||||
var startDate = programs.Select(i => i.Value.ProgramInfo.StartDate).Min();
|
||||
var endDate = programs.Select(i => i.Value.ProgramInfo.StartDate).Max();
|
||||
var startDate = programs.Select(i => i.Value.StartDate).Min();
|
||||
var endDate = programs.Select(i => i.Value.StartDate).Max();
|
||||
|
||||
return new GuideInfo
|
||||
{
|
||||
|
||||
@@ -76,22 +76,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
private async Task<bool> DownloadImage(LiveTvProgram item, CancellationToken cancellationToken)
|
||||
{
|
||||
var programInfo = item.ProgramInfo;
|
||||
|
||||
Stream imageStream = null;
|
||||
string contentType = null;
|
||||
|
||||
if (!string.IsNullOrEmpty(programInfo.ImagePath))
|
||||
if (!string.IsNullOrEmpty(item.ProviderImagePath))
|
||||
{
|
||||
contentType = "image/" + Path.GetExtension(programInfo.ImagePath).ToLower();
|
||||
imageStream = _fileSystem.GetFileStream(programInfo.ImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true);
|
||||
contentType = "image/" + Path.GetExtension(item.ProviderImagePath).ToLower();
|
||||
imageStream = _fileSystem.GetFileStream(item.ProviderImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(programInfo.ImageUrl))
|
||||
else if (!string.IsNullOrEmpty(item.ProviderImageUrl))
|
||||
{
|
||||
var options = new HttpRequestOptions
|
||||
{
|
||||
CancellationToken = cancellationToken,
|
||||
Url = programInfo.ImageUrl
|
||||
Url = item.ProviderImageUrl
|
||||
};
|
||||
|
||||
var response = await _httpClient.GetResponse(options).ConfigureAwait(false);
|
||||
@@ -105,7 +103,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
imageStream = response.Content;
|
||||
contentType = response.ContentType;
|
||||
}
|
||||
else if (programInfo.HasImage ?? true)
|
||||
else if (item.HasProviderImage ?? true)
|
||||
{
|
||||
var service = _liveTvManager.Services.FirstOrDefault(i => string.Equals(i.Name, item.ServiceName, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
@@ -113,7 +111,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await service.GetProgramImageAsync(programInfo.Id, programInfo.ChannelId, cancellationToken).ConfigureAwait(false);
|
||||
var response = await service.GetProgramImageAsync(item.ExternalId, item.ExternalChannelId, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
@@ -131,7 +129,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
if (imageStream != null)
|
||||
{
|
||||
// Dummy up the original url
|
||||
var url = item.ServiceName + programInfo.Id;
|
||||
var url = item.ServiceName + item.ExternalId;
|
||||
|
||||
await _providerManager.SaveImage(item, imageStream, contentType, ImageType.Primary, null, url, cancellationToken).ConfigureAwait(false);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user