2 changed files with 64 additions and 0 deletions
@ -0,0 +1,63 @@ |
|||
#!/bin/sh -e |
|||
|
|||
search() |
|||
{ |
|||
rm -f /tmp/invidious_results |
|||
query_sanitized="$(printf "%s\n" "$1"|sed -ne 's/ /%20/gp')" |
|||
curl --output /tmp/invidious_results "https://vid.puffyan.us/search?q=$query_sanitized" |
|||
} |
|||
extract_names() |
|||
{ |
|||
sed -ne 's/<p dir.*>\(.*\)<\/p>/\1/p' /tmp/invidious_results|sed 's/ *//' |
|||
} |
|||
|
|||
extract_urls() |
|||
{ |
|||
for id in $(sed -ne 's/ */ /g' -e 's/<a style=.* href="\(\/watch?v=.*\)">/\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 |
Loading…
Reference in new issue