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:
M | ytgetvideos | | | 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 '^ *$'