#!/bin/bash
########################################################
#                   Click Radio                        #
# GUI radio ripper, streamer and local mp3 player.     #
#        © 2026 WTFPL lxgator@gmail.com                #
########################################################

VERSION='0.6.10'
PLAYR="/usr/bin/mpv"
CONF="$HOME/.config/clickradio"
DESKTOP="${XDG_CURRENT_DESKTOP:-unknown}"

FILENAME="$*"

AUDIO_EXTS=(mp3 ogg m4a wav opus flac webm aac)
PLAYLIST_EXTS=(m3u pls)

write_now_playing() {
    local file="$1"
    echo "$(basename "${file%.*}")" > "$CONF/sfplay"
}

play_audio() {
    local file="$1"
    # Enforce singleton UI
    # Kill any programs first
    for name in "My Playlist" "Click Radio" "Click Record" "Youtube Downloader" "My Folder"; do
        pkill -f "$name" 2>/dev/null
       /usr/share/click-radio/menu/app/kill
    done
    sleep 0.5
    write_now_playing "$file"
    "$PLAYR" --audio-display=no --loop "$file" 2>&1 &
    /usr/share/click-radio/menu/notify/sfplay/"Click Radio" 2>/dev/null
    exit 0
}

playlist_menu() {
    case "$DESKTOP" in
        Budgie:GNOME|X-Cinnamon|KDE)
            /usr/share/click-radio/menu/notify/menu/PLS
            ;;
        *)
            /usr/share/click-radio/menu/app/PLS
            ;;
    esac
}

play_playlist() {
    local file="$1"
    for name in clickplay dplay mpv yad "Click Radio" "Youtube Downloader"; do
        pkill -f "$name" 2>/dev/null
    done
    write_now_playing "$file"
    "$PLAYR" --audio-display=no --loop "$file" > "$CONF/.tmp" &
    /usr/share/click-radio/menu/notify/sfplay/"Click Radio" 2>/dev/null &
    playlist_menu
    exit 0
}

kill_players() {
    for name in clickplay playlist dplay mpv yad click-radio "Click Radio"; do
        pkill -f "$name" 2>/dev/null
    done
}

# Kill
if [[ "$FILENAME" == "True" ]]; then
    kill_players
    exit 0
fi

# File handling

EXT="${FILENAME##*.}"

for e in "${AUDIO_EXTS[@]}"; do
    [[ "$EXT" == "$e" ]] && play_audio "$FILENAME" && exit 0
done
for e in "${PLAYLIST_EXTS[@]}"; do
    for name in "My Playlist" "Click Radio" "Click Record" "Youtube Downloader" "My Folder"; do
        pkill -f "$name" 2>/dev/null
    done
   /usr/share/click-radio/menu/app/kill &
sleep 0.5
    [[ "$EXT" == "$e" ]] && play_playlist "$FILENAME"
done

# First run setup

if [[ ! -d "$CONF/slist" ]]; then
    mkdir -p "$CONF"
    cp -rf /usr/share/click-radio/menu/stream/slist "$CONF/"
    /usr/share/click-radio/menu/notify/"Click Radio" 2>/dev/null &
    /usr/share/click-radio/menu/notify/startup_notify.py
fi

# Cleanup + Main menu
for name in \
    createplay "My Playlist" "Music Folder" \
    dplay "Youtube Downloader" mpv "Click Radio"
do
    pkill -f "$name" 2>/dev/null
done
/usr/share/click-radio/menu/app/kill &
sleep 0.5
/usr/share/click-radio/menu/notify/"Click Radio" 2>/dev/null
exit 0

