ytcli

Des commandes pour utiliser youtube - retour accueil

git clone git://bebou.netlib.re/ytcli
Log | Files | Refs | README |

commit 7874a45aecd14a8eb98e9d1a38f2b10d4331f18a
parent d28dd6a4813773774fed7255a427f4c89fc50a2b
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Sat,  7 Sep 2024 19:19:20 +0200

Modif ytgetvideos, + de jq

On parse avec jq, plus robuste

Problèmes connus :

  1. Y'a au moins un élément après le premier pipe qui n'est pas une
     vidéo et qui revnoie donc pleins de "null" (d'où le grep -v à la
     fin)
  2. On ne récupère pas toutes les infos des LIVE parce la structure est
     différentes pour eux. Faudrait aussi prévenir que ça en est un, les
     formats yt-dlp sont différents etc.

Diffstat:
Mytgetvideos | 16+++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/ytgetvideos b/ytgetvideos @@ -4,11 +4,17 @@ request() { encoded=$(echo "$@" | sed 's/ /+/g;s/&//g' | tr -d '[]') curl -Ls "https://www.youtube.com/results?search_query=$encoded" } +set azdazd request "$@" | sed -n '21 p' | grep -Eo 'ytInitialData.*' | sed 's/^ytInitialData =//' | - jq 2>/dev/null | - grep -E '^ {22}"videoId|^ {28}"label.+ de .+( |Aucune).+(il y a)? .+"' | - paste - - | - sed -E 's/.+videoId": "([^"]+)".+label": "(.+) de (.+) (.+).vues?( Diffusé)?( il y a [0-9]+ (jours?|semaines?|ans?|mois))? ([0-9].+)"/\1 \2 \3 \4 \6 \8/' 2> /dev/null - + jq -r '.contents.twoColumnSearchResultsRenderer + .primaryContents.sectionListRenderer + .contents[].itemSectionRenderer.contents[].videoRenderer | + [.videoId,.title.runs[0].text, + .longBylineText.runs[0].text, + .shortViewCountText.simpleText, + .publishedTimeText.simpleText, + .lengthText.simpleText] | + @tsv' 2>/dev/null | + grep -Ev '^ *$'