From 27e229176be46bdd079f6d445bc65805ab35e2fc Mon Sep 17 00:00:00 2001 From: Mid Favila Date: Sat, 16 Oct 2021 20:38:16 -0300 Subject: [PATCH] Upgrade query-parsing capabilities of invcli. --- invcli | 4 ++-- invcli~ | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100755 invcli~ diff --git a/invcli b/invcli index 3038480..e0581d7 100755 --- a/invcli +++ b/invcli @@ -3,7 +3,7 @@ search() { rm -f /tmp/invidious_results - query_sanitized="$(printf "%s\n" "$1"|sed -ne 's/ /%20/gp')" + 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() @@ -57,7 +57,7 @@ main() id=$(fetch_id) media="$(generate_locations|sed 1!d)" printf "Loading %s...\n" "$media" - ffplay "$media" + ffplay -autoexit "$media" } main diff --git a/invcli~ b/invcli~ new file mode 100755 index 0000000..386e18c --- /dev/null +++ b/invcli~ @@ -0,0 +1,63 @@ +#!/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() +{ + curl --silent $1|sed -ne 's/.*"itag":"\([0-9][0-9]*\)".*/\1/p' +} + +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 $(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 "$media" +} + +main