mirror of https://github.com/jellyfin/jellyfin.git
LiveTV fixes
This commit is contained in:
parent
7b1bd9f234
commit
32eccc139c
|
@ -5440,6 +5440,9 @@ AND Type = @InternalPersonType)");
|
||||||
|
|
||||||
list.AddRange(inheritedTags.Select(i => (6, i)));
|
list.AddRange(inheritedTags.Select(i => (6, i)));
|
||||||
|
|
||||||
|
// Remove all invalid values.
|
||||||
|
list.RemoveAll(i => string.IsNullOrEmpty(i.Item2));
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,32 +137,33 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||||
|
|
||||||
private static ProgramInfo GetProgramInfo(XmlTvProgram program, ListingsProviderInfo info)
|
private static ProgramInfo GetProgramInfo(XmlTvProgram program, ListingsProviderInfo info)
|
||||||
{
|
{
|
||||||
string episodeTitle = program.Episode?.Title;
|
string episodeTitle = program.Episode.Title;
|
||||||
|
var programCategories = program.Categories.Where(c => !string.IsNullOrWhiteSpace(c)).ToList();
|
||||||
|
|
||||||
var programInfo = new ProgramInfo
|
var programInfo = new ProgramInfo
|
||||||
{
|
{
|
||||||
ChannelId = program.ChannelId,
|
ChannelId = program.ChannelId,
|
||||||
EndDate = program.EndDate.UtcDateTime,
|
EndDate = program.EndDate.UtcDateTime,
|
||||||
EpisodeNumber = program.Episode?.Episode,
|
EpisodeNumber = program.Episode.Episode,
|
||||||
EpisodeTitle = episodeTitle,
|
EpisodeTitle = episodeTitle,
|
||||||
Genres = program.Categories,
|
Genres = programCategories,
|
||||||
StartDate = program.StartDate.UtcDateTime,
|
StartDate = program.StartDate.UtcDateTime,
|
||||||
Name = program.Title,
|
Name = program.Title,
|
||||||
Overview = program.Description,
|
Overview = program.Description,
|
||||||
ProductionYear = program.CopyrightDate?.Year,
|
ProductionYear = program.CopyrightDate?.Year,
|
||||||
SeasonNumber = program.Episode?.Series,
|
SeasonNumber = program.Episode.Series,
|
||||||
IsSeries = program.Episode is not null,
|
IsSeries = program.Episode.Series is not null,
|
||||||
IsRepeat = program.IsPreviouslyShown && !program.IsNew,
|
IsRepeat = program.IsPreviouslyShown && !program.IsNew,
|
||||||
IsPremiere = program.Premiere is not null,
|
IsPremiere = program.Premiere is not null,
|
||||||
IsKids = program.Categories.Any(c => info.KidsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
IsKids = programCategories.Any(c => info.KidsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
||||||
IsMovie = program.Categories.Any(c => info.MovieCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
IsMovie = programCategories.Any(c => info.MovieCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
||||||
IsNews = program.Categories.Any(c => info.NewsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
IsNews = programCategories.Any(c => info.NewsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
||||||
IsSports = program.Categories.Any(c => info.SportsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
IsSports = programCategories.Any(c => info.SportsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
|
||||||
ImageUrl = string.IsNullOrEmpty(program.Icon?.Source) ? null : program.Icon.Source,
|
ImageUrl = string.IsNullOrEmpty(program.Icon?.Source) ? null : program.Icon.Source,
|
||||||
HasImage = !string.IsNullOrEmpty(program.Icon?.Source),
|
HasImage = !string.IsNullOrEmpty(program.Icon?.Source),
|
||||||
OfficialRating = string.IsNullOrEmpty(program.Rating?.Value) ? null : program.Rating.Value,
|
OfficialRating = string.IsNullOrEmpty(program.Rating?.Value) ? null : program.Rating.Value,
|
||||||
CommunityRating = program.StarRating,
|
CommunityRating = program.StarRating,
|
||||||
SeriesId = program.Episode is null ? null : program.Title?.GetMD5().ToString("N", CultureInfo.InvariantCulture)
|
SeriesId = program.Episode.Episode is null ? null : program.Title?.GetMD5().ToString("N", CultureInfo.InvariantCulture)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(program.ProgramId))
|
if (string.IsNullOrWhiteSpace(program.ProgramId))
|
||||||
|
@ -243,7 +244,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||||
{
|
{
|
||||||
Id = c.Id,
|
Id = c.Id,
|
||||||
Name = c.DisplayName,
|
Name = c.DisplayName,
|
||||||
ImageUrl = string.IsNullOrEmpty(c.Icon.Source) ? null : c.Icon.Source,
|
ImageUrl = string.IsNullOrEmpty(c.Icon?.Source) ? null : c.Icon.Source,
|
||||||
Number = string.IsNullOrWhiteSpace(c.Number) ? c.Id : c.Number
|
Number = string.IsNullOrWhiteSpace(c.Number) ? c.Id : c.Number
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,4 +67,23 @@ public class XmlTvListingsProviderTests
|
||||||
Assert.Equal("https://domain.tld/image.png", program.ImageUrl);
|
Assert.Equal("https://domain.tld/image.png", program.ImageUrl);
|
||||||
Assert.Equal("3297", program.ChannelId);
|
Assert.Equal("3297", program.ChannelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData("Test Data/LiveTv/Listings/XmlTv/emptycategory.xml")]
|
||||||
|
[InlineData("https://example.com/emptycategory.xml")]
|
||||||
|
public async Task GetProgramsAsync_EmptyCategories_Success(string path)
|
||||||
|
{
|
||||||
|
var info = new ListingsProviderInfo()
|
||||||
|
{
|
||||||
|
Path = path
|
||||||
|
};
|
||||||
|
|
||||||
|
var startDate = new DateTime(2022, 11, 4);
|
||||||
|
var programs = await _xmlTvListingsProvider.GetProgramsAsync(info, "3297", startDate, startDate.AddDays(1), CancellationToken.None);
|
||||||
|
var programsList = programs.ToList();
|
||||||
|
Assert.Single(programsList);
|
||||||
|
var program = programsList[0];
|
||||||
|
Assert.DoesNotContain(program.Genres, g => string.Equals(g, string.Empty, StringComparison.Ordinal));
|
||||||
|
Assert.Equal("3297", program.ChannelId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<tv date="20221104">
|
||||||
|
<programme channel="3297" start="20221104130000 -0400" stop="20221105235959 -0400">
|
||||||
|
<category lang="en" />
|
||||||
|
<category lang="en">sports</category>
|
||||||
|
</programme>
|
||||||
|
</tv>
|
Loading…
Reference in New Issue