feat: better music tracking and playlist control

This commit is contained in:
coolnsx
2023-09-08 00:12:42 +05:30
parent b20ca5f107
commit a1a04196c6
4 changed files with 20 additions and 13 deletions

View File

@@ -5,8 +5,7 @@ menu_droid() {
} }
menu_linux() { menu_linux() {
[ -z "$3" ] && width="0.6" || width="$3" bemenu --fn 'Cascadia Mono 15' -i -c -W "0.${3:-6}" -B 3 -l 25 -p "$1"
bemenu --fn 'Cascadia Mono 15' -i -c -W "$width" -B 3 -l 25 -p "$1"
} }
search_droid() { search_droid() {

View File

@@ -3,7 +3,7 @@
down() { down() {
[ -n "$debug" ] && printf "\033[1;32m %s\033[0m : %s\n" "$3" "$2" && return 0 [ -n "$debug" ] && printf "\033[1;32m %s\033[0m : %s\n" "$3" "$2" && return 0
info_$os "$3 links fetched.." info_$os "$3 links fetched.."
choice=$(printf "stream\ndownload\ncast\nnext mirror" | menu_$os "??") choice=$(printf "stream\ndownload\ncast\nnext mirror" | menu_$os "??" '' "2")
[ -z "$choice" ] && exit 0 [ -z "$choice" ] && exit 0
[ "$choice" = "stream" ] && player_$os "$2" "$title" && info_$os "opening $title" "mpv" && exit 0 [ "$choice" = "stream" ] && player_$os "$2" "$title" && info_$os "opening $title" "mpv" && exit 0
[ "$choice" = "cast" ] && info_$os "casting $title" "podcast" && catt cast "$2" && exit 0 [ "$choice" = "cast" ] && info_$os "casting $title" "podcast" && catt cast "$2" && exit 0

8
screen
View File

@@ -20,12 +20,12 @@ record() {
source=$(printf "screen only\nspeaker\nmic" | menu "Audio Source:" "3") source=$(printf "screen only\nspeaker\nmic" | menu "Audio Source:" "3")
monitor=$(hyprctl monitors | sed -nE 's|Monitor ([^ ]*).*|\1|p') monitor=$(hyprctl monitors | sed -nE 's|Monitor ([^ ]*).*|\1|p')
[ "$(printf '%s\n' "$monitor" | wc -l)" -gt 1 ] && monitor=$(printf '%s' "$monitor" | menu "Choose Monitor:" "3") [ "$(printf '%s\n' "$monitor" | wc -l)" -gt 1 ] && monitor=$(printf '%s' "$monitor" | menu "Choose Monitor:" "3")
#shellcheck disable=SC2089
[ -z "$source" ] && info "" "2000" "No option Selected" && return 0 [ -z "$source" ] && info "" "2000" "No option Selected" && return 0
info "simplescreenrecorder" "700" "Recording Started" "Capturing $monitor($source)"
sleep 0.3
[ "$source" != "screen only" ] && pactl set-default-source "$(eval "printf \$$source")" && arg=-a [ "$source" != "screen only" ] && pactl set-default-source "$(eval "printf \$$source")" && arg=-a
#shellcheck disable=SC2086 #shellcheck disable=SC2086,SC2090
setsid -f wf-recorder -t -m "mp4" -f "$tmp_file" --output "$monitor" $arg >/dev/null 2>&1 info "simplescreenrecorder" "1000" "Select Region" "Tap/Click to select full" && setsid -f wf-recorder -x yuv420p -f /tmp/screenrecord.mp4 --output eDP-1 $arg -g "$(slurp)" >/dev/null 2>&1
info "simplescreenrecorder" "700" "Recording Started" "Capturing $monitor($source)"
} }
compress() { compress() {

View File

@@ -76,6 +76,7 @@ get_music_list(){
\"enablePersistentPlaylistPanel\": true, \"enablePersistentPlaylistPanel\": true,
\"tunerSettingValue\": \"AUTOMIX_SETTING_NORMAL\", \"tunerSettingValue\": \"AUTOMIX_SETTING_NORMAL\",
\"playlistId\": \"RDAMVM$(cat "$logdir/start")\", \"playlistId\": \"RDAMVM$(cat "$logdir/start")\",
\"index\": $(cat "$logdir/counter"),
\"params\": \"wAEB\", \"params\": \"wAEB\",
$([ -e "$logdir/continue_token" ] && cat "$logdir/continue_token") $([ -e "$logdir/continue_token" ] && cat "$logdir/continue_token")
\"isAudioOnly\": true, \"isAudioOnly\": true,
@@ -89,6 +90,8 @@ get_song_lyrics() {
json_next="{ json_next="{
\"enablePersistentPlaylistPanel\": true, \"enablePersistentPlaylistPanel\": true,
\"tunerSettingValue\": \"AUTOMIX_SETTING_NORMAL\", \"tunerSettingValue\": \"AUTOMIX_SETTING_NORMAL\",
\"playlistId\": \"RDAMVM$(cat "$logdir/start")\",
\"index\": $(cat "$logdir/counter"),
\"videoId\": \"$1\", \"videoId\": \"$1\",
\"isAudioOnly\": true, \"isAudioOnly\": true,
\"context\": $(cat "$logdir/context") \"context\": $(cat "$logdir/context")
@@ -110,7 +113,7 @@ get_song_lyrics() {
}, },
\"browseId\": \"$browseId\" \"browseId\": \"$browseId\"
}" }"
get_data "browse" "$json_lyrics" "$droid_agent" "AIzaSyAOghZGza2MQSZkY_zfZ370N-PUdXEo8AI" | sed 's/metadata"/\n/g' | sed -nE 's|.*lyricLine":"([^"]*)","cueRange":\{"startTimeMilliseconds":"([^"]*)","endTimeMilliseconds":"([^"]*)".*|\3\t\1|p' > "$logdir/lyrics" get_data "browse" "$json_lyrics" "$droid_agent" "AIzaSyAOghZGza2MQSZkY_zfZ370N-PUdXEo8AI" | sed 's/metadata"/\n/g' | sed -nE 's|.*lyricLine":"([^"]*)","cueRange".*"endTimeMilliseconds":"([^"]*)".*|\2\t\1|p' > "$logdir/lyrics"
fi fi
} }
@@ -131,8 +134,9 @@ loop() {
done done
pos=$(echo '{ "command": ["get_property", "time-remaining"]}' | socat - /tmp/mpvsocket | sed -nE 's_.*data":([^\.]*).*_\1_p') pos=$(echo '{ "command": ["get_property", "time-remaining"]}' | socat - /tmp/mpvsocket | sed -nE 's_.*data":([^\.]*).*_\1_p')
pgrep -f "mpvsocket" >/dev/null || cleanup_shit pgrep -f "mpvsocket" >/dev/null || cleanup_shit
[ -z "$pos" ] && i=$(cat "$logdir/counter") && : $((i+=1)) && pgrep -f "mpvsocket" >/dev/null && [ -n "$(cat "$logdir/next")" ] && play "$(sed -n "${i}p" "$logdir/next")" "$1" && printf '%s' "$i" > "$logdir/counter" #shellcheck disable=SC2030,SC2031
[ "$(cat "$logdir/counter")" -ge "$(wc -l "$logdir/next" | cut -d' ' -f1)" ] && get_music_list [ -z "$pos" ] && i=$(cat "$logdir/counter") && : $((i+=1)) && pgrep -f "mpvsocket" >/dev/null && [ -n "$(cat "$logdir/next")" ] && play "$(sed -n "$((i+=1))p" "$logdir/next")" "$1" && printf '%s' "$i" > "$logdir/counter"
tail -1 "$logdir/next" | grep -q "$(cut -d'>' -f2 < "$logdir/current")" && get_music_list
done done
} }
@@ -186,7 +190,7 @@ play() {
#next songs data #next songs data
[ -n "$3" ] && get_music_list & [ -n "$3" ] && get_music_list &
get_song_lyrics "$id" "" & get_song_lyrics "$id" &
pgrep -f "yt-music loop" >/dev/null || setsid -f "$0" loop pgrep -f "yt-music loop" >/dev/null || setsid -f "$0" loop
} }
@@ -210,7 +214,9 @@ search_play() {
get_cookies get_cookies
printf "0" > "$logdir/counter" printf "0" > "$logdir/counter"
printf '' > "$logdir/next" printf '' > "$logdir/next"
rm -f "$logdir/continue_token"
res=$(get_data "search" "$json_search" "$agent" | sed 's/watchEndpoint"/\n/g' | sed -nE 's_.*videoId":"([^"]*)",.*label":"Play ([^"]*)".*_\2\t\1_p' | menu "Yt-music [Play]:") res=$(get_data "search" "$json_search" "$agent" | sed 's/watchEndpoint"/\n/g' | sed -nE 's_.*videoId":"([^"]*)",.*label":"Play ([^"]*)".*_\2\t\1_p' | menu "Yt-music [Play]:")
printf "%s\n" "$res" >> "$logdir/next"
printf "%s" "$res" | cut -f2 > "$logdir/start" printf "%s" "$res" | cut -f2 > "$logdir/start"
[ -z "$res" ] || play "$res" "verbose" "1" [ -z "$res" ] || play "$res" "verbose" "1"
} }
@@ -223,10 +229,12 @@ play_next() {
i=$(cat "$logdir/counter") i=$(cat "$logdir/counter")
if [ -z "$1" ]; then if [ -z "$1" ]; then
: $((i+=1)) : $((i+=1))
play "$(sed -n "${i}p" "$logdir/next")" "$1" #shellcheck disable=SC2030
play "$(sed -n "$((i+=1))p" "$logdir/next")" "$1"
else else
notify-send -h "string:x-canonical-private-synchronous:${0##*/}" -i "$logdir/default.jpg" "$(cut -d">" -f1 "$logdir/current" | tr ':' '\n')" notify-send -h "string:x-canonical-private-synchronous:${0##*/}" -i "$logdir/default.jpg" "$(cut -d">" -f1 "$logdir/current" | tr ':' '\n')"
next=$(nl -n'ln' "$logdir/next" | sed "s/^$i /& /" | menu "YT-music [play-next]: ") #shellcheck disable=SC2031
next=$(nl -n'ln' -v0 "$logdir/next" | sed "s/^$i /& /" | menu "YT-music [play-next]: ")
[ -z "$next" ] && return 0 [ -z "$next" ] && return 0
i=$(printf '%s' "$next" | sed 's///g' | cut -f1 | tr -d ' ') i=$(printf '%s' "$next" | sed 's///g' | cut -f1 | tr -d ' ')
play "$(printf '%s' "$next" | cut -f2-)" "verbose" play "$(printf '%s' "$next" | cut -f2-)" "verbose"