Add proper invidious support. - annna - Annna the nice friendly bot.
 (HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
       ---
 (DIR) commit 61cec39d3cc7836c1740f8f291b05456e5788866
 (DIR) parent eda939b0ce9759565c6850bc8c4966cfd60fa2c2
 (HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
       Date:   Tue, 26 Dec 2023 21:13:56 +0100
       
       Add proper invidious support.
       
       Diffstat:
         M annna-message-common                |      14 +++++++++++---
         A dl-invidious-instances              |      13 +++++++++++++
         A get-invidious-instance              |       5 +++++
         A is-invidious-instance               |      21 +++++++++++++++++++++
       
       4 files changed, 50 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/annna-message-common b/annna-message-common
       @@ -92,6 +92,14 @@ case "${text}" in
                titleend=0
                outputstr=""
        
       +        if is-invidious-instance "${uri}";
       +        then
       +                host="$(printf "%s\n" "${uri}" \
       +                        | sed 's,.*://\([^/]*\).*,\1,')"
       +                uri="$(printf "%s\n" "${uri}" \
       +                        | sed "s,${host},youtube.com,")"
       +        fi
       +
                case "${urititle}" in
                "")
                        ;;
       @@ -188,7 +196,7 @@ case "${text}" in
                                nocuri=0
                        fi
                        ;;
       -        *youtube.com/*|*youtu.be/*|*yewtu.be/*)
       +        *youtube.com/*|*youtu.be/*)
                        if [ -z "${uri##*youtu.be/*}" ] || [ -z "${uri##*/watch?v=*}" ] || [ -z "${uri##*/embed/*}" ] || [ -z "${uri##*/shorts/*}" ];
                        then
                                ytid="${uri#https*://*/watch?v=}"
       @@ -197,7 +205,7 @@ case "${text}" in
                                ytid="${ytid##*youtu.be/}"
                                ytid="${ytid%%\?*}"
                                ytid="${ytid%%&*}"
       -                        nuri="https://yewtu.be/watch?v=${ytid}"
       +                        nuri="$(get-invidious-instance)/watch?v=${ytid}"
                                ytt="$(printf '%s\n' "${uri}" | sed -n 's/.*[&?]t=\([^&]\{1,\}\).*/\1/p')"
                                if [ -n "${ytt}" ];
                                then
       @@ -205,7 +213,7 @@ case "${text}" in
                                fi
                        else
                                ytid=""
       -                        nuri="https://yewtu.be/${uri#https*://*/}"
       +                        nuri="$(get-invidious-instance)/${uri#https*://*/}"
                        fi
                        fetch-uri "${nuri}" > "${tmpf}"
                        urititle="$(curl-grabtitle "${nuri}")"
 (DIR) diff --git a/dl-invidious-instances b/dl-invidious-instances
       @@ -0,0 +1,13 @@
       +#!/bin/sh
       +
       +cd $HOME/bin/modules/invidious
       +
       +apiuri="https://api.invidious.io/instances.json"
       +
       +curl -s "${apiuri}" 2>/dev/null \
       +        | sed 's,"uri",\n,g' \
       +        | sed 's,:"\([^"]*\)".*,\1,' \
       +        | grep "^http" \
       +        | grep -v ".onion" \
       +        | grep -v ".i2p" > invidious-instances.txt
       +
 (DIR) diff --git a/get-invidious-instance b/get-invidious-instance
       @@ -0,0 +1,5 @@
       +#!/bin/sh
       +
       +cd $HOME/bin/modules/invidious
       +shuf -n 1 invidious-instances.txt 2>/dev/null
       +
 (DIR) diff --git a/is-invidious-instance b/is-invidious-instance
       @@ -0,0 +1,21 @@
       +#!/bin/sh
       +
       +if [ $# -lt 1 ];
       +then
       +        printf "usage: %s host\n" "$(basename "${0}")" >&2
       +        exit 1
       +fi
       +instance="${1}"
       +
       +cd $HOME/bin/modules/invidious
       +
       +printf "%s\n" "${instance}" \
       +        | sed 's,.*://\([^/]*\).*,\1,' \
       +        | grep "${instance}" invidious-instances.txt 2>&1 >/dev/null
       +if [ $? -eq 0 ];
       +then
       +        exit 1
       +else
       +        exit 0
       +fi
       +