#!/bin/sh # invidious # Written in 2019 by Leslie # Modified in 2019 by Lucas # CC0 1.0 Universal/Public domain - No rights reserved # # To the extent possible under law, the author(s) have dedicated all # copyright and related and neighboring rights to this software to the # public domain worldwide. This software is distributed without any # warranty. You should have received a copy of the CC0 Public Domain # Dedication along with this software. If not, see # <http://creativecommons.org/publicdomain/zero/1.0/>. usage() { printf "Usage: %s url\n" "${0##*/}" >&2 exit 1 } err() { printf "%s: %s\n" "${0##*/}" "$*" >&2 exit 1 } [ $# -eq 1 ] || usage case $1 in "https://invidio.us/watch?v="*) ;; *) err "Not an invidio.us url." ;; esac video_id= for param in $(printf "%s\n" "${1##*"?"}" | tr "&" "\n"); do k=${param%%=*} [ "$k" = v ] || continue v=${param#*=} if [ ${#v} -ne 11 ]; then printf "%s: \"%s\": not a video ID." "${0##*/}" "$v" >&2 continue fi video_id=$v break done [ -n "$video_id" ] || err "no video ID in URL." dl_option=$(ftp -o - "$1" 2>/dev/null | grep -F "<option value='{" | head -n 1 | cut -d "\"" -f 8) printf "https://invidio.us/latest_version?id=%s&itag=%s\n" \ "$video_id" "$dl_option"