ytdl-sub/ytdl_subscribe/downloaders/soundcloud_downloader.py
2022-03-30 22:01:09 +00:00

30 lines
1 KiB
Python

from typing import Dict
from typing import List
from ytdl_subscribe.downloaders.downloader import Downloader
from ytdl_subscribe.entries.soundcloud import SoundcloudAlbum
from ytdl_subscribe.entries.soundcloud import SoundcloudTrack
class SoundcloudDownloader(Downloader):
@classmethod
def ytdl_option_defaults(cls) -> Dict:
return {
"format": "bestaudio[ext=mp3]",
}
@classmethod
def artist_url(cls, artist_name: str) -> str:
return f"https://soundcloud.com/{artist_name}"
def download_albums(self, artist_name) -> List[SoundcloudAlbum]:
artist_albums_url = f"{self.artist_url(artist_name)}/albums"
info = self.extract_info(url=artist_albums_url)
return [SoundcloudAlbum(**e) for e in info["entries"]]
def download_tracks(self, artist_name) -> List[SoundcloudTrack]:
artist_tracks_url = f"{self.artist_url(artist_name)}/tracks"
info = self.extract_info(url=artist_tracks_url)
return [SoundcloudTrack(**e) for e in info["entries"]]