#!/usr/bin/nu
alias MENU = fuzzel -d
let subbed_channels = [
chrisbiscardi
Coderized
CodeAesthetic
dreamsofcode
fasterthanlime
fireship
fknight
freecodecamp
LearnLinuxTV
LowLevelLearning
niccoloveslinux
NoBoilerplate
_noisecode
RustVideos
VideosByDefault
ThePrimeTimeagen
TraversyMedia
]
let channel = ($subbed_channels | to text | MENU -p "choose channel>" | str trim)
if ($channel | is-empty) {
exit 0
}
if $channel not-in $subbed_channels {
notify-send --icon dialog-error --app-name Error -u critical "Not in the list" $"($channel) channel is not in the list of your subs!"
exit 1
}
let titles = (http get $"(http get $"https://www.youtube.com/@($channel | to text | str trim)" | query web -q 'link' -a href | find feeds | get 0 | ansi strip)" --raw | query web -q 'title')
let channel_title = ($titles | get 0)
let video_titles = ($titles | skip 1)
let chosen_video_title = ($titles | to text | MENU -p 'open link to>' | str trim)
if ($chosen_video_title | is-empty) {
exit 0
}
let video_hashes = (http get $"(http get $"https://www.youtube.com/@($channel | str trim)" | query web -q 'link' -a href | find feeds | get 0 | ansi strip)" --raw | query web -q 'yt\:videoId')
for $video_title in $video_titles --numbered {
if $chosen_video_title == $channel_title {
notify-send --icon firefox --app-name firefox $"Opening Youtube channel - ($channel_title) - in default browser"
setsid /bin/sh -c $"xdg-open 'https://youtube.com/@($channel)'"
sleep 0.3sec
exit 0
}
if ($chosen_video_title in $video_titles) and ($chosen_video_title in $video_title.item) {
notify-send --icon mpv --app-name mpv $"Opening '($video_title.item)' in mpv"
let ytflags = "(mp4,webm)[height<?1080]+bestaudio/best"
setsid /bin/sh -c $'mpv --slang=en --ytdl-raw-options=ignore-config=,sub-lang=en,write-auto-sub= --ytdl-format="($ytflags)" --no-fs "https://youtube.com/watch?v=($video_hashes | get $video_title.index)"'
sleep 0.3sec
exit 0
}
}