Browse Source

Update RofiBeats.sh || Add support for local and online music playback

This commit introduces enhancements to the music playback script. It now allows users to choose between local and online music options. Under each category, the available songs are displayed, and the selected song is played using `mpv`. Additionally, shuffle functionality has been added to provide a randomized listening experience. The code has been refactored to include separate functions for playing local and online music, improving code organization and readability.

These changes aim to provide users with a more versatile and enjoyable music playback experience.
pull/260/head
Linxford Kwabena 2 years ago committed by GitHub
parent
commit
4b22845b03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 64
      config/hypr/UserScripts/RofiBeats.sh

64
config/hypr/UserScripts/RofiBeats.sh

@ -3,11 +3,18 @@
# Directory for icons
iDIR="$HOME/.config/swaync/icons"
# Note: You can add more options below with the following format:
# ["TITLE"]="link"
# Define menu options as associative arrays for local and online music
declare -A local_music
# Define menu options as an associative array
declare -A menu_options=(
# Populate the menu_options array with music files from the Music folder
for file in ~/Music/*.mp3; do
filename=$(basename "$file")
local_music["$filename"]="$file"
done
declare -A online_music=(
["AfroBeatz 2024 🎧"]="https://www.youtube.com/watch?v=7uB-Eh9XVZQ"
["Lofi Girl ☕🎶"]="https://play.streamafrica.net/lofiradio"
["Easy Rock 96.3 FM 📻🎶"]="https://radio-stations-philippines.com/easy-rock"
["Wish 107.5 FM 📻🎶"]="https://radio-stations-philippines.com/dwnu-1075-wish"
@ -26,25 +33,54 @@ notification() {
notify-send -u normal -i "$iDIR/music.png" "Playing now: $@"
}
# Main function
main() {
choice=$(printf "%s\n" "${!menu_options[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "")
# Main function for playing local music
play_local_music() {
choice=$(printf "%s\n" "${!local_music[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "Local Music")
if [ -z "$choice" ]; then
exit 1
fi
link="${menu_options[$choice]}"
file="${local_music[$choice]}"
notification "$choice"
# Check if the link is a playlist
if [[ $link == *playlist* ]]; then
mpv --shuffle --vid=no "$link"
else
mpv "$link"
# Play the selected local music file using mpv
mpv --shuffle --vid=no "$file"
}
# Main function for playing online music
play_online_music() {
choice=$(printf "%s\n" "${!online_music[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "Online Music")
if [ -z "$choice" ]; then
exit 1
fi
link="${online_music[$choice]}"
notification "$choice"
# Play the selected online music using mpv
mpv --shuffle --vid=no "$link"
}
# Check if an online music process is running and send a notification, otherwise run the main function
pkill mpv && notify-send -u low -i "$iDIR/music.png" "Online Music stopped" || main
pkill mpv && notify-send -u low -i "$iDIR/music.png" "Online Music stopped" || {
# Prompt the user to choose between local and online music
user_choice=$(printf "Play from Music Folder\nOnline Streaming" | rofi -dmenu -p "Select music source")
case "$user_choice" in
"Play from Music Folder")
play_local_music
;;
"Online Streaming")
play_online_music
;;
*)
echo "Invalid choice"
;;
esac
}

Loading…
Cancel
Save