From 34dbdaf0d0ab0c3221cc8c2e6bb7e76f04ae8adc Mon Sep 17 00:00:00 2001 From: Autumn Date: Fri, 8 May 2026 08:19:50 +0100 Subject: [conf/nushell] added youtube helper script --- install.nu | 7 +++++ src/nushell/020_config.nu | 6 ++++ src/nushell/scripts/youtube.nu | 63 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 src/nushell/scripts/youtube.nu diff --git a/install.nu b/install.nu index 80963d5..e29f919 100755 --- a/install.nu +++ b/install.nu @@ -41,3 +41,10 @@ mkdir $"($env.HOME)/.config/nushell" cp $"($DOTFILES_DIR)/nushell/($DEVICE_ID)_config.nu" $"($env.HOME)/.config/nushell/config.nu" cp $"($DOTFILES_DIR)/nushell/($DEVICE_ID)_environment.nu" $"($env.HOME)/.config/nushell/environment.nu" + +if ($DEVICE_ID == "010" or $DEVICE_ID == "020" or $DEVICE_ID == "040") { + + mkdir $"($env.HOME)/.config/nushell/scripts" + cp $"($DOTFILES_DIR)/nushell/scripts/youtube.nu" $"($env.HOME)/.config/nushell/scripts/youtube.nu" + +} diff --git a/src/nushell/020_config.nu b/src/nushell/020_config.nu index 10fddd6..7ac7b2e 100644 --- a/src/nushell/020_config.nu +++ b/src/nushell/020_config.nu @@ -6,6 +6,12 @@ # ~~~ environment use environment.nu +# +# ~~~ custom commands + +# youtube +use scripts/youtube.nu * + # # ~~~ theming diff --git a/src/nushell/scripts/youtube.nu b/src/nushell/scripts/youtube.nu new file mode 100644 index 0000000..5423b9d --- /dev/null +++ b/src/nushell/scripts/youtube.nu @@ -0,0 +1,63 @@ +#!/usr/bin/env nu + +# +# ~~~ nushell youtube downloader +# + +# +# ~~~ help command + +# A YouTube helper program +export def yt []: nothing -> nothing { + help yt +} + +# +# ~~~ download a video + +# Download a YouTube video with x265 +export def "yt video" [ + video: string, # A YouTube video URL + title: string # The filename of the video +]: nothing -> nothing { + + # download video + yt-dlp --config-location $"($env.HOME)/.config/yt-dlp/video.conf" -o $"($title)-original" $video + + # convert video + ffmpeg -i $"($title)-original.mp4" -vcodec libx265 -crf 28 $"($title).mp4" + + # remove original + rm $"($title)-original.mp4" +} + +# +# ~~~ download thumbnail + +# Download a YouTube video's thumbnail +export def "yt thumbnail" [ + video: string # A YouTube video ID +]: nothing -> nothing { + + let URL = $"https://i.ytumg.com/vi/($video)/maxresdefault." + + # try .webp + try { + + http get $"($URL).webp" | save $"($video).webp" + + } catch { + + # try .png + try { + + http get $"($URL).png" | save $"($video).png" + + # try .jpg + } catch { + + http get $"($URL).jpg" | save $"($video).jpg" + + } + } +} -- cgit v1.3