From e232b1cdda17a9a455a4343f3df4eafef1a68fff Mon Sep 17 00:00:00 2001 From: jbannon Date: Sun, 5 Jun 2022 15:29:23 +0000 Subject: [PATCH] soundcloud username --- src/ytdl_sub/validators/url_validator.py | 20 ++++++++++---------- tests/unit/validators/test_url_validator.py | 12 ++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/ytdl_sub/validators/url_validator.py b/src/ytdl_sub/validators/url_validator.py index 20498f35..a934af10 100644 --- a/src/ytdl_sub/validators/url_validator.py +++ b/src/ytdl_sub/validators/url_validator.py @@ -145,9 +145,9 @@ class YoutubeChannelUrlValidator(StringValidator): return self._channel_url -class SoundcloudArtistUrlValidator(StringValidator): +class SoundcloudUsernameUrlValidator(StringValidator): - _expected_value_type_name = "Soundcloud artist url" + _expected_value_type_name = "Soundcloud username url" @classmethod def _get_channel_url(cls, url: str) -> Optional[str]: @@ -166,24 +166,24 @@ class SoundcloudArtistUrlValidator(StringValidator): query = urlparse(url) if query.hostname in ("soundcloud.com", "www.soundcloud.com"): if len(query.path) > 2: # /artist_name - artist_name = query.path[1:].split("/")[0] # strip extra paths or slashes - artist_name = artist_name.split("?")[0] # strip extra arguments - return f"https://soundcloud.com/{artist_name}" + username = query.path[1:].split("/")[0] # strip extra paths or slashes + username = username.split("?")[0] # strip extra arguments + return f"https://soundcloud.com/{username}" return None def __init__(self, name: str, value: Any): super().__init__(name, value) - self._artist_url = self._get_channel_url(value) - if not self._artist_url: - raise self._validation_exception(f"'{value}' is not a valid Soundcloud artist url.") + self._username_url = self._get_channel_url(value) + if not self._username_url: + raise self._validation_exception(f"'{value}' is not a valid Soundcloud username url.") @property - def artist_url(self) -> str: + def username_url(self) -> str: """ Returns ------- Full artist URL """ - return self._artist_url + return self._username_url diff --git a/tests/unit/validators/test_url_validator.py b/tests/unit/validators/test_url_validator.py index 1f2ccc7c..a5c3dc52 100644 --- a/tests/unit/validators/test_url_validator.py +++ b/tests/unit/validators/test_url_validator.py @@ -3,7 +3,7 @@ import re import pytest from ytdl_sub.utils.exceptions import ValidationException -from ytdl_sub.validators.url_validator import SoundcloudArtistUrlValidator +from ytdl_sub.validators.url_validator import SoundcloudUsernameUrlValidator from ytdl_sub.validators.url_validator import YoutubeChannelUrlValidator from ytdl_sub.validators.url_validator import YoutubePlaylistUrlValidator from ytdl_sub.validators.url_validator import YoutubeVideoUrlValidator @@ -97,7 +97,7 @@ class TestYoutubeChannelUrlValidator: YoutubeChannelUrlValidator(name="unit test", value=bad_url) -class TestSoundcloudArtistUrlValidator: +class TestSoundcloudUsernameUrlValidator: @pytest.mark.parametrize( "url", [ @@ -110,11 +110,11 @@ class TestSoundcloudArtistUrlValidator: ], ) def test_soundcloud_artist_url_validator_success(self, url): - artist_url = SoundcloudArtistUrlValidator(name="unit test", value=url).artist_url - assert artist_url == "https://soundcloud.com/poop" + username_url = SoundcloudUsernameUrlValidator(name="unit test", value=url).username_url + assert username_url == "https://soundcloud.com/poop" def test_youtube_playlist_url_validator_fail(self): bad_url = "soundcloud.com" - expected_error_msg = f"'{bad_url}' is not a valid Soundcloud artist url." + expected_error_msg = f"'{bad_url}' is not a valid Soundcloud username url." with pytest.raises(ValidationException, match=re.escape(expected_error_msg)): - SoundcloudArtistUrlValidator(name="unit test", value=bad_url) + SoundcloudUsernameUrlValidator(name="unit test", value=bad_url)