Remove YouTube integration from backend and deployment config

Drops the YouTube-backed second catalog source entirely: the
Local/External split on Track/Album collapses into single concrete
entities, Artist/TrackArtist/ExternalTrack/ExternalAlbum and the
YouTube service/download pipeline (yt-dlp, MassTransit consumer,
routing slip) are deleted, and mixes now source discovery only from
local listening history. Includes the RemoveYouTubeIntegration EF
Core migration and matching Worker/deploy/compose cleanup (no more
yt-dlp/python/deno in the Worker image, no thumbnail-cache/YtDlp
config sections).
This commit is contained in:
2026-09-15 21:17:03 +02:00
parent 5696683859
commit 31032bd8e8
137 changed files with 1933 additions and 3969 deletions
@@ -1,59 +0,0 @@
using ErrorOr;
using Musify.Infrastructure.Services;
using Xunit;
namespace Musify.Infrastructure.Tests.Services
{
public sealed class DisabledYouTubeMusicServiceTests
{
private readonly DisabledYouTubeMusicService service = new();
[Fact]
public async Task SearchSongsAsync_ReturnsForbidden()
{
var result = await service.SearchSongsAsync("query", string.Empty, TestContext.Current.CancellationToken);
Assert.Equal(ErrorType.Forbidden, result.FirstError.Type);
}
[Fact]
public async Task SearchAlbumsAsync_ReturnsForbidden()
{
var result = await service.SearchAlbumsAsync("query", string.Empty, TestContext.Current.CancellationToken);
Assert.Equal(ErrorType.Forbidden, result.FirstError.Type);
}
[Fact]
public async Task GetAlbumAsync_ReturnsForbidden()
{
var result = await service.GetAlbumAsync("album-1", TestContext.Current.CancellationToken);
Assert.Equal(ErrorType.Forbidden, result.FirstError.Type);
}
[Fact]
public async Task GetAudioStreamAsync_ReturnsForbidden()
{
var result = await service.GetAudioStreamAsync("video-1", TestContext.Current.CancellationToken);
Assert.Equal(ErrorType.Forbidden, result.FirstError.Type);
}
[Fact]
public async Task GetSongAsync_ReturnsForbidden()
{
var result = await service.GetSongAsync("video-1", TestContext.Current.CancellationToken);
Assert.Equal(ErrorType.Forbidden, result.FirstError.Type);
}
[Fact]
public void ResolveArtworkUrl_ReturnsTheUrlUnchanged()
{
var result = service.ResolveArtworkUrl("https://img.example/thumb.jpg");
Assert.Equal("https://img.example/thumb.jpg", result);
}
}
}