Back (Current repo: dotfiles)

my dotfiles to make it easy to transfer my settings
To clone this repository:
git clone https://git.viktor1993.net/dotfiles.git
Log | Download | Files | Refs

dmenu_music (2935B)


#!/bin/bash

MPC="mpc -h 127.0.0.1 -p 6664 "
PLAYLIST_DIR="$HOME/Music/playlists/"
MUSIC_DIR="$HOME/Music/"

OPT=$(echo -e "0: Load Playlist\n1: Play Playlist\n2: Create New Playlist\n3: Add song to Playlist\n4: Remove song from Playlist\n5: Clear Playlist\n6: Update DB\n7: Toggle Random\n8: Stop Music" | dmenu -p "Select an option..." | awk 'BEGIN{FS=":"}{print $1}')

if [[ "$OPT" = "0" ]]; then
    PLAYLIST=$(find "$PLAYLIST_DIR" -maxdepth 1 -type f -regextype posix-extended -regex ".*\.m3u$" | sed -E 's/(.*)+\/([^/]+)(\.m3u$)/\2/' | dmenu -l 20 -i -p 'Open which playlist? (type "any" for random)')
    notify-send $(${MPC}load $PLAYLIST)
elif [[ "$OPT" = "1" ]]; then
    EXISTS_CURRENT_PLAYLIST=$($MPC playlist | wc -l)
    if [[ $EXISTS_CURRENT_PLAYLIST -gt 0 ]]; then
        ${MPC}play
    else
        notify-send "No playlist has been selected"
    fi
elif [[ "$OPT" = "2" ]]; then
    NEW_PL_NAME=$(dmenu -i -p 'Enter filename')
    if [ -f ${PLAYLIST_DIR}/${NEW_PL_NAME}.m3u ]; then
            notify-send "File already exists!"
    else
            cat "" > ${PLAYLIST_DIR}/${NEW_PL_NAME}.m3u
            if [ -f ${PLAYLIST_DIR}/${NEW_PL_NAME}.m3u ]; then
                notify-send "Playlist ${NEW_PL_NAME} created!"
            fi
    fi
elif [[ "$OPT" = "3" ]]; then
    MUSIC_FILE=$(find "$MUSIC_DIR" -type f -regextype posix-extended -regex ".*\.mp3$" | dmenu -l 20 -p "Select a file...")
    if [ ! -f "$MUSIC_FILE" ]; then
        notify-send "No file was found!"
    else
        OPT_PLAYLIST=$(find "$PLAYLIST_DIR" -maxdepth 1 -type f -regextype posix-extended -regex ".*\.m3u$" | sed -E 's/(.*)+\/([^/]+\.m3u$)/\2/' | dmenu -l 20 -i -p 'Append to which playlist?')
        REAL_OPT_PLAYLIST=${PLAYLIST_DIR}${OPT_PLAYLIST}
        if [[ $(grep -c "$MUSIC_FILE" "$REAL_OPT_PLAYLIST") -gt 0 ]]; then
            notify-send "File already in playlist $OPT_PLAYLIST"
        else
            echo "$MUSIC_FILE" >> "$REAL_OPT_PLAYLIST"
            notify-send "File added to playlist $OPT_PLAYLIST"
        fi
    fi
elif [[ "$OPT" = "4" ]]; then
    OPT_PLAYLIST=$(find "$PLAYLIST_DIR" -maxdepth 1 -type f -regextype posix-extended -regex ".*\.m3u$" | sed -E 's/(.*)+\/([^/]+\.m3u$)/\2/' | dmenu -l 20 -i -p 'Append to which playlist?')
    REAL_OPT_PLAYLIST=${PLAYLIST_DIR}${OPT_PLAYLIST}
    TARGET_SONG=$(cat "$REAL_OPT_PLAYLIST" | dmenu -l 20 -p "Remove which song?")
    TARGET_LINE_NUMBER=$(grep -En "$TARGET_SONG" "$REAL_OPT_PLAYLIST" | awk 'BEGIN{FS=":"}{print $1}')
    sed -i "${TARGET_LINE_NUMBER}d" file
    notify-send "Song removed from playlist $OPT_PLAYLIST"
elif [[ "$OPT" = "5" ]]; then
    ${MPC}clear
    notify-send "Playlist cleared!"
elif [[ "$OPT" = "6" ]]; then
    notify-send $(${MPC}update)
elif [[ "$OPT" = "7" ]]; then
    ${MPC}random && notify-send $(${MPC}status | awk '(NR==3){match($0, /random: [a-zA-Z]+/, m); print m[0];}')
elif [[ "$OPT" = "8" ]]; then
    ${MPC}stop
fi