jmbannon / ytdl-sub

Lightweight tool to automate downloading and metadata generation with yt-dlp
https://ytdl-sub.readthedocs.io
GNU General Public License v3.0
1.86k stars 71 forks source link

Not downloading full playlists #966

Closed nothing2obvi closed 2 weeks ago

nothing2obvi commented 7 months ago

I noticed ytdl-sub is doing something very strange. I have enabled download archives, and without any download archives already created (so a first run for a particular artist), if I set ytdl-sub to download a playlist of 30 videos, it does not download all 30 videos. However, if I then delete the download archive then force ytdl-sub to run again, it will download all 30 videos. For this, I am referring to subscriptions_music-videos_playlists.yaml, below.

Am I doing something wrong?

Here are my config and subscription files; I'm including everything here just in case they're relevant. I have multiple subscription files because of my experience with #962. I have a cronjob set to work with each subscription file. I am mainly relying on subscriptions_music-videos_playlists.yaml to download music videos, but I use the other two subscriptions with different presets in order to make sure new music videos are downloaded from artists' pages and the pages of their music labels. Please excuse the way I've named presets with the word "override," it just helps me understand what is happening.

config.yaml

configuration:
  working_directory: "/temp"

presets:
  Files Override:
    overrides:
      embed_thumbnail: True
    file_convert:
      convert_to: "mkv"
    format: "(bv*[height<=1080]+bestaudio/best[height<=1080])"
    subtitles:
      #subtitles_name: "{music_video_title_sanitized}.{lang}.{subtitles_ext}"
      subtitles_type: "srt"
      embed_subtitles: True
      languages:
        - "en"
        - "ko"
        - "ja"
        - "es"
        - "tl"
      allow_auto_generated_subtitles: True
    nfo_tags:
      tags:
        plot: "{description}\n\n{webpage_url}"
  Music Videos Override:
    overrides:
      music_video_directory: "/music-videos"
  Music Videos Match Filter Override:
    match_filters:
      filters:
        - "title~='(?i)Official Video'"
        - "title~='(?i)Official Music Video'"
        - "title~='(?i)Official MV'"
  Music Videos Match Filter Override Dance Gavin Dance:
    match_filters:
      filters:
        - "title~='(?i)Dance Gavin Dance' & title~='(?i)Official Video'"
        - "title~='(?i)Dance Gavin Dance' & title~='(?i)Official Music Video'"
        - "title~='(?i)Dance Gavin Dance' & title~='(?i)Official MV'"
  Music Videos Match Filter Override ILLIT:
    match_filters:
      filters:
        - "title~='(?i)ILLIT' & title~='(?i)Official Video'"
        - "title~='(?i)ILLIT' & title~='(?i)Official Music Video'"
        - "title~='(?i)ILLIT' & title~='(?i)Official MV'"
  Music Videos Match Filter Override NewJeans:
    match_filters:
      filters:
        - "title~='(?i)NewJeans' & title~='(?i)Official Video'"
        - "title~='(?i)NewJeans' & title~='(?i)Official Music Video'"
        - "title~='(?i)NewJeans' & title~='(?i)Official MV'"
  Music Videos Match Filter Override Silk Sonic:
    match_filters:
      filters:
        - "title~='(?i)Silk Sonic' & title~='(?i)Official Video'"
        - "title~='(?i)Silk Sonic' & title~='(?i)Official Music Video'"
        - "title~='(?i)Silk Sonic' & title~='(?i)Official MV'"
  #subtitles:
  #subtitles_name: "{music_video_artist_sanitized}/{music_video_title_sanitized}.{lang}.{subtitles_ext}"
  YouTube Subscriptions Override:
    overrides:
      tv_show_directory: "/youtube"
      episode_file_name: "S{season_number_padded}E{episode_number_padded} - {file_title}"
      episode_file_path: "{season_directory_name_sanitized}/{episode_file_name_sanitized}"
  YouTube Subscriptions Override Keep 2 Weeks:
    date_range:
      before: "now"
      after: "today-2weeks"
    output_options:
      keep_files_after: "today-2weeks"
  YouTube Subscriptions Override Keep 1 Month:
    date_range:
      before: "now"
      after: "today-1month"
    output_options:
      keep_files_after: "today-1month"
  YouTube Subscriptions Override Podcasts:
    overrides:
      tv_show_directory: "/youtube"
      episode_file_name: "{upload_year}.{upload_month_padded}.{upload_day_padded} - {file_title}"
      episode_file_path: "{episode_file_name_sanitized}"
    match_filters:
      filters:
        - "duration > 1800"
    nfo_tags:
      tags:
        title: "{upload_year}.{upload_month_padded}.{upload_day_padded} - {file_title}"
        genre: "Podcast"
  YouTube Subscriptions Override NBA Highlights:
    overrides:
      tv_show_directory: "/sports"
      episode_file_name: "{upload_year}.{upload_month_padded}.{upload_day_padded} - {file_title}"
      episode_file_path: "{episode_file_name_sanitized}"
    match_filters:
      filters:
        - "title~='(?i)Warriors' & title~='(?i)Full Game Highlights'"
    nfo_tags:
      tags:
        title: "{upload_year}.{upload_month_padded}.{upload_day_padded} - {file_title}"
        genre: "Sports"
  YouTube Override:
    overrides:
      tv_show_directory: "/youtube"
      episode_file_name: "{upload_year}.{upload_month_padded}.{upload_day_padded} - {file_title}"
      episode_file_path: "{episode_file_name_sanitized}"
    nfo_tags:
      tags:
        title: "{upload_year}.{upload_month_padded}.{upload_day_padded} - {file_title}"
    #subtitles:
    #subtitles_name: "{episode_file_name_sanitized}.{lang}.{subtitles_ext}"
  No Season Override:
    nfo_tags:
      tags:
        season: "1"
  YouTube Subscriptions:
    preset:
      - "Jellyfin TV Show by Date"
      - "YouTube Subscriptions Override"
      - "Files Override"
  YouTube Subscriptions Podcasts:
    preset:
      - "Jellyfin TV Show by Date"
      - "YouTube Subscriptions Override Keep 1 Month"
      - "YouTube Subscriptions Override Podcasts"
      - "No Season Override"
      - "Files Override"
  YouTube Subscriptions NBA Highlights:
    preset:
      - "Jellyfin TV Show by Date"
      - "YouTube Subscriptions Override Keep 2 Weeks"
      - "YouTube Subscriptions Override NBA Highlights"
      - "No Season Override"
      - "Files Override"
  YouTube:
    preset:
      - "Jellyfin TV Show by Date"
      - "YouTube Override"
      - "No Season Override"
      - "Files Override"
  Music Videos:
    preset:
      - "Jellyfin Music Videos"
      - "Music Videos Override"
      - "Files Override"
  Music Videos Match Filter:
    preset:
      - "Jellyfin Music Videos"
      - "Music Videos Override"
      - "Files Override"
      - "Music Videos Match Filter Override"
  Music Videos Match Filter Dance Gavin Dance:
    preset:
      - "Jellyfin Music Videos"
      - "Music Videos Override"
      - "Files Override"
      - "Music Videos Match Filter Override Dance Gavin Dance"
  Music Videos Match Filter ILLIT:
    preset:
      - "Jellyfin Music Videos"
      - "Music Videos Override"
      - "Files Override"
      - "Music Videos Match Filter Override ILLIT"
  Music Videos Match Filter NewJeans:
    preset:
      - "Jellyfin Music Videos"
      - "Music Videos Override"
      - "Files Override"
      - "Music Videos Match Filter Override NewJeans"
  Music Videos Match Filter Silk Sonic:
    preset:
      - "Jellyfin Music Videos"
      - "Music Videos Override"
      - "Files Override"
      - "Music Videos Match Filter Override Silk Sonic"

subscriptions_youtube.yaml

# subscriptions.yaml:
# Everything in here can be downloaded using the command:
#   ytdl-sub sub subscriptions.yaml

# __preset__ is a place to define global overrides for all subscriptions
#__preset__:
#  overrides:
#    tv_show_directory: "/youtube"
#    music_video_directory: "/music-videos"
#    music_directory: "/music"
###################################################################
# Subscriptions nested under this will use the
# `Plex TV Show by Date` preset.
#
# Can choose between:
#   - Plex TV Show by Date:
#   - Jellyfin TV Show by Date:
#   - Kodi TV Show by Date:

#Twitch:
# Sets genre tag to “Twitch”
#  = Twitch:
#    Nezba: "https://www.twitch.tv/nezba/videos"
#    Sasha Grey: "https://www.twitch.tv/sashagrey/videos"
#    Aplatypuss: "https://www.twitch.tv/aplatypuss/videos"
#    Arilyna: "https://www.twitch.tv/arilyna"

#########################################################################
########################## YOUTUBE SUBSCRIPTIONS ########################
YouTube Subscriptions:
  # Sets genre tag to “YouTube”
  = YouTube:
    The Poor Traveler: "https://www.youtube.com/user/thepoortraveler"
    Stay Fabulous: "https://www.youtube.com/@StayFabulousTL/videos"
    #Touropia: "https://www.youtube.com/@touropia/videos"

  #= YouTube: # Sets genre to YouTube
  #The Poor Traveler Test: "https://youtube.com/playlist?list=PLaruwTMYOAcaHPIBO-CFNzkPLzvbW7YaC&si=5tiGGJdHSmT9B49o"

########################################################################
################# YOUTUBE SUBSCRIPTIONS (KEEP AFTER) ###################
YouTube Subscriptions NBA Highlights:
  = Sports:
    NBA Highlights: "https://www.youtube.com/@FreeDawkins/videos"

YouTube Subscriptions Podcasts:
  = Podcast:
    Bad Friends: "https://www.youtube.com/@BadFriends/videos"
    Good For You: "https://www.youtube.com/@whitneycummings/videos"
    H3 Podcast: "https://www.youtube.com/@H3Podcast"
    Huberman Lab: "https://www.youtube.com/@hubermanlab/videos"

########################################################################
######################## YOUTUBE #######################################
YouTube:
  = YouTube:
    # Last updated 2024.04.10
    Alice Sara Ott: "https://youtube.com/playlist?list=PLaruwTMYOAcaLq2jI_Fs5hDb9HQVQ6EJU&si=aDzNF2tQQD8QOQQv"
    # Last updated 2024.04.10
    Ash Lauryn: "https://youtube.com/playlist?list=PLaruwTMYOAcbhtx1XfT53bSojM9OQ-7rx&si=OpTFLV_qYUWcxSI4"
    # Last updated 2024.04.10
    Avicii: "https://youtube.com/playlist?list=PLaruwTMYOAcY4pNlml4E3laIoyMJAjCE9&si=ERN_IHSr3gk2L85i"
    # Last updated 2024.04.10
    BADBADNOTGOOD: "https://youtube.com/playlist?list=PLaruwTMYOAcZiK7Uc3LZ1KSXrzAHDpu7u&si=kmwqRgfx8Bs5Eury"
    # Last updated 2024.04.10
    Beach House: "https://youtube.com/playlist?list=PLaruwTMYOAcbJjDegOwjUempF6_Y4TuBA&si=4wGwm1Z7uXPQ9SVb"
    # Last updated 2024.04.10
    Bee Gees Tribute 2017: "https://youtube.com/playlist?list=PLaruwTMYOAcYNd0j7AKcEIvF_FgCiPgCr&si=LL-pKpvSRNG6C7yM"
    # Last updated 2024.04.10
    The Beths: "https://youtube.com/playlist?list=PLaruwTMYOAcaeL5qZWJryxMuj2lcrmCMb&si=5HQ5hik-A5ppEUGs"
    # Last updated 2024.04.10
    Dance Gavin Dance: "https://youtube.com/playlist?list=PLaruwTMYOAcYX8yOAxy9TFlTep1qbbPkD&si=hlfr4NAmsm6o_1PQ"
    # Last updated 2024.04.10
    Dinner Party: "https://youtube.com/playlist?list=PLaruwTMYOAcbGXiGRsO3OCT5eQukzyv19&si=HOwb6pl4EQ5YaFUi"
    # Last updated 2024.04.10
    Disclosure: "https://youtube.com/playlist?list=PLaruwTMYOAcZjfWCOhAxleInYZdbhnUWH&si=2THO9k_dXmqpF4zw"
    # Last updated 2024.04.10
    Elena Colombi: "https://youtube.com/playlist?list=PLaruwTMYOAcZMLYeFRdzHQKoY8RjdUOSj&si=rjdN2gCvKDxZvJCQ"
    # Last updated 2024.04.10
    Faye Webster: "https://youtube.com/playlist?list=PLaruwTMYOAcbMK2xVigY6klk62OR75AZx&si=gnaOpKTfJG4XoHgM"
    # Last updated 2024.04.10
    Kaskade: "https://youtube.com/playlist?list=PLaruwTMYOAcb0I85VvMIPxSuvKyywkfUY&si=1bLc2fJuWEU7u0KO"
    # Last updated 2024.04.10
    Kaytranada: "https://youtube.com/playlist?list=PLaruwTMYOAcYF-1ZsU8DCkBDG65SRkJIe&si=1zcu75ZuW43Bu3oK"
    # Last updated 2024.04.10
    Khruangbin: "https://youtube.com/playlist?list=PLaruwTMYOAca8rRbA_aySfy7cAn5JFwFW&si=BBvWFATtHN9Ca1Zi"
    # Last updated 2024.04.10
    Laufey: "https://youtube.com/playlist?list=PLaruwTMYOAcYKmqqpjrguOl85eLf5K_1t&si=T0TfyiUVPJgn91cH"
    # Last updated 2024.04.10
    Local Natives: "https://youtube.com/playlist?list=PLaruwTMYOAcatJ6bzcMjQeVTIVhZG6eoZ&si=xxI50kzXimWAVJfB"
    # Last updated 2024.04.10
    MBTI: "https://youtube.com/playlist?list=PLaruwTMYOAcY8zDcio63kzPcWLNyv276p&si=jLrI_aj1U3dCeET3"
    # Last updated 2024.04.10
    Men I Trust: "https://youtube.com/playlist?list=PLaruwTMYOAcaW6DVBxPhFSS9ssoREyGN9&si=QzWItFoZXiROJtDn"
    # Last updated 2024.04.10
    NewJeans: "https://youtube.com/playlist?list=PLaruwTMYOAcbd55ABt6Wt8_GaMO9iPauh&si=4FsAV0Eg4x9HtWBf"
    # Last updated 2024.04.10
    Olivia Rodrigo: "https://youtube.com/playlist?list=PLaruwTMYOAcZ709Fu4U9vNjIhDFCixbew&si=TvPT-tHRQRfsffs1"
    # Last updated 2024.04.10
    Real Estate: "https://youtube.com/playlist?list=PLaruwTMYOAcZiB0cK7FmtsAgm1XLoY3tU&si=t0xIw8hCvdeYdr9Y"
    # Last updated 2024.04.10
    Silk Sonic: "https://youtube.com/playlist?list=PLaruwTMYOAcZJ4eNclMhxzBHHtCL2J5qX&si=FJmO74zrWCUCCSES"
    # Last updated 2024.04.10
    St. Vincent: "https://youtube.com/playlist?list=PLaruwTMYOAcYiNIorAji1GygCgrqTz0Q5&si=RvbDD0N44dMv2xvq"
    # Last updated 2024.04.10
    SZA: "https://youtube.com/playlist?list=PLaruwTMYOAcYTlEfxC6_KZBkZ2EUYuJYF&si=A_nkrdm33GAc8SKv"
    # Last updated 2024.04.10
    Stella Donnelly: "https://youtube.com/playlist?list=PLaruwTMYOAcaeN5GxHyoDOj0vnB3F-Bhh&si=-K7lT8GtbSOcUS_-"
    # Last updated 2024.04.10
    Ted-Ed: "https://youtube.com/playlist?list=PLaruwTMYOAcYRO2YcyxLrBuGvdkGdDJkp&si=yqZ8DXHbt-ClcH4O"
    # Last updated 2024.04.10
    Tennis: "https://youtube.com/playlist?list=PLaruwTMYOAcYj4vqk2lgFVFJRnu2s13Bg&si=VSL-DB491mQOnrIs"
    # Last updated 2024.04.19
    TOKiMONSTA: "https://youtube.com/playlist?list=PLaruwTMYOAcaQHUsq2_6HhoGV81mhmyfC&si=ZRTtN_RnbKE4wRiF"
    # Last updated 2024.04.10
    Yiruma: "https://youtube.com/playlist?list=PLaruwTMYOAcYiJkwzNFdj_ItWUbTHOpI-&si=vGaMvxsv2Jwz7NlA"
    # Last updated 2024.04.10
    Zhiyun Crane M2: "https://youtube.com/playlist?list=PLaruwTMYOAcbkbnjVURH-41BvVUgMeIZc&si=UB6RvqM_Mh5Fyvmc"

subscriptions_music-videos_playlists.yaml

# subscriptions.yaml:
# Everything in here can be downloaded using the command:
#   ytdl-sub sub subscriptions.yaml

# __preset__ is a place to define global overrides for all subscriptions
#__preset__:
#  overrides:
#    tv_show_directory: "/youtube"
#    music_video_directory: "/music-videos"
#    music_directory: "/music"
###################################################################
# Subscriptions nested under this will use the
# `Plex TV Show by Date` preset.
#
# Can choose between:
#   - Plex TV Show by Date:
#   - Jellyfin TV Show by Date:
#   - Kodi TV Show by Date:

#Twitch:
# Sets genre tag to “Twitch”
#  = Twitch:
#    Nezba: "https://www.twitch.tv/nezba/videos"
#    Sasha Grey: "https://www.twitch.tv/sashagrey/videos"
#    Aplatypuss: "https://www.twitch.tv/aplatypuss/videos"
#    Arilyna: "https://www.twitch.tv/arilyna"

########################################################################
##################### MUSIC VIDEOS (PLAYLISTS) #########################

Music Videos:
  = Alternative Rock:
    # Last updated 2024.04.19
    St. Vincent:
      - "https://youtube.com/playlist?list=PLaruwTMYOAca3xLilhivLlSZgIZ1CBelI&si=0Uj2F0HLPjRbBEok"
      - "https://youtube.com/playlist?list=PL3y5JHZHw7D210BJvAdbU_NoQX0yAA-Iq&si=FiwTZuTUnuAU8CZB"

  = Contemporary Jazz:
    # Last updated 2024.04.10
    BADBADNOTGOOD: "https://youtube.com/playlist?list=PLaruwTMYOAcbnDkMcWXtoR9G7xM_qwwVz&si=io-UoeNqeSGnkPk9"
    # Last updated 2024.04.10
    Dinner Party: "https://youtube.com/playlist?list=PLaruwTMYOAcbZVUHEWTmV2Yj3i0pTrA5M&si=zJ_SFyeW3pbiCOpq"

  = Dance:
    # Last updated 2024.04.10
    Avicii: "https://youtube.com/playlist?list=PLaruwTMYOAcYnOxs0WY6oSO2LI-cHlsx3&si=A5BjvJdUoREcZ_zL"
    # Last updated 2024.04.10
    Disclosure: "https://youtube.com/playlist?list=PLaruwTMYOAcZTT1YMaPqB0QOX2hg7pGmR&si=JaUCyejRs_64MKuM"
    # Last updated 2024.04.10
    Kaskade: "https://youtube.com/playlist?list=PLaruwTMYOAcZbPOoxv-hVhZsfUQiIETy6&si=sKaSq_lFWR-5aaAl"

  = Electronica:
    TOKiMONSTA:
      - "https://youtube.com/playlist?list=PLaruwTMYOAcYBb5K08NAgjgjMVPkYaIXi&si=5bJbV_uY8whO0Ms5"
      - "https://youtube.com/playlist?list=PLS91cEvs1KykRWS-qXeuOEUZ1P29e-m1A&si=R469CQ3bt62_wJvd"

  = Indie Pop: # Sets genre to "Indie-Pop"
    # Last updated 2024.04.10
    Faye Webster:
      - "https://youtube.com/playlist?list=PLaruwTMYOAcbpMxVJKFPYpS8ncEmiVzBW&si=QU6Qkev0JpUXQ-5P"
      - "https://youtube.com/playlist?list=PLoPSVmic5SV_im-ppjoLyFheP54ZjzZGj&si=VhsZNg4lbzGNrZDj"
    # Last updated 2024.04.10
    Men I Trust:
      - "https://www.youtube.com/playlist?list=PLp9ta73sprU5VoozU4iVKUKY-58_POV1_"
      - "https://youtube.com/playlist?list=PLaruwTMYOAcZUszL1MQlC5p-JbTJtfT0m&si=MjDwl0m7-eWU3vvP"
    # Last updated 2024.04.10
    Stella Donnelly: "https://youtube.com/playlist?list=PLaruwTMYOAcYMvjGU2fq-yo5UIAZPLVCQ&si=xujJvWCcLAIIncIW"
    # Last updated 2024.04.10
    Tennis: "https://youtube.com/playlist?list=PLaruwTMYOAcYZEw4xSxvT7Wg2lDlGmPeW&si=7H9uMrc9jaZqz80b"

  = Indie Rock:
    # Last updated 2024.04.19
    Real Estate: "https://youtube.com/playlist?list=PLaruwTMYOAcbQnm2MseKW8j6M63p1lqnU&si=jT7EfdDaC_q-ItBI"
    # Last updated 2024.04.19
    Toro y Moi: "https://youtube.com/playlist?list=PLaruwTMYOAcb4xdS7phnJADmJGCzxU06I&si=84iPvMFxOw1ZaMoR"

  = Jazz Pop:
    # Last updated 2024.04.19
    Laufey:
      - "https://youtube.com/playlist?list=PLaruwTMYOAcYYzu3woohS9RoVVB-r6mxP&si=QLwfXDK88loegd21"
      # Last updated 2024.04.19
      - "https://youtube.com/playlist?list=PLyOJSTHFAIiY9euEFA8myZqOoa5u0Qquf&si=EH1vyDzie3vBc4Xp"

  = K-Pop: # Sets genre to "K-Pop"
    # Last updated 2024.04.19
    ILLIT: "https://youtube.com/playlist?list=PLaruwTMYOAcbPY8q0WK_OwcJehf05Ps6L&si=DNuMazjqjg35_B7T"
    # Last updated 2024.04.19
    miss A: "https://youtube.com/playlist?list=PLaruwTMYOAcYa5JCILHhN6Dnq7XEP7VWj&si=Rk7TvehGx-EG-ddp"
    # Last updated 2024.04.19
    NewJeans: "https://youtube.com/playlist?list=PLaruwTMYOAcbl6jRPPkMyw1QulVn7Xfwz&si=OsRCDfcWo_tFWzmR"
    # Last updated 2024.04.19
    SNSD: "https://youtube.com/playlist?list=PLaruwTMYOAcaYwPcHIJTANxyPA3klzGQC&si=_W22ZYurPeY9-gRU"

  = Post-Hardcore: # Sets genre tag to "Post-Hardcore"
    # Last updated 2024.04.19
    Dance Gavin Dance: "https://youtube.com/playlist?list=PLaruwTMYOAcbuq1bQtndwNJRcatl-620J&si=ezxRVhEUYh1dpPu7"

  = Psychedelic Rock:
    # Last updated 2024.04.19
    Khruangbin: "https://youtube.com/playlist?list=PLaruwTMYOAcYuZjxTd-LD8PiJRhqDhT5I&si=C_1F8dPHeENqP5CD"

  = "R&B":
    # Last updated 2024.04.19
    SZA: "https://youtube.com/playlist?list=PLaruwTMYOAcbUrPIX95vwr-f_iLivaOTA&si=MldKQ9VgPRlMfCKJ"

  = Soul:
    # Last updated 2024.04.19
    Silk Sonic: "https://youtube.com/playlist?list=PLaruwTMYOAcadCO6i4mffHem6XhRaQC1F&si=jCmZs5yIVdQyR0zu"

subscriptions_music-videos_artists.yaml

# subscriptions.yaml:
# Everything in here can be downloaded using the command:
#   ytdl-sub sub subscriptions.yaml

# __preset__ is a place to define global overrides for all subscriptions
#__preset__:
#  overrides:
#    tv_show_directory: "/youtube"
#    music_video_directory: "/music-videos"
#    music_directory: "/music"
###################################################################
# Subscriptions nested under this will use the
# `Plex TV Show by Date` preset.
#
# Can choose between:
#   - Plex TV Show by Date:
#   - Jellyfin TV Show by Date:
#   - Kodi TV Show by Date:

#Twitch:
# Sets genre tag to “Twitch”
#  = Twitch:
#    Nezba: "https://www.twitch.tv/nezba/videos"
#    Sasha Grey: "https://www.twitch.tv/sashagrey/videos"
#    Aplatypuss: "https://www.twitch.tv/aplatypuss/videos"
#    Arilyna: "https://www.twitch.tv/arilyna"

############################################################################
##################### MUSIC VIDEOS (ARTISTS) ###############################
Music Videos Match Filter:
  = Alternative Rock:
    St. Vincent: "https://www.youtube.com/@St.Vincent/videos"

  = Contemporary Jazz:
    BADBADNOTGOOD: "https://www.youtube.com/@BADBADNOTGOOD/videos"

  = Dance:
    Kaskade: "https://www.youtube.com/@Kaskade/videos"
    Disclosure: "https://www.youtube.com/@disclosure/videos"

  = Electronica:
    TOKiMONSTA: "https://www.youtube.com/@tokimonsta/videos"

  = Indie Pop: # Sets genre to "Indie-Pop"
    Faye Webster: "https://www.youtube.com/@faye.webster/videos"
    Men I Trust: "https://www.youtube.com/@MenITrust/videos"
    Stella Donnelly: "https://www.youtube.com/@stelladonnelly3200/videos"
    Tennis: "https://www.youtube.com/@tennismusicinc/videos"

  = Indie Rock:
    Real Estate: "https://www.youtube.com/@realestateband/videos"
    Toro y Moi: "https://www.youtube.com/@toroymoi/videos"

  = Jazz Pop:
    Laufey: "https://www.youtube.com/@laufey/videos"

  = K-Pop: # Sets genre to "K-Pop"
    ILLIT: "https://www.youtube.com/@ILLIT_official/videos"
    NewJeans: "https://www.youtube.com/@NewJeans_official/videos"

  = Post-Hardcore: # Sets genre tag to "Post-Hardcore"
    Dance Gavin Dance: "https://www.youtube.com/@DanceGavinDance/videos"

  = Psychedelic Rock:
    Khruangbin: "https://www.youtube.com/@Khruangbin/videos"

  = "R&B":
    SZA: "https://www.youtube.com/@sza/videos"

subscriptions_music-videos_labels.yaml

# subscriptions.yaml:
# Everything in here can be downloaded using the command:
#   ytdl-sub sub subscriptions.yaml

# __preset__ is a place to define global overrides for all subscriptions
#__preset__:
#  overrides:
#    tv_show_directory: "/youtube"
#    music_video_directory: "/music-videos"
#    music_directory: "/music"
###################################################################
# Subscriptions nested under this will use the
# `Plex TV Show by Date` preset.
#
# Can choose between:
#   - Plex TV Show by Date:
#   - Jellyfin TV Show by Date:
#   - Kodi TV Show by Date:

#Twitch:
# Sets genre tag to “Twitch”
#  = Twitch:
#    Nezba: "https://www.twitch.tv/nezba/videos"
#    Sasha Grey: "https://www.twitch.tv/sashagrey/videos"
#    Aplatypuss: "https://www.twitch.tv/aplatypuss/videos"
#    Arilyna: "https://www.twitch.tv/arilyna"

#####################################################################
############### MUSIC VIDEO MATCH (LABELS) ##########################
Music Videos Match Filter Dance Gavin Dance:
  = Post-Hardcore:
    Dance Gavin Dance: "https://www.youtube.com/@riserecords/videos"

Music Videos Match Filter ILLIT:
  = K-Pop:
    ILLIT: "https://www.youtube.com/@HYBELABELS/videos"

Music Videos Match Filter NewJeans:
  = K-Pop:
    NewJeans: "https://www.youtube.com/@HYBELABELS/videos"

Music Videos Match Filter Silk Sonic:
  = Soul:
    Silk Sonic: "https://www.youtube.com/@brunomars/videos"
jmbannon commented 7 months ago

if I set ytdl-sub to download a playlist of 30 videos, it does not download all 30 videos

Let's try to narrow this down. What is the particular playlist this happens with? Do you have logs by chance? If not, enable persisted logs (https://ytdl-sub.readthedocs.io/en/latest/config_reference/config_yaml.html#persist-logs) and upload them here.

The latter part makes sense that it'd download all vids.

One theory is that the playlist ordering is getting changed, and ytdl-sub is breaking on existing. Could try disabling that for playlists

nothing2obvi commented 7 months ago

Thanks for your response. The next time I add a playlist, if it doesn't download all the videos on the first run, I'll share the logs here.

Could you please elaborate on the theory of playlist order changing and break-on-existing occurring? Also how do I disable it? I'm familiar with it in yt-dlp but don't know how to implement that in ytdl-sub; couldn't find it when I searched the docs.

jmbannon commented 5 months ago

@nothing2obvi Apologies for the very late response. break_on_existing will stop all additional scraping if it reaches a vid it has seen before in the download archive. So for example, let's say you download these:

vid3
vid2
vid1

The author then uploads vid4, but changes the ordering like so:

vid3
vid4
vid2
vid1

yt-dlp/ytdl-sub will break immediately and not download vid4 since it's breaking on vid3

GerbertBless commented 3 weeks ago

Hello,

I have been having the same issue, but with unlisted playlists I have freshly created myself. Deleting the archive file solves the problem, but the scraper tries to download everything again and I want to automate this and forget about it.

I have disabled break_on_existing in the conf file I specify in the command, but the logs seem to act as if it is still enabled.

Here is the conf file:

# This config uses prebuilt presets included with ytdl-sub to download and format
# channels from YouTube or other sites supported by yt-dlp into a TV show for
# your favorite player. The directory format will look something like
#
#   /tv_shows
#       /Season 2021
#           s2021.e0317 - Pattys Day Video-thumb.jpg
#           s2021.e0317 - Pattys Day Video.mp4
#           s2021.e0317 - Pattys Day Video.nfo
#       /Season 2022
#           s2022.e1225 - Merry Christmas-thumb.jpg
#           s2022.e1225 - Merry Christmas.mp4
#           s2022.e1225 - Merry Christmas.nfo
#       poster.jpg
#       fanart.jpg
#       tvshow.nfo
#
# The idea is to use dates as numerics to represent season and episode numbers.

configuration:
  persist_logs:
    logs_directory: '/mnt/streamy/ytdl-sub/logs'
  working_directory: '/mnt/streamy/ytdl-sub/'

presets:

  # Your main TV show preset - all your tv show subscriptions will use this.
  tv_show:
    preset:
      # Choose one of the following player types:
      # - "kodi_tv_show_by_date"
      # - "jellyfin_tv_show_by_date"
      # - "plex_tv_show_by_date"

      - "jellyfin_tv_show_by_date"  # replace with desired player type

      # Choose one of the following season/episode formats:
      # - "season_by_year__episode_by_month_day"
      # - "season_by_year_month__episode_by_day"
      # - "season_by_year__episode_by_month_day_reversed"
      # - "season_by_year__episode_by_download_index"

      - "season_by_year__episode_by_month_day"  # replace with desired season/episode format

      # Include any of the presets listed below in your 'main preset' if you want
      # it applied to every TV show. Or, use them on the individual subscriptions.
      # - "only_recent_videos"
      - "add_subtitles"
      # - "sponsorblock"
      - "include_info_json"

    # To download age-restricted videos, you will need to uncomment and set your cookie
    # file here as a ytdl parameter. For more info, see
    # https://ytdl-sub.readthedocs.io/en/latest/faq.html#download-age-restricted-youtube-videos
    #
    # ytdl_options:
    #   cookiefile: "/config/cookie_file.txt"  # replace with actual cookie file path

    overrides:
      tv_show_directory: "/mnt/streamy/videos/Subs/"  # replace with path to tv show directory
      # Fields in the prebuilt preset that can be changed:
      #
      episode_title: "{title} - {upload_date_standardized}"
      # episode_plot: "{webpage_url}"  # source variable for the video description is {description}

####################################################################################################

  # Preset to only download and keep recent videos
  only_recent_videos:

    # Only download videos within the download_range
    #date_range:
    # after: "today-{download_range}"

    # Stops fetching metadata if the video is out of range (saves time + bandwidth)
    ytdl_options:
      break_on_reject: True
      break_on_existing: False
      cookiefile: "/mnt/streamy/ytdl-sub/cookies.txt"

    # Deletes any videos older than download_range. WARNING: do not use
    # "season_by_year__episode_by_download_index" if you plan to delete older videos
    #output_options:
    #  keep_files_after: "today-{download_range}"

    # Set the duration of download_range, defaults to 2 months
    # overrides:
    # download_range: "2months"

####################################################################################################

  # Preset to download subtitles (either by file or embedded)
  add_subtitles:
    subtitles:
      # Embed subtitles into the video
      embed_subtitles: True
      # And/or download them as a file. Uncomment to download as file:
      # subtitles_name: "{episode_file_path}.{lang}.{subtitles_ext}"
      # subtitles_type: "srt"

      languages: "en"  # supports list of multiple languages
      allow_auto_generated_subtitles: True  # allow auto subtitles

####################################################################################################

  # Preset to cut sponsor segments from videos
  sponsorblock:
    # If you download using cron, it is wise to add a delay before downloading ad-filled content to
    # give folks time to submit sponsor segments. Uncomment to wait 2 days before download a video.
    # date_range:
    #  before: "today-2days"

    chapters:
      # Remove all of these sponsorblock categories
      sponsorblock_categories:
        - "intro"
        - "outro"
        - "selfpromo"
        - "preview"
        - "interaction"
        - "sponsor"
        - "music_offtopic"
      remove_sponsorblock_categories: "all"
      force_key_frames: False

####################################################################################################

  # Preset for the hoarders who want to also save the info.json file
  include_info_json:
    output_options:
      info_json_name: "{episode_file_path}.{info_json_ext}"

And here is the log:

[ytdl-sub] Validating subscriptions...
[ytdl-sub] Beginning subscription download for subs
[ytdl-sub] Subscription full yaml:
presets:
  subs:
    chapters:
      embed_chapters: true
    download:
    - download_reverse: false
      url: '{%bilateral_url(url) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url2) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url3) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url4) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url5) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url6) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url7) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url8) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url9) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url10) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url11) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url12) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url13) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url14) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url15) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url16) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url17) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url18) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url19) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url20) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url21) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url22) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url23) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url24) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url25) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url26) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url27) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url28) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url29) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url30) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url31) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url32) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url33) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url34) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url35) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url36) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url37) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url38) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url39) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url40) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url41) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url42) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url43) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url44) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url45) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url46) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url47) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url48) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url49) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url50) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url51) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url52) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url53) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url54) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url55) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url56) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url57) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url58) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url59) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url60) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url61) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url62) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url63) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url64) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url65) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url66) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url67) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url68) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url69) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url70) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url71) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url72) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url73) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url74) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url75) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url76) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url77) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url78) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url79) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url80) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url81) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url82) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url83) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url84) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url85) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url86) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url87) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url88) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url89) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url90) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url91) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url92) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url93) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url94) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url95) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url96) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url97) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url98) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url99) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{%bilateral_url(url100) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - playlist_thumbnails:
      - name: '{avatar_uncropped_thumbnail_file_name}'
        uid: avatar_uncropped
      - name: '{banner_uncropped_thumbnail_file_name}'
        uid: banner_uncropped
      source_thumbnails:
      - name: '{avatar_uncropped_thumbnail_file_name}'
        uid: avatar_uncropped
      - name: '{banner_uncropped_thumbnail_file_name}'
        uid: banner_uncropped
      url: '{url}'
    - url: '{url2}'
    - url: '{url3}'
    - url: '{url4}'
    - url: '{url5}'
    - url: '{url6}'
    - url: '{url7}'
    - url: '{url8}'
    - url: '{url9}'
    - url: '{url10}'
    - url: '{url11}'
    - url: '{url12}'
    - url: '{url13}'
    - url: '{url14}'
    - url: '{url15}'
    - url: '{url16}'
    - url: '{url17}'
    - url: '{url18}'
    - url: '{url19}'
    - url: '{url20}'
    - url: '{url21}'
    - url: '{url22}'
    - url: '{url23}'
    - url: '{url24}'
    - url: '{url25}'
    - url: '{url26}'
    - url: '{url27}'
    - url: '{url28}'
    - url: '{url29}'
    - url: '{url30}'
    - url: '{url31}'
    - url: '{url32}'
    - url: '{url33}'
    - url: '{url34}'
    - url: '{url35}'
    - url: '{url36}'
    - url: '{url37}'
    - url: '{url38}'
    - url: '{url39}'
    - url: '{url40}'
    - url: '{url41}'
    - url: '{url42}'
    - url: '{url43}'
    - url: '{url44}'
    - url: '{url45}'
    - url: '{url46}'
    - url: '{url47}'
    - url: '{url48}'
    - url: '{url49}'
    - url: '{url50}'
    - url: '{url51}'
    - url: '{url52}'
    - url: '{url53}'
    - url: '{url54}'
    - url: '{url55}'
    - url: '{url56}'
    - url: '{url57}'
    - url: '{url58}'
    - url: '{url59}'
    - url: '{url60}'
    - url: '{url61}'
    - url: '{url62}'
    - url: '{url63}'
    - url: '{url64}'
    - url: '{url65}'
    - url: '{url66}'
    - url: '{url67}'
    - url: '{url68}'
    - url: '{url69}'
    - url: '{url70}'
    - url: '{url71}'
    - url: '{url72}'
    - url: '{url73}'
    - url: '{url74}'
    - url: '{url75}'
    - url: '{url76}'
    - url: '{url77}'
    - url: '{url78}'
    - url: '{url79}'
    - url: '{url80}'
    - url: '{url81}'
    - url: '{url82}'
    - url: '{url83}'
    - url: '{url84}'
    - url: '{url85}'
    - url: '{url86}'
    - url: '{url87}'
    - url: '{url88}'
    - url: '{url89}'
    - url: '{url90}'
    - url: '{url91}'
    - url: '{url92}'
    - url: '{url93}'
    - url: '{url94}'
    - url: '{url95}'
    - url: '{url96}'
    - url: '{url97}'
    - url: '{url98}'
    - url: '{url99}'
    - url: '{url100}'
    nfo_tags:
      nfo_name: '{episode_file_path}.nfo'
      nfo_root: episodedetails
      tags:
        aired: '{episode_date_standardized}'
        episode: '{episode_number}'
        genre:
        - '{tv_show_genre}'
        mpaa: '{episode_content_rating}'
        plot: '{episode_plot}'
        season: '{season_number}'
        title: '{episode_title}'
        year: '{episode_year}'
    output_directory_nfo_tags:
      nfo_name: tvshow.nfo
      nfo_root: tvshow
      tags:
        genre:
        - '{tv_show_genre}'
        mpaa: '{tv_show_content_rating}'
        title: '{tv_show_name}'
    output_options:
      file_name: '{episode_file_path}.{ext}'
      info_json_name: '{episode_file_path}.{info_json_ext}'
      maintain_download_archive: true
      output_directory: '{tv_show_directory}/{tv_show_name_sanitized}'
      thumbnail_name: '{thumbnail_file_name}'
    overrides:
      '%bilateral_url': "{ \n  %if(\n    %and(\n      enable_bilateral_scraping,\n\
        \      subscription_has_download_archive,\n      %is_bilateral_url($0)\n \
        \   ),\n    $0,\n    \"\"\n  )\n}"
      '%is_bilateral_url': '{ %contains( $0, "youtube.com/playlist" ) }'
      avatar_uncropped_thumbnail_file_name: '{tv_show_poster_file_name}'
      banner_uncropped_thumbnail_file_name: '{tv_show_fanart_file_name}'
      enable_bilateral_scraping: true
      episode_content_rating: '{tv_show_content_rating}'
      episode_date_standardized: '{upload_date_standardized}'
      episode_file_name: s{season_number_padded}.e{episode_number_padded} - {file_title}
      episode_file_path: '{season_directory_name_sanitized}/{episode_file_name_sanitized}'
      episode_number: '{upload_month}{upload_day_padded}{upload_date_index_padded}'
      episode_number_padded: '{upload_month_padded}{upload_day_padded}{upload_date_index_padded}'
      episode_plot: '{webpage_url}

        {description}'
      episode_title: '{title} - {upload_date_standardized}'
      episode_year: '{upload_year}'
      file_title: '{title_sanitized}'
      file_uid: '{uid_sanitized}'
      season_directory_name: Season {season_number_padded}
      season_number: '{upload_year}'
      season_number_padded: '{season_number}'
      season_poster_file_name: season{season_number_padded}-poster.jpg
      subscription_array: '{ [] }'
      subscription_indent_1: '{tv_show_genre_default}'
      subscription_indent_2: '{tv_show_content_rating_default}'
      subscription_value: ''
      subscription_value_10: ''
      subscription_value_100: ''
      subscription_value_11: ''
      subscription_value_12: ''
      subscription_value_13: ''
      subscription_value_14: ''
      subscription_value_15: ''
      subscription_value_16: ''
      subscription_value_17: ''
      subscription_value_18: ''
      subscription_value_19: ''
      subscription_value_2: ''
      subscription_value_20: ''
      subscription_value_21: ''
      subscription_value_22: ''
      subscription_value_23: ''
      subscription_value_24: ''
      subscription_value_25: ''
      subscription_value_26: ''
      subscription_value_27: ''
      subscription_value_28: ''
      subscription_value_29: ''
      subscription_value_3: ''
      subscription_value_30: ''
      subscription_value_31: ''
      subscription_value_32: ''
      subscription_value_33: ''
      subscription_value_34: ''
      subscription_value_35: ''
      subscription_value_36: ''
      subscription_value_37: ''
      subscription_value_38: ''
      subscription_value_39: ''
      subscription_value_4: ''
      subscription_value_40: ''
      subscription_value_41: ''
      subscription_value_42: ''
      subscription_value_43: ''
      subscription_value_44: ''
      subscription_value_45: ''
      subscription_value_46: ''
      subscription_value_47: ''
      subscription_value_48: ''
      subscription_value_49: ''
      subscription_value_5: ''
      subscription_value_50: ''
      subscription_value_51: ''
      subscription_value_52: ''
      subscription_value_53: ''
      subscription_value_54: ''
      subscription_value_55: ''
      subscription_value_56: ''
      subscription_value_57: ''
      subscription_value_58: ''
      subscription_value_59: ''
      subscription_value_6: ''
      subscription_value_60: ''
      subscription_value_61: ''
      subscription_value_62: ''
      subscription_value_63: ''
      subscription_value_64: ''
      subscription_value_65: ''
      subscription_value_66: ''
      subscription_value_67: ''
      subscription_value_68: ''
      subscription_value_69: ''
      subscription_value_7: ''
      subscription_value_70: ''
      subscription_value_71: ''
      subscription_value_72: ''
      subscription_value_73: ''
      subscription_value_74: ''
      subscription_value_75: ''
      subscription_value_76: ''
      subscription_value_77: ''
      subscription_value_78: ''
      subscription_value_79: ''
      subscription_value_8: ''
      subscription_value_80: ''
      subscription_value_81: ''
      subscription_value_82: ''
      subscription_value_83: ''
      subscription_value_84: ''
      subscription_value_85: ''
      subscription_value_86: ''
      subscription_value_87: ''
      subscription_value_88: ''
      subscription_value_89: ''
      subscription_value_9: ''
      subscription_value_90: ''
      subscription_value_91: ''
      subscription_value_92: ''
      subscription_value_93: ''
      subscription_value_94: ''
      subscription_value_95: ''
      subscription_value_96: ''
      subscription_value_97: ''
      subscription_value_98: ''
      subscription_value_99: ''
      thumbnail_file_name: '{episode_file_path}-thumb.jpg'
      tv_show_content_rating: '{subscription_indent_2}'
      tv_show_content_rating_default: TV-14
      tv_show_directory: /mnt/streamy/videos/Subs/
      tv_show_fanart_file_name: fanart.jpg
      tv_show_genre: Animation
      tv_show_genre_default: ytdl-sub
      tv_show_name: Filthy Frank
      tv_show_poster_file_name: poster.jpg
      url: https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
      url10: '{subscription_value_10}'
      url100: '{subscription_value_100}'
      url11: '{subscription_value_11}'
      url12: '{subscription_value_12}'
      url13: '{subscription_value_13}'
      url14: '{subscription_value_14}'
      url15: '{subscription_value_15}'
      url16: '{subscription_value_16}'
      url17: '{subscription_value_17}'
      url18: '{subscription_value_18}'
      url19: '{subscription_value_19}'
      url2: '{subscription_value_2}'
      url20: '{subscription_value_20}'
      url21: '{subscription_value_21}'
      url22: '{subscription_value_22}'
      url23: '{subscription_value_23}'
      url24: '{subscription_value_24}'
      url25: '{subscription_value_25}'
      url26: '{subscription_value_26}'
      url27: '{subscription_value_27}'
      url28: '{subscription_value_28}'
      url29: '{subscription_value_29}'
      url3: '{subscription_value_3}'
      url30: '{subscription_value_30}'
      url31: '{subscription_value_31}'
      url32: '{subscription_value_32}'
      url33: '{subscription_value_33}'
      url34: '{subscription_value_34}'
      url35: '{subscription_value_35}'
      url36: '{subscription_value_36}'
      url37: '{subscription_value_37}'
      url38: '{subscription_value_38}'
      url39: '{subscription_value_39}'
      url4: '{subscription_value_4}'
      url40: '{subscription_value_40}'
      url41: '{subscription_value_41}'
      url42: '{subscription_value_42}'
      url43: '{subscription_value_43}'
      url44: '{subscription_value_44}'
      url45: '{subscription_value_45}'
      url46: '{subscription_value_46}'
      url47: '{subscription_value_47}'
      url48: '{subscription_value_48}'
      url49: '{subscription_value_49}'
      url5: '{subscription_value_5}'
      url50: '{subscription_value_50}'
      url51: '{subscription_value_51}'
      url52: '{subscription_value_52}'
      url53: '{subscription_value_53}'
      url54: '{subscription_value_54}'
      url55: '{subscription_value_55}'
      url56: '{subscription_value_56}'
      url57: '{subscription_value_57}'
      url58: '{subscription_value_58}'
      url59: '{subscription_value_59}'
      url6: '{subscription_value_6}'
      url60: '{subscription_value_60}'
      url61: '{subscription_value_61}'
      url62: '{subscription_value_62}'
      url63: '{subscription_value_63}'
      url64: '{subscription_value_64}'
      url65: '{subscription_value_65}'
      url66: '{subscription_value_66}'
      url67: '{subscription_value_67}'
      url68: '{subscription_value_68}'
      url69: '{subscription_value_69}'
      url7: '{subscription_value_7}'
      url70: '{subscription_value_70}'
      url71: '{subscription_value_71}'
      url72: '{subscription_value_72}'
      url73: '{subscription_value_73}'
      url74: '{subscription_value_74}'
      url75: '{subscription_value_75}'
      url76: '{subscription_value_76}'
      url77: '{subscription_value_77}'
      url78: '{subscription_value_78}'
      url79: '{subscription_value_79}'
      url8: '{subscription_value_8}'
      url80: '{subscription_value_80}'
      url81: '{subscription_value_81}'
      url82: '{subscription_value_82}'
      url83: '{subscription_value_83}'
      url84: '{subscription_value_84}'
      url85: '{subscription_value_85}'
      url86: '{subscription_value_86}'
      url87: '{subscription_value_87}'
      url88: '{subscription_value_88}'
      url89: '{subscription_value_89}'
      url9: '{subscription_value_9}'
      url90: '{subscription_value_90}'
      url91: '{subscription_value_91}'
      url92: '{subscription_value_92}'
      url93: '{subscription_value_93}'
      url94: '{subscription_value_94}'
      url95: '{subscription_value_95}'
      url96: '{subscription_value_96}'
      url97: '{subscription_value_97}'
      url98: '{subscription_value_98}'
      url99: '{subscription_value_99}'
    preset:
    - _jellyfin_tv_show
    - _tv_show_by_date
    - _season_by_year
    - jellyfin_tv_show_by_date
    - season_by_year__episode_by_month_day
    - add_subtitles
    - include_info_json
    - tv_show
    subtitles:
      allow_auto_generated_subtitles: true
      embed_subtitles: true
      languages: en
    video_tags:
      contentRating: '{episode_content_rating}'
      date: '{episode_date_standardized}'
      episode_id: '{episode_number}'
      genre: '{tv_show_genre}'
      show: '{tv_show_name}'
      synopsis: '{episode_plot}'
      title: '{episode_title}'
      year: '{episode_year}'
    ytdl_options:
      break_on_existing: true

[ytdl-sub:ytdl-options] Setting match-filters: 
 - !is_live & !is_upcoming & !post_live
[ytdl-sub:ytdl-options] Setting breaking-match-filters: []
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Redownloading playlist API JSON with unavailable videos
[ytdl-sub:yt-dlp] [download] Downloading playlist: FF Guest Apperances
[ytdl-sub:yt-dlp] [info] Writing playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6.info.json
[ytdl-sub:yt-dlp] [youtube:tab] Playlist FF Guest Apperances: Downloading 1 items of 5
[ytdl-sub:yt-dlp] [download] CnNT88aISu8: Edward Watermelon-hands has already been recorded in the archive
[ytdl-sub:yt-dlp-downloader] ExistingVideoReached, stopping additional downloads. (Can be disable by setting `ytdl_options.break_on_existing` to False).
[ytdl-sub:yt-dlp-downloader] Attempting to get parent metadata from URL https://www.youtube.com/@danielcavanaugh5905
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard', 'playlist_items': '0:0'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/@danielcavanaugh5905
[ytdl-sub:yt-dlp] [youtube:tab] @danielcavanaugh5905: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] Downloading all uploads of the channel. To download only the videos in a specific tab, pass the tab's URL
[ytdl-sub:yt-dlp] [download] Downloading playlist: Daniel Cavanaugh
[ytdl-sub:yt-dlp] [info] Writing playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/@danielcavanaugh5905.info.json
[ytdl-sub:yt-dlp] [youtube:tab] Playlist Daniel Cavanaugh: Downloading 0 items
[ytdl-sub:yt-dlp] [info] Writing updated playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/@danielcavanaugh5905.info.json
[ytdl-sub:yt-dlp] [download] Finished downloading playlist: Daniel Cavanaugh
[ytdl-sub:yt-dlp-downloader] Adding parent metadata with ids [@danielcavanaugh5905, @danielcavanaugh5905]
[ytdl-sub:downloader] Beginning downloads for https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'playlist_items': <ytdl_sub.validators.string_formatter_validators.OverridesStringFormatterValidator object at 0x722ffa818100>, 'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Redownloading playlist API JSON with unavailable videos
[ytdl-sub:yt-dlp] [download] Downloading playlist: FF Guest Apperances
[ytdl-sub:yt-dlp] ERROR: 'OverridesStringFormatterValidator' object has no attribute 'split'
[ytdl-sub:downloader] Beginning downloads for https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
jmbannon commented 3 weeks ago

Thanks for the heads up @GerbertBless , https://github.com/jmbannon/ytdl-sub/pull/1101 should resolve your issue

GerbertBless commented 3 weeks ago

Hey,

Thanks for the quick turn around, but this didn't seem to address my issue. After upgrading the executable and verifying with -v that my command was using the latest version, with the same config file I used earlier, the log still shows the same behavior of ignoring the option break_on_existing option. I feel pretty sure there are no errors in my config file. Formatting looks right to me and I haven't gotten any errors about it, but maybe there is something I'm missing? In any case, here is the latest log:

[ytdl-sub] Validating subscriptions...
[ytdl-sub] Beginning subscription download for subs
[ytdl-sub] Subscription full yaml:
presets:
  subs:
    chapters:
      embed_chapters: true
    download:
    - download_reverse: false
      url: '{%bilateral_url(url) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url2) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url3) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url4) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url5) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url6) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url7) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url8) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url9) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url10) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url11) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url12) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url13) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url14) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url15) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url16) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url17) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url18) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url19) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url20) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url21) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url22) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url23) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url24) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url25) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url26) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url27) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url28) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url29) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url30) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url31) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url32) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url33) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url34) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url35) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url36) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url37) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url38) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url39) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url40) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url41) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url42) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url43) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url44) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url45) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url46) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url47) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url48) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url49) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url50) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url51) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url52) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url53) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url54) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url55) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url56) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url57) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url58) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url59) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url60) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url61) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url62) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url63) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url64) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url65) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url66) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url67) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url68) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url69) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url70) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url71) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url72) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url73) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url74) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url75) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url76) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url77) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url78) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url79) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url80) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url81) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url82) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url83) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url84) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url85) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url86) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url87) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url88) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url89) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url90) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url91) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url92) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url93) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url94) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url95) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url96) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url97) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url98) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{ %bilateral_url(url99) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - download_reverse: false
      url: '{%bilateral_url(url100) }'
      ytdl_options:
        playlist_items: -1:0:-1
    - playlist_thumbnails:
      - name: '{avatar_uncropped_thumbnail_file_name}'
        uid: avatar_uncropped
      - name: '{banner_uncropped_thumbnail_file_name}'
        uid: banner_uncropped
      source_thumbnails:
      - name: '{avatar_uncropped_thumbnail_file_name}'
        uid: avatar_uncropped
      - name: '{banner_uncropped_thumbnail_file_name}'
        uid: banner_uncropped
      url: '{url}'
    - url: '{url2}'
    - url: '{url3}'
    - url: '{url4}'
    - url: '{url5}'
    - url: '{url6}'
    - url: '{url7}'
    - url: '{url8}'
    - url: '{url9}'
    - url: '{url10}'
    - url: '{url11}'
    - url: '{url12}'
    - url: '{url13}'
    - url: '{url14}'
    - url: '{url15}'
    - url: '{url16}'
    - url: '{url17}'
    - url: '{url18}'
    - url: '{url19}'
    - url: '{url20}'
    - url: '{url21}'
    - url: '{url22}'
    - url: '{url23}'
    - url: '{url24}'
    - url: '{url25}'
    - url: '{url26}'
    - url: '{url27}'
    - url: '{url28}'
    - url: '{url29}'
    - url: '{url30}'
    - url: '{url31}'
    - url: '{url32}'
    - url: '{url33}'
    - url: '{url34}'
    - url: '{url35}'
    - url: '{url36}'
    - url: '{url37}'
    - url: '{url38}'
    - url: '{url39}'
    - url: '{url40}'
    - url: '{url41}'
    - url: '{url42}'
    - url: '{url43}'
    - url: '{url44}'
    - url: '{url45}'
    - url: '{url46}'
    - url: '{url47}'
    - url: '{url48}'
    - url: '{url49}'
    - url: '{url50}'
    - url: '{url51}'
    - url: '{url52}'
    - url: '{url53}'
    - url: '{url54}'
    - url: '{url55}'
    - url: '{url56}'
    - url: '{url57}'
    - url: '{url58}'
    - url: '{url59}'
    - url: '{url60}'
    - url: '{url61}'
    - url: '{url62}'
    - url: '{url63}'
    - url: '{url64}'
    - url: '{url65}'
    - url: '{url66}'
    - url: '{url67}'
    - url: '{url68}'
    - url: '{url69}'
    - url: '{url70}'
    - url: '{url71}'
    - url: '{url72}'
    - url: '{url73}'
    - url: '{url74}'
    - url: '{url75}'
    - url: '{url76}'
    - url: '{url77}'
    - url: '{url78}'
    - url: '{url79}'
    - url: '{url80}'
    - url: '{url81}'
    - url: '{url82}'
    - url: '{url83}'
    - url: '{url84}'
    - url: '{url85}'
    - url: '{url86}'
    - url: '{url87}'
    - url: '{url88}'
    - url: '{url89}'
    - url: '{url90}'
    - url: '{url91}'
    - url: '{url92}'
    - url: '{url93}'
    - url: '{url94}'
    - url: '{url95}'
    - url: '{url96}'
    - url: '{url97}'
    - url: '{url98}'
    - url: '{url99}'
    - url: '{url100}'
    nfo_tags:
      nfo_name: '{episode_file_path}.nfo'
      nfo_root: episodedetails
      tags:
        aired: '{episode_date_standardized}'
        episode: '{episode_number}'
        genre:
        - '{tv_show_genre}'
        mpaa: '{episode_content_rating}'
        plot: '{episode_plot}'
        season: '{season_number}'
        title: '{episode_title}'
        year: '{episode_year}'
    output_directory_nfo_tags:
      nfo_name: tvshow.nfo
      nfo_root: tvshow
      tags:
        genre:
        - '{tv_show_genre}'
        mpaa: '{tv_show_content_rating}'
        title: '{tv_show_name}'
    output_options:
      file_name: '{episode_file_path}.{ext}'
      info_json_name: '{episode_file_path}.{info_json_ext}'
      maintain_download_archive: true
      output_directory: '{tv_show_directory}/{tv_show_name_sanitized}'
      thumbnail_name: '{thumbnail_file_name}'
    overrides:
      '%bilateral_url': "{ \n  %if(\n    %and(\n      enable_bilateral_scraping,\n\
        \      subscription_has_download_archive,\n      %is_bilateral_url($0)\n \
        \   ),\n    $0,\n    \"\"\n  )\n}"
      '%is_bilateral_url': '{ %contains( $0, "youtube.com/playlist" ) }'
      avatar_uncropped_thumbnail_file_name: '{tv_show_poster_file_name}'
      banner_uncropped_thumbnail_file_name: '{tv_show_fanart_file_name}'
      enable_bilateral_scraping: true
      episode_content_rating: '{tv_show_content_rating}'
      episode_date_standardized: '{upload_date_standardized}'
      episode_file_name: s{season_number_padded}.e{episode_number_padded} - {file_title}
      episode_file_path: '{season_directory_name_sanitized}/{episode_file_name_sanitized}'
      episode_number: '{upload_month}{upload_day_padded}{upload_date_index_padded}'
      episode_number_padded: '{upload_month_padded}{upload_day_padded}{upload_date_index_padded}'
      episode_plot: '{webpage_url}

        {description}'
      episode_title: '{title} - {upload_date_standardized}'
      episode_year: '{upload_year}'
      file_title: '{title_sanitized}'
      file_uid: '{uid_sanitized}'
      season_directory_name: Season {season_number_padded}
      season_number: '{upload_year}'
      season_number_padded: '{season_number}'
      season_poster_file_name: season{season_number_padded}-poster.jpg
      subscription_array: '{ [] }'
      subscription_indent_1: '{tv_show_genre_default}'
      subscription_indent_2: '{tv_show_content_rating_default}'
      subscription_value: ''
      subscription_value_10: ''
      subscription_value_100: ''
      subscription_value_11: ''
      subscription_value_12: ''
      subscription_value_13: ''
      subscription_value_14: ''
      subscription_value_15: ''
      subscription_value_16: ''
      subscription_value_17: ''
      subscription_value_18: ''
      subscription_value_19: ''
      subscription_value_2: ''
      subscription_value_20: ''
      subscription_value_21: ''
      subscription_value_22: ''
      subscription_value_23: ''
      subscription_value_24: ''
      subscription_value_25: ''
      subscription_value_26: ''
      subscription_value_27: ''
      subscription_value_28: ''
      subscription_value_29: ''
      subscription_value_3: ''
      subscription_value_30: ''
      subscription_value_31: ''
      subscription_value_32: ''
      subscription_value_33: ''
      subscription_value_34: ''
      subscription_value_35: ''
      subscription_value_36: ''
      subscription_value_37: ''
      subscription_value_38: ''
      subscription_value_39: ''
      subscription_value_4: ''
      subscription_value_40: ''
      subscription_value_41: ''
      subscription_value_42: ''
      subscription_value_43: ''
      subscription_value_44: ''
      subscription_value_45: ''
      subscription_value_46: ''
      subscription_value_47: ''
      subscription_value_48: ''
      subscription_value_49: ''
      subscription_value_5: ''
      subscription_value_50: ''
      subscription_value_51: ''
      subscription_value_52: ''
      subscription_value_53: ''
      subscription_value_54: ''
      subscription_value_55: ''
      subscription_value_56: ''
      subscription_value_57: ''
      subscription_value_58: ''
      subscription_value_59: ''
      subscription_value_6: ''
      subscription_value_60: ''
      subscription_value_61: ''
      subscription_value_62: ''
      subscription_value_63: ''
      subscription_value_64: ''
      subscription_value_65: ''
      subscription_value_66: ''
      subscription_value_67: ''
      subscription_value_68: ''
      subscription_value_69: ''
      subscription_value_7: ''
      subscription_value_70: ''
      subscription_value_71: ''
      subscription_value_72: ''
      subscription_value_73: ''
      subscription_value_74: ''
      subscription_value_75: ''
      subscription_value_76: ''
      subscription_value_77: ''
      subscription_value_78: ''
      subscription_value_79: ''
      subscription_value_8: ''
      subscription_value_80: ''
      subscription_value_81: ''
      subscription_value_82: ''
      subscription_value_83: ''
      subscription_value_84: ''
      subscription_value_85: ''
      subscription_value_86: ''
      subscription_value_87: ''
      subscription_value_88: ''
      subscription_value_89: ''
      subscription_value_9: ''
      subscription_value_90: ''
      subscription_value_91: ''
      subscription_value_92: ''
      subscription_value_93: ''
      subscription_value_94: ''
      subscription_value_95: ''
      subscription_value_96: ''
      subscription_value_97: ''
      subscription_value_98: ''
      subscription_value_99: ''
      thumbnail_file_name: '{episode_file_path}-thumb.jpg'
      tv_show_content_rating: '{subscription_indent_2}'
      tv_show_content_rating_default: TV-14
      tv_show_directory: /mnt/streamy/videos/Subs/
      tv_show_fanart_file_name: fanart.jpg
      tv_show_genre: Animation
      tv_show_genre_default: ytdl-sub
      tv_show_name: Filthy Frank
      tv_show_poster_file_name: poster.jpg
      url: https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
      url10: '{subscription_value_10}'
      url100: '{subscription_value_100}'
      url11: '{subscription_value_11}'
      url12: '{subscription_value_12}'
      url13: '{subscription_value_13}'
      url14: '{subscription_value_14}'
      url15: '{subscription_value_15}'
      url16: '{subscription_value_16}'
      url17: '{subscription_value_17}'
      url18: '{subscription_value_18}'
      url19: '{subscription_value_19}'
      url2: '{subscription_value_2}'
      url20: '{subscription_value_20}'
      url21: '{subscription_value_21}'
      url22: '{subscription_value_22}'
      url23: '{subscription_value_23}'
      url24: '{subscription_value_24}'
      url25: '{subscription_value_25}'
      url26: '{subscription_value_26}'
      url27: '{subscription_value_27}'
      url28: '{subscription_value_28}'
      url29: '{subscription_value_29}'
      url3: '{subscription_value_3}'
      url30: '{subscription_value_30}'
      url31: '{subscription_value_31}'
      url32: '{subscription_value_32}'
      url33: '{subscription_value_33}'
      url34: '{subscription_value_34}'
      url35: '{subscription_value_35}'
      url36: '{subscription_value_36}'
      url37: '{subscription_value_37}'
      url38: '{subscription_value_38}'
      url39: '{subscription_value_39}'
      url4: '{subscription_value_4}'
      url40: '{subscription_value_40}'
      url41: '{subscription_value_41}'
      url42: '{subscription_value_42}'
      url43: '{subscription_value_43}'
      url44: '{subscription_value_44}'
      url45: '{subscription_value_45}'
      url46: '{subscription_value_46}'
      url47: '{subscription_value_47}'
      url48: '{subscription_value_48}'
      url49: '{subscription_value_49}'
      url5: '{subscription_value_5}'
      url50: '{subscription_value_50}'
      url51: '{subscription_value_51}'
      url52: '{subscription_value_52}'
      url53: '{subscription_value_53}'
      url54: '{subscription_value_54}'
      url55: '{subscription_value_55}'
      url56: '{subscription_value_56}'
      url57: '{subscription_value_57}'
      url58: '{subscription_value_58}'
      url59: '{subscription_value_59}'
      url6: '{subscription_value_6}'
      url60: '{subscription_value_60}'
      url61: '{subscription_value_61}'
      url62: '{subscription_value_62}'
      url63: '{subscription_value_63}'
      url64: '{subscription_value_64}'
      url65: '{subscription_value_65}'
      url66: '{subscription_value_66}'
      url67: '{subscription_value_67}'
      url68: '{subscription_value_68}'
      url69: '{subscription_value_69}'
      url7: '{subscription_value_7}'
      url70: '{subscription_value_70}'
      url71: '{subscription_value_71}'
      url72: '{subscription_value_72}'
      url73: '{subscription_value_73}'
      url74: '{subscription_value_74}'
      url75: '{subscription_value_75}'
      url76: '{subscription_value_76}'
      url77: '{subscription_value_77}'
      url78: '{subscription_value_78}'
      url79: '{subscription_value_79}'
      url8: '{subscription_value_8}'
      url80: '{subscription_value_80}'
      url81: '{subscription_value_81}'
      url82: '{subscription_value_82}'
      url83: '{subscription_value_83}'
      url84: '{subscription_value_84}'
      url85: '{subscription_value_85}'
      url86: '{subscription_value_86}'
      url87: '{subscription_value_87}'
      url88: '{subscription_value_88}'
      url89: '{subscription_value_89}'
      url9: '{subscription_value_9}'
      url90: '{subscription_value_90}'
      url91: '{subscription_value_91}'
      url92: '{subscription_value_92}'
      url93: '{subscription_value_93}'
      url94: '{subscription_value_94}'
      url95: '{subscription_value_95}'
      url96: '{subscription_value_96}'
      url97: '{subscription_value_97}'
      url98: '{subscription_value_98}'
      url99: '{subscription_value_99}'
    preset:
    - _jellyfin_tv_show
    - _tv_show_by_date
    - _season_by_year
    - jellyfin_tv_show_by_date
    - season_by_year__episode_by_month_day
    - add_subtitles
    - include_info_json
    - tv_show
    subtitles:
      allow_auto_generated_subtitles: true
      embed_subtitles: true
      languages: en
    video_tags:
      contentRating: '{episode_content_rating}'
      date: '{episode_date_standardized}'
      episode_id: '{episode_number}'
      genre: '{tv_show_genre}'
      show: '{tv_show_name}'
      synopsis: '{episode_plot}'
      title: '{episode_title}'
      year: '{episode_year}'
    ytdl_options:
      break_on_existing: true

[ytdl-sub:ytdl-options] Setting match-filters: 
 - !is_live & !is_upcoming & !post_live
[ytdl-sub:ytdl-options] Setting breaking-match-filters: []
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Redownloading playlist API JSON with unavailable videos
[ytdl-sub:yt-dlp] [download] Downloading playlist: FF Guest Apperances
[ytdl-sub:yt-dlp] [info] Writing playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6.info.json
[ytdl-sub:yt-dlp] [youtube:tab] Playlist FF Guest Apperances: Downloading 1 items of 5
[ytdl-sub:yt-dlp] [download] CnNT88aISu8: Edward Watermelon-hands has already been recorded in the archive
[ytdl-sub:yt-dlp-downloader] ExistingVideoReached, stopping additional downloads. (Can be disable by setting `ytdl_options.break_on_existing` to False).
[ytdl-sub:yt-dlp-downloader] Attempting to get parent metadata from URL https://www.youtube.com/@danielcavanaugh5905
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard', 'playlist_items': '0:0'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/@danielcavanaugh5905
[ytdl-sub:yt-dlp] [youtube:tab] @danielcavanaugh5905: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] Downloading all uploads of the channel. To download only the videos in a specific tab, pass the tab's URL
[ytdl-sub:yt-dlp] [download] Downloading playlist: Daniel Cavanaugh
[ytdl-sub:yt-dlp] [info] Writing playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/@danielcavanaugh5905.info.json
[ytdl-sub:yt-dlp] [youtube:tab] Playlist Daniel Cavanaugh: Downloading 0 items
[ytdl-sub:yt-dlp] [info] Writing updated playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/@danielcavanaugh5905.info.json
[ytdl-sub:yt-dlp] [download] Finished downloading playlist: Daniel Cavanaugh
[ytdl-sub:yt-dlp-downloader] Adding parent metadata with ids [@danielcavanaugh5905, @danielcavanaugh5905]
[ytdl-sub:downloader] Beginning downloads for https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'playlist_items': '-1:0:-1', 'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6: Redownloading playlist API JSON with unavailable videos
[ytdl-sub:yt-dlp] [download] Downloading playlist: FF Guest Apperances
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6 page 1: Downloading API JSON
[ytdl-sub:yt-dlp] WARNING: [youtube:tab] Incomplete data received. Retrying (1/3)...
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6 page 1: Downloading API JSON
[ytdl-sub:yt-dlp] WARNING: [youtube:tab] Incomplete data received. Retrying (2/3)...
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6 page 1: Downloading API JSON
[ytdl-sub:yt-dlp] WARNING: [youtube:tab] Incomplete data received. Retrying (3/3)...
[ytdl-sub:yt-dlp] [youtube:tab] PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6 page 1: Downloading API JSON
[ytdl-sub:yt-dlp] WARNING: [youtube:tab] Incomplete data received. Giving up after 3 retries
[ytdl-sub:yt-dlp] [info] Writing playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6.info.json
[ytdl-sub:yt-dlp] [youtube:tab] Playlist FF Guest Apperances: Downloading 1 items of 5
[ytdl-sub:yt-dlp] [download] ybl-u1uq2Co: The Ramen Off - (Feat. FilthyFrank & HowToBasic) has already been recorded in the archive
[ytdl-sub:yt-dlp-downloader] ExistingVideoReached, stopping additional downloads. (Can be disable by setting `ytdl_options.break_on_existing` to False).
[ytdl-sub:yt-dlp-downloader] Attempting to get parent metadata from URL https://www.youtube.com/@danielcavanaugh5905
[ytdl-sub:yt-dlp-downloader] ytdl_options: {'playlist_items': '0:0', 'ignoreerrors': True, 'outtmpl': '/mnt/streamy/ytdl-sub/subs/%(id)S.%(ext)s', 'writethumbnail': False, 'ffmpeg_location': '/usr/bin/ffmpeg', 'download_archive': '/mnt/streamy/ytdl-sub/subs/.ytdl-sub-subs-download-archive.json-ytdl-archive', 'match_filter': yt_dlp.utils.match_filter_func(['!is_live & !is_upcoming & !post_live'], []), 'break_on_existing': True, 'skip_download': True, 'writeinfojson': True, 'extract_flat': 'discard'}
[ytdl-sub:yt-dlp] [youtube:tab] Extracting URL: https://www.youtube.com/@danielcavanaugh5905
[ytdl-sub:yt-dlp] [youtube:tab] @danielcavanaugh5905: Downloading webpage
[ytdl-sub:yt-dlp] [youtube:tab] Downloading all uploads of the channel. To download only the videos in a specific tab, pass the tab's URL
[ytdl-sub:yt-dlp] [download] Downloading playlist: Daniel Cavanaugh
[ytdl-sub:yt-dlp] [info] Writing playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/@danielcavanaugh5905.info.json
[ytdl-sub:yt-dlp] [youtube:tab] Playlist Daniel Cavanaugh: Downloading 0 items
[ytdl-sub:yt-dlp] [info] Writing updated playlist metadata as JSON to: /mnt/streamy/ytdl-sub/subs/@danielcavanaugh5905.info.json
[ytdl-sub:yt-dlp] [download] Finished downloading playlist: Daniel Cavanaugh
[ytdl-sub:yt-dlp-downloader] Adding parent metadata with ids [@danielcavanaugh5905, @danielcavanaugh5905]
[ytdl-sub:downloader] Beginning downloads for https://www.youtube.com/playlist?list=PLdd_1efceN2FP9USkRvE1v7cgVIewjpB6
jmbannon commented 3 weeks ago

Can you provide the full log? The last line is right when the actual download begins @GerbertBless

GerbertBless commented 3 weeks ago

Oddly enough I went back and looked at the log and that is where it ends. Ran it again and the log it just created stops there as well. It also looks to me like the last thing it is trying to download is the channel that created the playlist, which is my google account where I have nothing uploaded. It seems to try and do the playlist first, stops because it sees an existing video file, and then tried to download everything from my channel.

jmbannon commented 3 weeks ago

Hmm, can you run manually with --log-level verbose @GerbertBless and provide the logs from your terminal

GerbertBless commented 2 weeks ago

Hey,

Sorry for the delay. I noticed that I was also missing age restricted videos in other collections and realized that none of my options were passing through. After looking at my config file more carefully, I found that I placed the yt-dl options under the wrong preset. Basically, I searched for the yt-dl options and just put the options I wanted under the first thing that showed up without checking that there was more than one section where that might apply. Its all working now. My bad