Use proper ytdl flags instead of JSON output for sxmo_youtube.sh
Avoids unecessary JSON parsing; also this is simpler and may just be a bit faster as well.
This commit is contained in:
parent
f57cc7db8b
commit
7f2f50c11a
1 changed files with 4 additions and 21 deletions
|
@ -3,30 +3,13 @@ HISTORY_FILE="$XDG_CONFIG_HOME"/sxmo/youtubehistory.tsv
|
||||||
NRESULTS=5
|
NRESULTS=5
|
||||||
AUDIOONLY=0
|
AUDIOONLY=0
|
||||||
|
|
||||||
jsonfieldextract() {
|
|
||||||
FIELDNAME="$1"
|
|
||||||
TYPE="$2"
|
|
||||||
# TODO: be less lazy and use a JSON parser, need to add json2tsv as dep..
|
|
||||||
if [ "$TYPE" = "number" ]; then
|
|
||||||
GREPED="$(grep -oE '"'"$FIELDNAME"'"[ ]*:[ ]*[0-9+]+[ ]*,')"
|
|
||||||
else
|
|
||||||
GREPED="$(grep -oE '"'"$FIELDNAME"'"[ ]*:[ ]*"[^"]+"[ ]*,')"
|
|
||||||
fi
|
|
||||||
echo "$GREPED" | cut -d: -f2- | tr -d '",' | sed -E 's#^[ ]+##' | head -n1
|
|
||||||
}
|
|
||||||
|
|
||||||
youtubesearch() {
|
youtubesearch() {
|
||||||
QUERY="$1"
|
QUERY="$1"
|
||||||
NRESULTS="$2"
|
NRESULTS="$2"
|
||||||
RESULTS="$(youtube-dl -j ytsearch"$NRESULTS":"${QUERY}")"
|
youtube-dl -f '[height<420]' -e --get-id --get-duration ytsearch$NRESULTS:$QUERY |
|
||||||
i=1
|
paste - - - -d ' ' |
|
||||||
while [ $i -lt "$(echo "$NRESULTS" + 1 | bc)" ]; do
|
awk -F" " '{DUR=$NF; NF-=1; print DUR " " $0}' |
|
||||||
TITLE="$(echo "$RESULTS" | awk NR==$i | jsonfieldextract fulltitle string)"
|
sed -E 's#([^ ]+)$#ytdl://\1#g'
|
||||||
URL="$(echo "$RESULTS" | awk NR==$i | jsonfieldextract webpage_url string)"
|
|
||||||
DURATION="$(echo "$RESULTS" | awk NR==$i | jsonfieldextract duration number)s"
|
|
||||||
echo "$DURATION: $TITLE - $URL"
|
|
||||||
i="$(echo $i + 1 | bc)"
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
searchmenu() {
|
searchmenu() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue