diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 4cd4de9f..00000000 --- a/config.yaml +++ /dev/null @@ -1,113 +0,0 @@ -# ytdl-sub needs a temporary place to download files. Choose that path here -configuration: - working_directory: 'tmp' - -presets: - soundcloud_with_id3_tags: - soundcloud: - download_strategy: "albums_and_singles" - skip_premiere_tracks: True - ytdl_options: - format: 'bestaudio[ext=mp3]' - output_options: - output_directory: "/tmp/{artist_sanitized}" - file_name: "[{album_year}] {album_sanitized}/{track_number_padded} - {title_sanitized}.{ext}" - thumbnail_name: "[{album_year}] {album_sanitized}/folder.jpg" - maintain_download_archive: True - music_tags: - tags: - artist: "{artist}" - albumartist: "{artist}" - title: "{title}" - album: "{album}" - track: "{track_number}" - year: "{album_year}" - genre: "{genre}" - - yt_music_video: - # A single YouTube video is our source/download strategy. However, this - # can be overwritten to download music videos from a "playlist", as we - # will see in a preset below - youtube: - download_strategy: "video" - - # For advanced YTDL users only. - # It is wise to leave ignoreerrors=True to avoid errors for things - # like age-restricted videos in case you have not set your cookie. - ytdl_options: - ignoreerrors: True - - # For each video downloaded, set the file and thumbnail name here. - # We set both with {music_video_name}, which is a variable we define in - # the overrides section further below to represent consistent naming format. - output_options: - output_directory: "{music_video_directory}/{artist_sanitized}" - file_name: "{music_video_name}.{ext}" - thumbnail_name: "{music_video_name}.jpg" - - # For each video downloaded, add a music video NFO file for it. Populate it - # with tags that Kodi will read and use to display it in the music or music - # videos section. - nfo_tags: - nfo_name: "{music_video_name}.nfo" - nfo_root: "musicvideo" - tags: - artist: "{artist}" - title: "{title}" - album: "Music Videos" - year: "{upload_year}" - - # Overrides is a section where we can define our own variables, and use them in - # any other section. We define our music video directory and episode file name - # here, which gets reused above for the video, thumbnail, and NFO file. - overrides: - music_video_directory: "path/to/Music Videos" - music_video_name: "{artist_sanitized} - {title_sanitized}" - - # It is not always ideal to download all of an artist's music videos. - # Maybe you only like one song of theirs. We can reuse our preset above - # to download a single video instead. - yt_music_video_playlist: - preset: "yt_music_video" - youtube: - download_strategy: "playlist" - - # Setting maintain_download_archive=True is generally a good thing to enable - # with playlists and channels because it will store previously downloaded - # video ids to tell YTDL not to re-download them on a successive invocation. - output_options: - maintain_download_archive: True - - # Setting break_on_existing=True is also a good thing anytime you are using - # a download archive, because it will tell the downloader to stop trying - # to download videos that have already been downloaded. - ytdl_options: - break_on_existing: True - - yt_channel: - youtube: - download_strategy: "channel" - channel_avatar_path: "poster.jpg" - channel_banner_path: "fanart.jpg" - ytdl_options: - ignoreerrors: True - output_options: - file_name: "{output_file_name}.{ext}" - thumbnail_name: "{output_file_name}.jpg" - nfo_tags: - nfo_name: "{output_file_name}.nfo" - nfo_root: "episodedetails" - tags: - title: "{title}" - season: "{upload_year}" - episode: "{upload_month}{upload_day_padded}" - plot: "{description}" - year: "{upload_year}" - aired: "{upload_date_standardized}" - output_directory_nfo_tags: - nfo_name: "tvshow.nfo" - nfo_root: "tvshow" - tags: - title: "{tv_show_name}" - overrides: - output_file_name: "Season {upload_year}/s{upload_year}.e{upload_month_padded}{upload_day_padded} - {title_sanitized}" \ No newline at end of file diff --git a/docker/root/defaults/subscriptions.yaml b/docker/root/defaults/subscriptions.yaml index b6012c5c..bf5e6527 100644 --- a/docker/root/defaults/subscriptions.yaml +++ b/docker/root/defaults/subscriptions.yaml @@ -1,7 +1,7 @@ rammstein_music_videos: preset: "yt_music_video_playlist" youtube: - playlist_id: "PLVTLbc6i-h_iuhdwUfuPDLFLXG2QQnz-x" + playlist_url: "https://youtube.com/playlist?list=PLVTLbc6i-h_iuhdwUfuPDLFLXG2QQnz-x" overrides: artist: "Rammstein" diff --git a/examples/kodi_music_videos_subscriptions.yaml b/examples/kodi_music_videos_subscriptions.yaml index dd1bf47a..8682226c 100644 --- a/examples/kodi_music_videos_subscriptions.yaml +++ b/examples/kodi_music_videos_subscriptions.yaml @@ -14,9 +14,9 @@ john_smith: # config example "yt_music_video", so set that here. preset: "yt_music_video_playlist" - # Since our preset download strategy is set to 'playlist', set the playlist id. + # Since our preset download strategy is set to 'playlist', set the playlist url youtube: - playlist_id: "UCsvn_Po0SmunchJYtttWpOxMg" + playlist_url: "https://youtube.com/playlist?list=UCsvn_Po0SmunchJYtttWpOxMg" # Overrides can be defined per-subscription. If you noticed, we used {artist} # and {artist_sanitized} in our "yt_music_video" preset. We intended to reserve @@ -39,21 +39,21 @@ john_smith: # The only difference between this example and the one above is # - preset # Use the music video preset, not the playlist preset -# - youtube.video_id -# The id of the video to download +# - youtube.video_url +# The video url to download # # Of course, defining yaml configuration to download a single video once # and never again seems weird. Instead, we can perform this download via # command: # -# ytdl-sub dl \ -# --preset "yt_music_video" \ -# --youtube.video_id "QhY6r6oAErg" \ +# ytdl-sub dl \ +# --preset "yt_music_video" \ +# --youtube.video_url "https://youtube.com/watch?v=QhY6r6oAErg" \ # --overrides.artist "John Smith and the Instrument Players" # john_smith_one_hit_wonder: preset: "yt_music_video" youtube: - video_id: "QhY6r6oAErg" + video_url: "https://youtube.com/watch?v=QhY6r6oAErg" overrides: artist: "John Smith and the Instrument Players" diff --git a/examples/kodi_tv_shows_subscriptions.yaml b/examples/kodi_tv_shows_subscriptions.yaml index db020c47..b8502693 100644 --- a/examples/kodi_tv_shows_subscriptions.yaml +++ b/examples/kodi_tv_shows_subscriptions.yaml @@ -13,10 +13,10 @@ john_smith_archive: # entire YouTube channel is called "yt_channel_as_tv", so set that here. preset: "yt_channel_as_tv" - # Our download strategy was Youtube channels. Define the channel id here + # Our download strategy was Youtube channels. Define the channel url here # in our subscription. youtube: - channel_id: "UCsvn_Po0SmunchJYtttWpOxMg" + channel_url: "https://youtube.com/channel/UCsvn_Po0SmunchJYtttWpOxMg" # Overrides can be defined per-subscription. If you noticed, we used # {tv_show_name} and {tv_show_name_sanitized} in our "yt_channel_as_tv" @@ -34,7 +34,7 @@ john_smith_archive: john_smith_recent_archive: preset: "yt_channel_as_tv__recent" youtube: - channel_id: "UCsvn_Po0SmunchJYtttWpOxMg" + channel_url: "https://youtube.com/channel/UCsvn_Po0SmunchJYtttWpOxMg" overrides: tv_show_name: "John /\ Smith" @@ -46,6 +46,6 @@ john_smith_recent_archive: john_smith_rolling_archive: preset: "yt_channel_as_tv__only_recent" youtube: - channel_id: "UCsvn_Po0SmunchJYtttWpOxMg" + channel_url: "https://youtube.com/channel/UCsvn_Po0SmunchJYtttWpOxMg" overrides: tv_show_name: "John /\ Smith" \ No newline at end of file diff --git a/src/ytdl_sub/downloaders/soundcloud_downloader.py b/src/ytdl_sub/downloaders/soundcloud_downloader.py index 5b28d3ff..eee50289 100644 --- a/src/ytdl_sub/downloaders/soundcloud_downloader.py +++ b/src/ytdl_sub/downloaders/soundcloud_downloader.py @@ -108,7 +108,7 @@ class SoundcloudAlbumsAndSinglesDownloadOptions(SoundcloudDownloaderOptions): def __init__(self, name, value): super().__init__(name, value) self._url = self._validate_key( - key="username", validator=SoundcloudUsernameUrlValidator + key="url", validator=SoundcloudUsernameUrlValidator ).username_url @property diff --git a/subscriptions.yaml b/subscriptions.yaml deleted file mode 100644 index cd29a4f3..00000000 --- a/subscriptions.yaml +++ /dev/null @@ -1,71 +0,0 @@ -#ALISON: -# preset: "soundcloud_with_id3_tags" -# soundcloud: -# username: alis_on -# output_options: -# output_directory: "/tmp/ALISON" -# overrides: -# artist: "A.L.I.S.O.N." -# genre: "Synthwave / Electronic" -# -#delorra: -# preset: "soundcloud_with_id3_tags" -# soundcloud: -# username: delorra -# output_options: -# output_directory: "/tmp/DeLorra" -# overrides: -# artist: "DeLorra" -# genre: "Synthwave / Electronic" -# -#bl00dwave: -# preset: "soundcloud_with_id3_tags" -# soundcloud: -# username: bl00dwave -# overrides: -# artist: "bl00dwave" -# genre: "Synthwave / Electronic" -# -tom_petty: - preset: "music_videos" - youtube: - download_strategy: "playlist" - playlist_id: PLoopXDarluPBnuxs4PTC55Sc_2ShAXC0i - output_options: - output_directory: "/tmp/Tom Petty" - overrides: - artist: "Tom Petty and the Heartbreakers" -# -#rammstein: -# preset: "music_videos" -# youtube: -# download_strategy: "playlist" -# playlist_id: "PLVTLbc6i-h_iuhdwUfuPDLFLXG2QQnz-x" -# output_options: -# output_directory: "/tmp/Rammstein" -# overrides: -# artist: "Rammstein" - -#gogo_video_test: -# preset: "music_videos" -# youtube: -# download_strategy: "video" -# video_id: "2RHTiXvELNg" -# output_options: -# output_directory: "/tmp/gogos" -# overrides: -# artist: "The Gogos" - -#recent_channel_test: -# preset: "yt_channel" -# ytdl_options: -# break_on_reject: True -# youtube: -# channel_id: "UCsvn_Po0SmunchJYOWpOxMg" -# after: today-13days -# output_options: -# output_directory: "/tmp/dunkey" -# keep_files: -# after: today-3days -# overrides: -# tv_show_name: "Youtube: Dunkey" \ No newline at end of file diff --git a/tests/e2e/soundcloud/test_soundcloud_discography.py b/tests/e2e/soundcloud/test_soundcloud_discography.py index f840175e..2679f772 100644 --- a/tests/e2e/soundcloud/test_soundcloud_discography.py +++ b/tests/e2e/soundcloud/test_soundcloud_discography.py @@ -27,7 +27,7 @@ def config(config_path): def subscription_dict(output_directory, subscription_name): return { "preset": "sc_discography", - "soundcloud": {"username": "jessebannon"}, + "soundcloud": {"url": "https://soundcloud.com/jessebannon"}, # override the output directory with our fixture-generated dir "output_options": {"output_directory": output_directory + "/{artist_sanitized}"}, # download the worst format so it is fast diff --git a/tests/e2e/youtube/test_channel_as_kodi_tv_show.py b/tests/e2e/youtube/test_channel_as_kodi_tv_show.py index f64576e8..54c6d769 100644 --- a/tests/e2e/youtube/test_channel_as_kodi_tv_show.py +++ b/tests/e2e/youtube/test_channel_as_kodi_tv_show.py @@ -28,7 +28,7 @@ def config(config_path): def subscription_dict(output_directory, subscription_name): return { "preset": "yt_channel_as_tv", - "youtube": {"channel_id": "UCcRSMoQqXc_JrBZRHDFGbqA"}, + "youtube": {"channel_url": "https://youtube.com/channel/UCcRSMoQqXc_JrBZRHDFGbqA"}, # override the output directory with our fixture-generated dir "output_options": {"output_directory": str(Path(output_directory) / subscription_name)}, # download the worst format so it is fast diff --git a/tests/e2e/youtube/test_playlist_as_kodi_music_videos.py b/tests/e2e/youtube/test_playlist_as_kodi_music_videos.py index 411e9bca..e943cd24 100644 --- a/tests/e2e/youtube/test_playlist_as_kodi_music_videos.py +++ b/tests/e2e/youtube/test_playlist_as_kodi_music_videos.py @@ -28,7 +28,7 @@ def config(config_path): def subscription_dict(output_directory, subscription_name): return { "preset": "yt_music_video_playlist", - "youtube": {"playlist_id": "PL5BC0FC26BECA5A35"}, + "youtube": {"playlist_url": "https://youtube.com/playlist?list=PL5BC0FC26BECA5A35"}, # override the output directory with our fixture-generated dir "output_options": {"output_directory": output_directory}, # download the worst format so it is fast @@ -93,7 +93,7 @@ def single_video_subscription_dict(subscription_dict): subscription_dict, { "preset": "yt_music_video", - "youtube": {"video_id": "HKTNxEqsN3Q"}, + "youtube": {"video_url": "https://youtube.com/watch?v=HKTNxEqsN3Q"}, }, )