diff --git a/Morpheus.Tests/YoutubeUtilsTests.cs b/Morpheus.Tests/YoutubeUtilsTests.cs index 741975b..309b32c 100644 --- a/Morpheus.Tests/YoutubeUtilsTests.cs +++ b/Morpheus.Tests/YoutubeUtilsTests.cs @@ -11,6 +11,7 @@ public class YoutubeUtilsTests [InlineData("https://example.com/@channel")] [InlineData("http://127.0.0.1/private")] [InlineData("https://www.youtube.com.example.com/@channel")] + [InlineData("https://evil.youtube.com/@channel")] [InlineData("https://example.com/channel/UCabcdefghijklmnopqrstuv")] [InlineData("example.com/channel/UCabcdefghijklmnopqrstuv")] [InlineData("//example.com/channel/UCabcdefghijklmnopqrstuv")] @@ -31,6 +32,7 @@ public async Task ResolveChannelIdAsync_DoesNotRequestNonYoutubeUrls(string inpu [InlineData("https://www.youtube.com/@channel", "/@channel", "")] [InlineData("youtube.com/user/channel", "/user/channel", "")] [InlineData("https://m.youtube.com/c/channel?feature=share", "/c/channel", "")] + [InlineData("https://music.youtube.com/@channel", "/@channel", "")] [InlineData("https://youtu.be/dQw4w9WgXcQ?si=tracking", "/watch", "?v=dQw4w9WgXcQ")] [InlineData("@channel", "/@channel", "")] public async Task ResolveChannelIdAsync_RequestsCanonicalYoutubeUrls( @@ -55,6 +57,7 @@ public async Task ResolveChannelIdAsync_RequestsCanonicalYoutubeUrls( [Theory] [InlineData("https://www.youtube.com/channel/UCabcdefghijklmnopqrstuv")] + [InlineData("https://music.youtube.com/channel/UCabcdefghijklmnopqrstuv")] [InlineData("youtube.com/channel/UCabcdefghijklmnopqrstuv")] [InlineData("/channel/UCabcdefghijklmnopqrstuv")] public async Task ResolveChannelIdAsync_ReturnsIdsFromYoutubeChannelPathsWithoutRequesting(string input) diff --git a/Utilities/YoutubeUtils.cs b/Utilities/YoutubeUtils.cs index 350d7fb..29ba744 100644 --- a/Utilities/YoutubeUtils.cs +++ b/Utilities/YoutubeUtils.cs @@ -142,7 +142,9 @@ public static partial class YoutubeUtils private static bool IsYoutubeHost(string host) => host.Equals("youtube.com", StringComparison.OrdinalIgnoreCase) || - host.EndsWith(".youtube.com", StringComparison.OrdinalIgnoreCase); + host.Equals("www.youtube.com", StringComparison.OrdinalIgnoreCase) || + host.Equals("m.youtube.com", StringComparison.OrdinalIgnoreCase) || + host.Equals("music.youtube.com", StringComparison.OrdinalIgnoreCase); private static bool IsSupportedYoutubePath(string path) => path.StartsWith("/@", StringComparison.OrdinalIgnoreCase) ||