Browse Source

group music videos by album (#1849)

pull/1850/head
Jason Dove 1 year ago committed by GitHub
parent
commit
efdf0bb6d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 23
      ErsatzTV.Core/Extensions/StringExtensions.cs
  2. 10
      ErsatzTV.Core/Scheduling/YamlScheduling/YamlPlayoutMarathonHelper.cs
  3. 1
      ErsatzTV.Infrastructure/Data/Repositories/MediaCollectionRepository.cs

23
ErsatzTV.Core/Extensions/StringExtensions.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
namespace ErsatzTV.Core.Extensions;
public static class StringExtensions
{
public static int GetStableHashCode(this string str)
{
unchecked
{
int hash1 = 5381;
int hash2 = hash1;
for (int i = 0; i < str.Length && str[i] != '\0'; i += 2)
{
hash1 = ((hash1 << 5) + hash1) ^ str[i];
if (i == str.Length - 1 || str[i + 1] == '\0')
break;
hash2 = ((hash2 << 5) + hash2) ^ str[i + 1];
}
return hash1 + (hash2 * 1566083941);
}
}
}

10
ErsatzTV.Core/Scheduling/YamlScheduling/YamlPlayoutMarathonHelper.cs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Extensions;
using ErsatzTV.Core.Interfaces.Repositories;
using ErsatzTV.Core.Interfaces.Scheduling;
using ErsatzTV.Core.Scheduling.YamlScheduling.Models;
@ -111,7 +112,14 @@ public class YamlPlayoutMarathonHelper(IMediaCollectionRepository mediaCollectio @@ -111,7 +112,14 @@ public class YamlPlayoutMarathonHelper(IMediaCollectionRepository mediaCollectio
{
Song s => new GroupKey(
ProgramScheduleItemCollectionType.Collection,
s.SongMetadata.HeadOrNone().Map(sm => sm.Album.GetHashCode()).IfNone(0),
s.SongMetadata.HeadOrNone().Map(sm => sm.Album.GetStableHashCode()).IfNone(0),
null,
null,
null),
MusicVideo mv => new GroupKey(
ProgramScheduleItemCollectionType.Collection,
mv.MusicVideoMetadata.HeadOrNone()
.Map(mvm => $"{mv.ArtistId}-${mvm.Album}".GetStableHashCode()).IfNone(0),
null,
null,
null),

1
ErsatzTV.Infrastructure/Data/Repositories/MediaCollectionRepository.cs

@ -1069,6 +1069,7 @@ public class MediaCollectionRepository : IMediaCollectionRepository @@ -1069,6 +1069,7 @@ public class MediaCollectionRepository : IMediaCollectionRepository
.Include(m => m.Artist)
.ThenInclude(a => a.ArtistMetadata)
.Include(m => m.MusicVideoMetadata)
.ThenInclude(mvm => mvm.Artists)
.Include(m => m.MediaVersions)
.ThenInclude(mv => mv.Chapters)
.Include(m => m.MediaVersions)

Loading…
Cancel
Save