Skip to content

Commit 99181d6

Browse files
committed
feat: add metadata to cached mixes
1 parent a7c2c0e commit 99181d6

File tree

1 file changed

+142
-6
lines changed

1 file changed

+142
-6
lines changed

yt-x

Lines changed: 142 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -771,11 +771,56 @@ ${RED}󰈆${RESET} Exit" | launcher "Select Media Action" | sed 's/. //g')"
771771
if echo "$url" | grep -q "list=RD" || echo "$urlForAll" | grep -q "list=RD" || [ "$(echo "$search_results" | jq 'has("uploader_url") | not')" = "true" ]; then
772772
if [ -n "$urlForAll" ]; then
773773
cached_playlist="$CLI_AUTO_GEN_PLAYLISTS/$(generate_sha256 "$urlForAll").m3u8"
774-
[ -s "$cached_playlist" ] || yt-dlp "$urlForAll" --flat-playlist -J | jq '.entries[].url' -r >"$cached_playlist"
774+
if ! [ -s "$cached_playlist" ]; then
775+
_mix_data=$(yt-dlp "$urlForAll" --flat-playlist -J)
776+
[ -z "$_mix_data" ] && send_notification "Failed to get mix data" && continue
777+
echo '#EXTM3U' >>"$cached_playlist"
778+
779+
lines="$(echo "$_mix_data" | jq '.entries[].url' -r | wc -l)"
780+
for i in $(seq 1 "$lines"); do
781+
local _video
782+
local _title
783+
local _channel
784+
local _url
785+
_video=$(echo "$_mix_data" | jq ".entries[$((i - 1))]")
786+
_title=$(echo "$_video" | jq ".title" -r)
787+
_channel=$(echo "$_video" | jq '.channel' -r)
788+
_url=$(echo "$_video" | jq '.url' -r)
789+
echo "#EXTINF:-1,$_title" >>"$cached_playlist"
790+
echo "$_url" >>"$cached_playlist"
791+
# echo "#EXTALB:Album Name" >>"$cached_playlist"
792+
# echo "#EXTGENRE:Genre" >>"$cached_playlist"
793+
# echo "#EXTGRP:Group Name" >>"$cached_playlist"
794+
echo "" >>"$cached_playlist"
795+
done
796+
fi
775797
mpv "$cached_playlist"
776798
else
777799
cached_playlist="$CLI_AUTO_GEN_PLAYLISTS/$(generate_sha256 "$url").m3u8"
778-
[ -s "$cached_playlist" ] || yt-dlp "$url" --flat-playlist -J | jq '.entries[].url' -r >"$cached_playlist"
800+
801+
if ! [ -s "$cached_playlist" ]; then
802+
_mix_data=$(yt-dlp "url" --flat-playlist -J)
803+
[ -z "$_mix_data" ] && send_notification "Failed to get mix data" && continue
804+
echo '#EXTM3U' >>"$cached_playlist"
805+
806+
lines="$(echo "$_mix_data" | jq '.entries[].url' -r | wc -l)"
807+
for i in $(seq 1 "$lines"); do
808+
local _video
809+
local _title
810+
local _channel
811+
local _url
812+
_video=$(echo "$_mix_data" | jq ".entries[$((i - 1))]")
813+
_title=$(echo "$_video" | jq ".title" -r)
814+
_channel=$(echo "$_video" | jq '.channel' -r)
815+
_url=$(echo "$_video" | jq '.url' -r)
816+
echo "#EXTINF:-1,$_title" >>"$cached_playlist"
817+
echo "$_url" >>"$cached_playlist"
818+
# echo "#EXTALB:Album Name" >>"$cached_playlist"
819+
# echo "#EXTGENRE:Genre" >>"$cached_playlist"
820+
# echo "#EXTGRP:Group Name" >>"$cached_playlist"
821+
echo "" >>"$cached_playlist"
822+
done
823+
fi
779824
mpv "$cached_playlist"
780825
fi
781826
else
@@ -790,11 +835,56 @@ ${RED}󰈆${RESET} Exit" | launcher "Select Media Action" | sed 's/. //g')"
790835
if echo "$url" | grep -q "list=RD" || echo "$urlForAll" | grep -q "list=RD" || [ "$(echo "$search_results" | jq 'has("uploader_url") | not')" = "true" ]; then
791836
if [ -n "$urlForAll" ]; then
792837
cached_playlist="$CLI_AUTO_GEN_PLAYLISTS/$(generate_sha256 "$urlForAll").m3u8"
793-
[ -s "$cached_playlist" ] || yt-dlp "$urlForAll" --flat-playlist -J | jq '.entries[].url' -r >"$cached_playlist"
838+
839+
if ! [ -s "$cached_playlist" ]; then
840+
_mix_data=$(yt-dlp "$urlForAll" --flat-playlist -J)
841+
[ -z "$_mix_data" ] && send_notification "Failed to get mix data" && continue
842+
echo '#EXTM3U' >>"$cached_playlist"
843+
844+
lines="$(echo "$_mix_data" | jq '.entries[].url' -r | wc -l)"
845+
for i in $(seq 1 "$lines"); do
846+
local _video
847+
local _title
848+
local _channel
849+
local _url
850+
_video=$(echo "$_mix_data" | jq ".entries[$((i - 1))]")
851+
_title=$(echo "$_video" | jq ".title" -r)
852+
_channel=$(echo "$_video" | jq '.channel' -r)
853+
_url=$(echo "$_video" | jq '.url' -r)
854+
echo "#EXTINF:-1,$_title" >>"$cached_playlist"
855+
echo "$_url" >>"$cached_playlist"
856+
# echo "#EXTALB:Album Name" >>"$cached_playlist"
857+
# echo "#EXTGENRE:Genre" >>"$cached_playlist"
858+
# echo "#EXTGRP:Group Name" >>"$cached_playlist"
859+
echo "" >>"$cached_playlist"
860+
done
861+
fi
794862
mpv "$cached_playlist" --no-video
795863
else
796864
cached_playlist="$CLI_AUTO_GEN_PLAYLISTS/$(generate_sha256 "$url").m3u8"
797-
[ -s "$cached_playlist" ] || yt-dlp "$url" --flat-playlist -J | jq '.entries[].url' -r >"$cached_playlist"
865+
if ! [ -s "$cached_playlist" ]; then
866+
_mix_data=$(yt-dlp "$url" --flat-playlist -J)
867+
[ -z "$_mix_data" ] && send_notification "Failed to get mix data" && continue
868+
echo '#EXTM3U' >>"$cached_playlist"
869+
870+
lines="$(echo "$_mix_data" | jq '.entries[].url' -r | wc -l)"
871+
for i in $(seq 1 "$lines"); do
872+
local _video
873+
local _title
874+
local _channel
875+
local _url
876+
_video=$(echo "$_mix_data" | jq ".entries[$((i - 1))]")
877+
_title=$(echo "$_video" | jq ".title" -r)
878+
_channel=$(echo "$_video" | jq '.channel' -r)
879+
_url=$(echo "$_video" | jq '.url' -r)
880+
echo "#EXTINF:-1,$_title" >>"$cached_playlist"
881+
echo "$_url" >>"$cached_playlist"
882+
# echo "#EXTALB:Album Name" >>"$cached_playlist"
883+
# echo "#EXTGENRE:Genre" >>"$cached_playlist"
884+
# echo "#EXTGRP:Group Name" >>"$cached_playlist"
885+
echo "" >>"$cached_playlist"
886+
done
887+
fi
798888
mpv "$cached_playlist" --no-video
799889
fi
800890
else
@@ -841,7 +931,29 @@ ${RED}󰈆${RESET} Exit" | launcher "Select Media Action" | sed 's/. //g')"
841931
if echo "$video_url" | grep -q "list=RD"; then
842932
video_id=$(echo "$video" | jq '.id' -r | sed 's/RD//g')
843933
cached_playlist="$CLI_AUTO_GEN_PLAYLISTS/$(generate_sha256 "https://www.youtube.com/watch?v=${video_id}&list=RD$video_id").m3u8"
844-
[ -s "$cached_playlist" ] || yt-dlp "https://www.youtube.com/watch?v=${video_id}&list=RD$video_id" --flat-playlist -J | jq '.entries[].url' -r >"$cached_playlist"
934+
if ! [ -s "$cached_playlist" ]; then
935+
_mix_data=$(yt-dlp "https://www.youtube.com/watch?v=${video_id}&list=RD$video_id" --flat-playlist -J)
936+
[ -z "$_mix_data" ] && send_notification "Failed to get mix data" && continue
937+
echo '#EXTM3U' >>"$cached_playlist"
938+
939+
lines="$(echo "$_mix_data" | jq '.entries[].url' -r | wc -l)"
940+
for i in $(seq 1 "$lines"); do
941+
local _video
942+
local _title
943+
local _channel
944+
local _url
945+
_video=$(echo "$_mix_data" | jq ".entries[$((i - 1))]")
946+
_title=$(echo "$_video" | jq ".title" -r)
947+
_channel=$(echo "$_video" | jq '.channel' -r)
948+
_url=$(echo "$_video" | jq '.url' -r)
949+
echo "#EXTINF:-1,$_title" >>"$cached_playlist"
950+
echo "$_url" >>"$cached_playlist"
951+
# echo "#EXTALB:Album Name" >>"$cached_playlist"
952+
# echo "#EXTGENRE:Genre" >>"$cached_playlist"
953+
# echo "#EXTGRP:Group Name" >>"$cached_playlist"
954+
echo "" >>"$cached_playlist"
955+
done
956+
fi
845957
mpv "$cached_playlist" --no-video
846958
else
847959
if ! [ "$PLAYER" = mpv ] || [ "$PLATFORM" = android ]; then
@@ -900,10 +1012,34 @@ ${RED}󰈆${RESET} Exit" | launcher "Select Media Action" | sed 's/. //g')"
9001012

9011013
video_url=$(echo "$video" | jq '.url' -r)
9021014
if echo "$video_url" | grep -q "list=RD"; then
1015+
local _mix_data
9031016
video_id=$(echo "$video" | jq '.id' -r | sed 's/RD//g')
9041017

9051018
cached_playlist="$CLI_AUTO_GEN_PLAYLISTS/$(generate_sha256 "https://www.youtube.com/watch?v=${video_id}&list=RD$video_id").m3u8"
906-
[ -s "$cached_playlist" ] || yt-dlp "https://www.youtube.com/watch?v=${video_id}&list=RD$video_id" --flat-playlist -J | jq '.entries[].url' -r >"$cached_playlist"
1019+
1020+
if ! [ -s "$cached_playlist" ]; then
1021+
_mix_data=$(yt-dlp "https://www.youtube.com/watch?v=${video_id}&list=RD$video_id" --flat-playlist -J)
1022+
[ -z "$_mix_data" ] && send_notification "Failed to get mix data" && continue
1023+
echo '#EXTM3U' >>"$cached_playlist"
1024+
1025+
lines="$(echo "$_mix_data" | jq '.entries[].url' -r | wc -l)"
1026+
for i in $(seq 1 "$lines"); do
1027+
local _video
1028+
local _title
1029+
local _channel
1030+
local _url
1031+
_video=$(echo "$_mix_data" | jq ".entries[$((i - 1))]")
1032+
_title=$(echo "$_video" | jq ".title" -r)
1033+
_channel=$(echo "$_video" | jq '.channel' -r)
1034+
_url=$(echo "$_video" | jq '.url' -r)
1035+
echo "#EXTINF:-1,$_title" >>"$cached_playlist"
1036+
echo "$_url" >>"$cached_playlist"
1037+
# echo "#EXTALB:Album Name" >>"$cached_playlist"
1038+
# echo "#EXTGENRE:Genre" >>"$cached_playlist"
1039+
# echo "#EXTGRP:Group Name" >>"$cached_playlist"
1040+
echo "" >>"$cached_playlist"
1041+
done
1042+
fi
9071043
mpv "$cached_playlist"
9081044
else
9091045
if ! [ "$PLAYER" = mpv ] || [ "$PLATFORM" = android ]; then

0 commit comments

Comments
 (0)