#!/bin/sh -e search() { rm -f /tmp/invidious_results query_sanitized="$(printf "%s\n" "$1"|sed -e 's/ */%20/g')" curl --output /tmp/invidious_results "https://vid.puffyan.us/search?q=$query_sanitized" } extract_names() { sed -ne 's/
\(.*\)<\/p>/\1/p' /tmp/invidious_results|sed 's/ *//' } extract_urls() { for id in $(sed -ne 's/ */ /g' -e 's//\1/p' /tmp/invidious_results|sed -ne 's/ *//p') do printf "https://vid.puffyan.us%s\n" $id done } watch_vid() { curl -v "https://vid.puffyan.us/latest_version?id=$id&itag=$itag" 2>>/dev/stdout|sed -ne 's/< Location: \(.*\)/\1/p' } fetch_itag() { # 22 seems to be the itag associated with audio+video MP4s at 720p... curl --silent $1|sed -ne 's/.*"itag":"\([0-9][0-9]*\)".*/\1/p' #|grep 22 } fetch_id() { curl --silent $(extract_urls|sed $chosen_video!d)|grep itag|sed -ne 's/.*"id":"\(.*\)","itag":.*/\1/p'|sed 1!d } generate_locations() { for itag in 22 #$(fetch_itag $(extract_urls|sed $chosen_video!d)|sed $chosen_video!d) do watch_vid done } main() { printf "Enter your search terms: " read -r query search "$query" extract_names|nl printf "Choose the desired media: " read -r chosen_video printf "Attempting to retrieve primary source for: " printf "\"%s\"" "$(extract_names|sed $chosen_video!d)" printf "...\nPlease wait.\n\n" itag=$(echo $(fetch_itag $(extract_urls|sed $chosen_video!d))|cut -f$chosen_video -d' ') id=$(fetch_id) media="$(generate_locations|sed 1!d)" printf "Loading %s...\n" "$media" ffplay -autoexit "$media" } main