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.
106 lines
3.1 KiB
JSON
106 lines
3.1 KiB
JSON
{
|
|
"Logging": {
|
|
"LogLevel": {
|
|
"Default": "Information",
|
|
"Microsoft.Hosting.Lifetime": "Information"
|
|
}
|
|
},
|
|
"Database": {
|
|
"ConnectionString": ""
|
|
},
|
|
"MassTransit": {
|
|
"Address": "",
|
|
"Username": "",
|
|
"Password": ""
|
|
},
|
|
"OpenTelemetry": {
|
|
"OtlpEndpoint": ""
|
|
},
|
|
"InfrastructureStorage": {
|
|
"Address": "",
|
|
"AccessKey": "",
|
|
"SecretAccessKey": "",
|
|
"ForcePathStyle": false,
|
|
"UseHttp": false
|
|
},
|
|
"ApplicationStorage": {
|
|
"Bucket": ""
|
|
},
|
|
"Mix": {
|
|
"ArtistMixCount": 3,
|
|
"ItemsPerMix": 12,
|
|
"SeedArtistCount": 3,
|
|
"YouTubeResultsPerSeed": 12
|
|
},
|
|
"PlayList": {
|
|
"Routes": {
|
|
"ParentFolders": "PlayLists",
|
|
"OriginalPicturesFolder": "OriginalPictures",
|
|
"SmallPicturesFolder": "SmallPictures",
|
|
"MediumPicturesFolder": "MediumPictures",
|
|
"LargePicturesFolder": "LargePictures"
|
|
},
|
|
"PicturesSizes": {
|
|
"SmallPictureWidth": 128,
|
|
"SmallPictureHeight": 128,
|
|
"MediumPictureWidth": 256,
|
|
"MediumPictureHeight": 256,
|
|
"LargePictureWidth": 512,
|
|
"LargePictureHeight": 512
|
|
}
|
|
},
|
|
"Track": {
|
|
"Routes": {
|
|
"ParentFolder": "Tracks",
|
|
"OriginalPicturesFolder": "OriginalPictures",
|
|
"SmallPicturesFolder": "SmallPictures",
|
|
"MediumPicturesFolder": "MediumPictures",
|
|
"LargePicturesFolder": "LargePictures",
|
|
"PresetOriginalPicture": "PresetOriginalPicture.webp",
|
|
"PresetSmallPicture": "PresetSmallPicture.webp",
|
|
"PresetMediumPicture": "PresetMediumPicture.webp",
|
|
"PresetLargePicture": "PresetLargePicture.webp",
|
|
"OriginalAudiosFolder": "OriginalAudios",
|
|
"ProcessedAudioFolder": "ProcessedAudios"
|
|
},
|
|
"PicturesSizes": {
|
|
"SmallPictureWidth": 128,
|
|
"SmallPictureHeight": 128,
|
|
"MediumPictureWidth": 256,
|
|
"MediumPictureHeight": 256,
|
|
"LargePictureWidth": 512,
|
|
"LargePictureHeight": 512
|
|
}
|
|
},
|
|
"AudioTranscoder": {
|
|
"Routes": {
|
|
"WorkingDirectory": ""
|
|
},
|
|
"TranscodingTimeout": "00:05:00"
|
|
},
|
|
"YtDlp": {
|
|
"ExecutableName": "yt-dlp",
|
|
"Format": "bestaudio",
|
|
"AdditionalArguments": "",
|
|
"DownloadTimeout": "00:05:00"
|
|
},
|
|
"Workers": {
|
|
"Routes": {
|
|
"TemporaryFilesDirectory": ""
|
|
}
|
|
},
|
|
"UploadIntent": {
|
|
"UploadUrlExpiresInSeconds": 120,
|
|
"MaxActiveUploadIntentsPerUser": 5,
|
|
"MaxActiveUploadBytesPerUser": 209715200,
|
|
"MaxUploadBytes": 104857600,
|
|
"DefaultExpectedPictureSizeBytes": 10485760,
|
|
"DefaultExpectedAudioSizeBytes": 104857600,
|
|
"ExpirationJobIntervalSeconds": 300,
|
|
"ExpiredIntentsRetentionDays": 7,
|
|
"TempRootPrefix": "temp",
|
|
"TempUploadsRetentionDays": 3,
|
|
"TempCleanupJobIntervalSeconds": 3600
|
|
}
|
|
}
|