From 286639b24cc29fe843270452e245e9ec2081ca55 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Thu, 20 Nov 2025 19:28:46 +0100 Subject: [PATCH] add latest days filter to yt-dlp --- hosts/nixos/hs/home.nix | 2 ++ modules/yt-dlp.nix | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/hosts/nixos/hs/home.nix b/hosts/nixos/hs/home.nix index 5319307..e6979d7 100644 --- a/hosts/nixos/hs/home.nix +++ b/hosts/nixos/hs/home.nix @@ -34,6 +34,8 @@ "dlv youtube -n 3 -r 1 --min 1 --max 180 'https://www.youtube.com/@LetsGameItOut/videos'" "dlv bilibili -n 3 -r 1 --title '摸鱼切片' 'https://space.bilibili.com/15810/upload/video'" # Mr.Quin "dlv bilibili -n 3 -r 1 -p 'https://space.bilibili.com/8012266/lists/3844977?type=season'" # PGN + "dlv bilibili --days 7 -r 1 -p 'https://space.bilibili.com/781973/lists/1035653?type=season'" # 兰柚梓 + "dlv bilibili --days 7 -r 1 -p 'https://space.bilibili.com/387087193/lists/518549?type=season'" # 平安Draymond ]; }; diff --git a/modules/yt-dlp.nix b/modules/yt-dlp.nix index 6784e89..5187186 100644 --- a/modules/yt-dlp.nix +++ b/modules/yt-dlp.nix @@ -175,6 +175,7 @@ in local min_duration="" local max_duration="" local title_filter="" + local days_filter="" local url="" # Parse arguments @@ -204,6 +205,10 @@ in title_filter="$2" shift 2 ;; + --days|--within-days) + days_filter="$2" + shift 2 + ;; youtube|bilibili) platform="$1" shift @@ -231,12 +236,14 @@ in echo " --min Minimum video duration in minutes" echo " --max Maximum video duration in minutes" echo " --title Filter videos by title (case-insensitive)" + echo " --days Download videos uploaded within N days" echo "" echo "Examples:" echo " dlv youtube - Download single YouTube video" echo " dlv youtube -p - Download YouTube playlist" echo " dlv youtube --min 5 --max 30 - Download videos between 5-30 minutes" echo " dlv youtube --title \"tutorial\" - Download videos with 'tutorial' in title" + echo " dlv youtube --days 7 -p - Download playlist videos from last 7 days" echo " dlv bilibili -p -n 10 - Download first 10 videos from playlist" return 1 fi @@ -319,6 +326,7 @@ in cmd="$cmd --yes-playlist" fi [[ -n "$max_downloads" ]] && cmd="$cmd --playlist-end '$max_downloads'" + [[ -n "$days_filter" ]] && cmd="$cmd --dateafter 'today-''${days_filter}days'" [[ -n "$temp_cookies" ]] && cmd="$cmd --cookies '$temp_cookies'" || cmd="$cmd --no-cookies" cmd="$cmd --download-archive '$archive_file' -o '$output_template' '$url'" @@ -330,11 +338,12 @@ in # Add filter info if any local filter_info="" - if [[ -n "$min_duration" ]] || [[ -n "$max_duration" ]] || [[ -n "$title_filter" ]]; then + if [[ -n "$min_duration" ]] || [[ -n "$max_duration" ]] || [[ -n "$title_filter" ]] || [[ -n "$days_filter" ]]; then filter_info=" (Filters:" [[ -n "$min_duration" ]] && filter_info="$filter_info min ''${min_duration}m" [[ -n "$max_duration" ]] && filter_info="$filter_info max ''${max_duration}m" [[ -n "$title_filter" ]] && filter_info="$filter_info title: \"$title_filter\"" + [[ -n "$days_filter" ]] && filter_info="$filter_info within ''${days_filter} days" filter_info="$filter_info)" fi [[ -n "$max_downloads" ]] && filter_info="''${filter_info} [max ''${max_downloads} videos]"