Mixes are their own concept, not playlists: they live in their own Mixes/MixItems tables, cannot be edited and never show up among the user's playlists. Each item is either a Musify track or a YouTube Music reference, so YouTube songs stream directly instead of being downloaded. A daily Hangfire job seeds the mixes from the listening history: one discovery mix, one daily mix and one per top artist. The per-user YouTube filler query was already in the working tree and rides along here because it shares files with this change.
28 lines
743 B
C#
28 lines
743 B
C#
using Musify.Domain.Entities;
|
|
using Musify.Domain.ValueObjects;
|
|
|
|
namespace Musify.Application.Mixes.Responses
|
|
{
|
|
public record MixItemApplicationResponse(
|
|
MixItemSource Source,
|
|
Guid? TrackId,
|
|
string? VideoId,
|
|
string Title,
|
|
string? Artist,
|
|
string? ThumbnailUrl,
|
|
int DurationSeconds,
|
|
bool IsExplicit)
|
|
{
|
|
public static MixItemApplicationResponse FromEntity(MixItem item) =>
|
|
new(
|
|
item.Source,
|
|
item.TrackId,
|
|
item.VideoId,
|
|
item.Title ?? string.Empty,
|
|
item.Artist,
|
|
item.ThumbnailUrl,
|
|
item.DurationSeconds,
|
|
item.IsExplicit);
|
|
}
|
|
}
|