Compare commits
2 Commits
2b9b903803
...
d660938005
| Author | SHA1 | Date | |
|---|---|---|---|
| d660938005 | |||
| 41be339450 |
@ -24,6 +24,7 @@ ipython:.ipython/profile_default/ipython_config.py
|
||||
gdb:.config/gdb
|
||||
sandbox:
|
||||
chromium:.local/bin/pchromium .local/share/applications/pchromium.desktop
|
||||
scripts:.local/bin/httpstatus .local/bin/apco .local/bin/bb .local/bin/emoji .local/bin/mksh .local/bin/nato .local/bin/pastas .local/bin/timer .local/bin/tryna .local/bin/trynafail .local/bin/bak .local/bin/cleanup-directory .local/bin/cleanup-directory-log .local/bin/cleanup-downloads .local/bin/gobuild .local/bin/json .local/bin/open .local/bin/py .local/bin/sha .local/bin/showtips .local/bin/weather .local/bin/radio .local/bin/rmt .local/bin/scratch .local/bin/player .local/bin/wake .local/bin/myip .local/bin/genpass .local/bin/gensalt .local/bin/django-create-project .local/bin/mirror-site .local/bin/split-file .local/bin/extract .local/bin/destroy .local/bin/serveit .local/bin/highlight-logs %copypasta
|
||||
scripts:.local/bin/httpstatus .local/bin/apco .local/bin/bb .local/bin/emoji .local/bin/mksh .local/bin/nato .local/bin/pastas .local/bin/timer .local/bin/tryna .local/bin/trynafail .local/bin/bak .local/bin/cleanup-directory .local/bin/cleanup-directory-log .local/bin/cleanup-downloads .local/bin/gobuild .local/bin/json .local/bin/open .local/bin/py .local/bin/sha .local/bin/showtips .local/bin/weather .local/bin/radio .local/bin/rmt .local/bin/scratch .local/bin/wake .local/bin/myip .local/bin/genpass .local/bin/gensalt .local/bin/django-create-project .local/bin/mirror-site .local/bin/split-file .local/bin/extract .local/bin/destroy .local/bin/serveit .local/bin/highlight-logs %copypasta
|
||||
music:.local/bin/mpv-service.sh .config/systemd/user/mpv.service .local/bin/player
|
||||
copypasta:.local/bin/copy .local/bin/pasta
|
||||
all:%less %t %note %tmux %zsh %nvim %git"
|
||||
|
||||
18
home/user/.config/systemd/user/mpv.service
Normal file
18
home/user/.config/systemd/user/mpv.service
Normal file
@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=MPV Audio Player Service
|
||||
Documentation=man:mpv(1)
|
||||
After=sound.target graphical-session.target
|
||||
Wants=sound.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=%h/.local/bin/mpv-service.sh
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=%t/bus
|
||||
Environment=XDG_RUNTIME_DIR=%t
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
15
home/user/.local/bin/mpv-service.sh
Executable file
15
home/user/.local/bin/mpv-service.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
SOCKET_PATH="/tmp/mpv-${USER}.sock"
|
||||
|
||||
rm -f "${SOCKET_PATH}"
|
||||
|
||||
cleanup() {
|
||||
echo "Stopping MPV service..."
|
||||
rm -f "${SOCKET_PATH}"
|
||||
pkill -P $$ mpv || true
|
||||
}
|
||||
trap cleanup EXIT TERM INT
|
||||
|
||||
exec mpv --really-quiet --idle --no-video --input-ipc-server="${SOCKET_PATH}" --ytdl-format=worstaudio
|
||||
@ -14,12 +14,11 @@ usage() {
|
||||
Usage: ${PROG} <command> [args]
|
||||
|
||||
Commands:
|
||||
run music [PATH] Play local music (default: ~/Music)
|
||||
run radio <CHANNEL> Start a radio station
|
||||
radio <CHANNEL> Switch current playing instance to a radio station
|
||||
radio <CHANNEL> Switch to a radio station
|
||||
local, music [PATH] Switch to local music playlist (default: ~/Music)
|
||||
next, n Next track
|
||||
prev, p Previous track
|
||||
pause, space Toggle pause
|
||||
pause, stop, toggle, s Toggle pause
|
||||
help Show this message
|
||||
|
||||
Radio Channels:
|
||||
@ -50,32 +49,6 @@ send_cmd() {
|
||||
printf '{ "command": %s }\n' "${1}" | socat - "${SOCKET_PATH}" >/dev/null
|
||||
}
|
||||
|
||||
launch_mpv() {
|
||||
rm -f "${SOCKET_PATH}"
|
||||
|
||||
trap 'rm -f "${SOCKET_PATH}"' INT HUP EXIT TERM
|
||||
|
||||
exec mpv --input-ipc-server="${SOCKET_PATH}" --no-video --ytdl-format=worstaudio "${@}"
|
||||
}
|
||||
|
||||
|
||||
play_playlist() {
|
||||
playlist="${1:-${HOME}/Music}"
|
||||
shift || true
|
||||
|
||||
launch_mpv --shuffle "$@" -- "${playlist}"
|
||||
}
|
||||
|
||||
play_radio() {
|
||||
channel="${1:-}"
|
||||
if [ -z "${channel}" ]; then
|
||||
die "Radio channel required. Usage: ${PROG} run radio <channel>"
|
||||
fi
|
||||
|
||||
url="$(get_radio_url "${channel}")"
|
||||
launch_mpv "${url}"
|
||||
}
|
||||
|
||||
tune_radio() {
|
||||
channel="${1:-}"
|
||||
if [ -z "${channel}" ]; then
|
||||
@ -84,7 +57,34 @@ tune_radio() {
|
||||
|
||||
url="$(get_radio_url "${channel}")"
|
||||
send_cmd "[\"loadfile\", \"${url}\", \"replace\"]"
|
||||
echo "📻 Switched to: ${channel}"
|
||||
echo "📻 Switched to radio: ${channel}"
|
||||
}
|
||||
|
||||
play_local_playlist() {
|
||||
playlist_path="${1:-${HOME}/Music}"
|
||||
|
||||
if [ ! -e "${playlist_path}" ]; then
|
||||
die "Path not found: ${playlist_path}"
|
||||
fi
|
||||
|
||||
if command -v realpath >/dev/null 2>&1; then
|
||||
playlist_path="$(realpath "${playlist_path}")"
|
||||
fi
|
||||
|
||||
escaped_path=$(printf '%s' "${playlist_path}" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
||||
send_cmd '["set", "pause", "yes"]'
|
||||
sleep 0.1
|
||||
send_cmd "[\"loadfile\", \"${escaped_path}\", \"replace\"]"
|
||||
sleep 0.1
|
||||
send_cmd '["set", "pause", "yes"]'
|
||||
sleep 0.1
|
||||
send_cmd '["playlist-shuffle"]'
|
||||
sleep 0.1
|
||||
send_cmd '["playlist-next"]'
|
||||
sleep 0.1
|
||||
send_cmd '["set", "pause", "no"]'
|
||||
|
||||
echo "🎵 Switched to local playlist: ${playlist_path}"
|
||||
}
|
||||
|
||||
handle_control() {
|
||||
@ -98,7 +98,7 @@ handle_control() {
|
||||
send_cmd '["playlist-prev"]'
|
||||
echo "⬅️ Prev"
|
||||
;;
|
||||
pause|space)
|
||||
pause|stop|toggle|t|s)
|
||||
send_cmd '["cycle", "pause"]'
|
||||
echo "⏯️ Pause toggled"
|
||||
;;
|
||||
@ -113,19 +113,13 @@ ACTION="${1:-}"
|
||||
shift 2>/dev/null || true
|
||||
|
||||
case "${ACTION}" in
|
||||
run)
|
||||
subcmd="${1:-help}"
|
||||
shift || true
|
||||
case "${subcmd}" in
|
||||
music) play_playlist "$@" ;;
|
||||
radio) play_radio "$@" ;;
|
||||
*) usage; exit 1 ;;
|
||||
esac
|
||||
;;
|
||||
radio)
|
||||
radio|tune)
|
||||
tune_radio "$@"
|
||||
;;
|
||||
next|n|prev|p|pause|space)
|
||||
local|music|m)
|
||||
play_local_playlist "$@"
|
||||
;;
|
||||
next|n|prev|p|pause|stop|toggle|t|s)
|
||||
handle_control "${ACTION}"
|
||||
;;
|
||||
help|"")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user