mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
updated mbt api
This commit is contained in:
parent
2c0d8ca2ea
commit
9c4e8f3381
@ -119,12 +119,13 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
var fields = new List<ItemFields>();
|
var fields = new List<ItemFields>();
|
||||||
|
|
||||||
view.BackdropItems = FilterItemsForBackdropDisplay(itemsWithBackdrops.OrderBy(i => Guid.NewGuid()))
|
view.BackdropItems = FilterItemsForBackdropDisplay(itemsWithBackdrops)
|
||||||
|
.Randomize("backdrop")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var spotlightItems = itemsWithBackdrops.OrderBy(i => Guid.NewGuid())
|
var spotlightItems = itemsWithBackdrops.Randomize("spotlight")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@ -133,59 +134,59 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
fields.Add(ItemFields.PrimaryImageAspectRatio);
|
fields.Add(ItemFields.PrimaryImageAspectRatio);
|
||||||
|
|
||||||
view.Albums = itemsWithImages
|
view.Albums = itemsWithImages
|
||||||
.OfType<MusicAlbum>()
|
.OfType<MusicAlbum>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(4)
|
.Take(4)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.Books = itemsWithImages
|
view.Books = itemsWithImages
|
||||||
.OfType<Book>()
|
.OfType<Book>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(6)
|
.Take(6)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.Episodes = itemsWithImages
|
view.Episodes = itemsWithImages
|
||||||
.OfType<Episode>()
|
.OfType<Episode>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(6)
|
.Take(6)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.Games = itemsWithImages
|
view.Games = itemsWithImages
|
||||||
.OfType<Game>()
|
.OfType<Game>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(6)
|
.Take(6)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.Movies = itemsWithImages
|
view.Movies = itemsWithImages
|
||||||
.OfType<Movie>()
|
.OfType<Movie>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(6)
|
.Take(6)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.Series = itemsWithImages
|
view.Series = itemsWithImages
|
||||||
.OfType<Series>()
|
.OfType<Series>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(6)
|
.Take(6)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.Songs = itemsWithImages
|
view.Songs = itemsWithImages
|
||||||
.OfType<Audio>()
|
.OfType<Audio>()
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(4)
|
.Take(4)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.MiniSpotlights = itemsWithBackdrops
|
view.MiniSpotlights = itemsWithBackdrops
|
||||||
.Except(spotlightItems)
|
.Except(spotlightItems)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Take(5)
|
.Take(5)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -204,7 +205,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
return list;
|
return list;
|
||||||
})
|
})
|
||||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Select(i =>
|
.Select(i =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -245,27 +246,27 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
var fields = new List<ItemFields>();
|
var fields = new List<ItemFields>();
|
||||||
|
|
||||||
view.BackdropItems = gamesWithBackdrops
|
view.BackdropItems = gamesWithBackdrops
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("backdrop")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.SpotlightItems = gamesWithBackdrops
|
view.SpotlightItems = gamesWithBackdrops
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("spotlight")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.MultiPlayerItems = gamesWithImages
|
view.MultiPlayerItems = gamesWithImages
|
||||||
.Where(i => i.PlayersSupported.HasValue && i.PlayersSupported.Value > 1)
|
.Where(i => i.PlayersSupported.HasValue && i.PlayersSupported.Value > 1)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Select(i => GetItemStub(i, ImageType.Primary))
|
.Select(i => GetItemStub(i, ImageType.Primary))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.MiniSpotlights = gamesWithBackdrops
|
view.MiniSpotlights = gamesWithBackdrops
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("minispotlight")
|
||||||
.Take(5)
|
.Take(5)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -293,7 +294,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
var seriesWithBestBackdrops = FilterItemsForBackdropDisplay(seriesWithBackdrops).ToList();
|
var seriesWithBestBackdrops = FilterItemsForBackdropDisplay(seriesWithBackdrops).ToList();
|
||||||
|
|
||||||
view.BackdropItems = seriesWithBestBackdrops
|
view.BackdropItems = seriesWithBestBackdrops
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("backdrop")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.AsParallel()
|
.AsParallel()
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
@ -301,7 +302,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.ShowsItems = series
|
view.ShowsItems = series
|
||||||
.Where(i => i.BackdropImagePaths.Count > 0)
|
.Where(i => i.BackdropImagePaths.Count > 0)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("all")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -309,7 +310,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.RomanceItems = seriesWithBackdrops
|
view.RomanceItems = seriesWithBackdrops
|
||||||
.Where(i => i.Genres.Any(romanceGenres.ContainsKey))
|
.Where(i => i.Genres.Any(romanceGenres.ContainsKey))
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("romance")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -317,7 +318,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.ComedyItems = seriesWithBackdrops
|
view.ComedyItems = seriesWithBackdrops
|
||||||
.Where(i => i.Genres.Any(comedyGenres.ContainsKey))
|
.Where(i => i.Genres.Any(comedyGenres.ContainsKey))
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("comedy")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -335,7 +336,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
}
|
}
|
||||||
|
|
||||||
spotlightSeries = spotlightSeries
|
spotlightSeries = spotlightSeries
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("spotlight")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@ -355,7 +356,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
}
|
}
|
||||||
|
|
||||||
view.MiniSpotlights = miniSpotlightItems
|
view.MiniSpotlights = miniSpotlightItems
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("minispotlight")
|
||||||
.Take(5)
|
.Take(5)
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -416,7 +417,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
var trailers = items.OfType<Trailer>()
|
var trailers = items.OfType<Trailer>()
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var hdMovies = movies.Where(i => i.IsHD).ToList();
|
var hdMovies = movies.Where(i => i.IsHD).ToList();
|
||||||
|
|
||||||
var familyGenres = request.FamilyGenre.Split(',').ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
|
var familyGenres = request.FamilyGenre.Split(',').ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
|
||||||
@ -438,14 +439,14 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
var itemsWithTopBackdrops = FilterItemsForBackdropDisplay(itemsWithBackdrops).ToList();
|
var itemsWithTopBackdrops = FilterItemsForBackdropDisplay(itemsWithBackdrops).ToList();
|
||||||
|
|
||||||
view.BackdropItems = itemsWithTopBackdrops
|
view.BackdropItems = itemsWithTopBackdrops
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("backdrop")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.AsParallel()
|
.AsParallel()
|
||||||
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
view.MovieItems = moviesWithBackdrops
|
view.MovieItems = moviesWithBackdrops
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("all")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -453,7 +454,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.TrailerItems = trailers
|
view.TrailerItems = trailers
|
||||||
.Where(i => !string.IsNullOrEmpty(i.PrimaryImagePath))
|
.Where(i => !string.IsNullOrEmpty(i.PrimaryImagePath))
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Select(i => GetItemStub(i, ImageType.Primary))
|
.Select(i => GetItemStub(i, ImageType.Primary))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -462,7 +463,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
view.BoxSetItems = items
|
view.BoxSetItems = items
|
||||||
.OfType<BoxSet>()
|
.OfType<BoxSet>()
|
||||||
.Where(i => i.BackdropImagePaths.Count > 0)
|
.Where(i => i.BackdropImagePaths.Count > 0)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -470,7 +471,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.ThreeDItems = moviesWithBackdrops
|
view.ThreeDItems = moviesWithBackdrops
|
||||||
.Where(i => i.Is3D)
|
.Where(i => i.Is3D)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("3d")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -481,7 +482,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.RomanceItems = moviesWithBackdrops
|
view.RomanceItems = moviesWithBackdrops
|
||||||
.Where(i => i.Genres.Any(romanceGenres.ContainsKey))
|
.Where(i => i.Genres.Any(romanceGenres.ContainsKey))
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("romance")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -489,7 +490,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.ComedyItems = moviesWithBackdrops
|
view.ComedyItems = moviesWithBackdrops
|
||||||
.Where(i => i.Genres.Any(comedyGenres.ContainsKey))
|
.Where(i => i.Genres.Any(comedyGenres.ContainsKey))
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("comedy")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -497,7 +498,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.HDItems = hdMovies
|
view.HDItems = hdMovies
|
||||||
.Where(i => i.BackdropImagePaths.Count > 0)
|
.Where(i => i.BackdropImagePaths.Count > 0)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("hd")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -505,7 +506,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
|
|
||||||
view.FamilyMovies = familyMovies
|
view.FamilyMovies = familyMovies
|
||||||
.Where(i => i.BackdropImagePaths.Count > 0)
|
.Where(i => i.BackdropImagePaths.Count > 0)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("family")
|
||||||
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
.Select(i => GetItemStub(i, ImageType.Backdrop))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -523,7 +524,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
}
|
}
|
||||||
|
|
||||||
spotlightItems = spotlightItems
|
spotlightItems = spotlightItems
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("spotlight")
|
||||||
.Take(10)
|
.Take(10)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@ -543,7 +544,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
}
|
}
|
||||||
|
|
||||||
miniSpotlightItems = miniSpotlightItems
|
miniSpotlightItems = miniSpotlightItems
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize("minispotlight")
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
// Avoid implicitly captured closure
|
// Avoid implicitly captured closure
|
||||||
@ -615,7 +616,7 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
var actors = mediaItems.SelectMany(i => i.People)
|
var actors = mediaItems.SelectMany(i => i.People)
|
||||||
.Select(i => i.Name)
|
.Select(i => i.Name)
|
||||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||||
.OrderBy(i => Guid.NewGuid())
|
.Randomize()
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var result = actors.Select(actor =>
|
var result = actors.Select(actor =>
|
||||||
@ -697,4 +698,29 @@ namespace MediaBrowser.Api.DefaultTheme
|
|||||||
return stub;
|
return stub;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class RandomExtension
|
||||||
|
{
|
||||||
|
public static IEnumerable<T> Randomize<T>(this IEnumerable<T> sequence, string type = "none")
|
||||||
|
where T : BaseItem
|
||||||
|
{
|
||||||
|
var hour = DateTime.Now.Hour + 2;
|
||||||
|
|
||||||
|
var typeCode = type.GetHashCode();
|
||||||
|
|
||||||
|
return sequence.OrderBy(i =>
|
||||||
|
{
|
||||||
|
var val = i.Id.GetHashCode() + i.Genres.Count + i.People.Count + (i.ProductionYear ?? 0) + i.DateCreated.Minute + i.DateModified.Minute + typeCode;
|
||||||
|
|
||||||
|
return val % hour;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<string> Randomize(this IEnumerable<string> sequence)
|
||||||
|
{
|
||||||
|
var hour = DateTime.Now.Hour + 2;
|
||||||
|
|
||||||
|
return sequence.OrderBy(i => i.GetHashCode() % hour);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user