diff --git a/files/.config/i3/rofi-radio.py b/files/.config/i3/rofi-radio.py index 378b1a8..885a56b 100755 --- a/files/.config/i3/rofi-radio.py +++ b/files/.config/i3/rofi-radio.py @@ -1,11 +1,10 @@ #!/usr/bin/env python3 import json -import yaml import os -import sys - from subprocess import Popen, PIPE, check_output, check_call +import yaml + def mpv_ipc(*args): try: j = json.loads(check_output(['mpv-ipc'] + list(args))) @@ -15,7 +14,7 @@ def mpv_ipc(*args): pass return '' -with open(os.path.expanduser("~/.local/share/playlists.yaml")) as y: +with open(os.path.expanduser("~/.local/share/rofi-radio/playlists.yaml")) as y: stations = yaml.load(y) rofi_command = ['rofi', '-i', '-selected-row', '0', '-dmenu', '-p', 'mpv'] @@ -23,7 +22,7 @@ rofi_command = ['rofi', '-i', '-selected-row', '0', '-dmenu', '-p', 'mpv'] current_song = mpv_ipc('get_property_string', 'media-title') if current_song: rofi_command += ['-mesg', current_song] - commands = b"Play/Pause\nStop\nNext\nPrevious" + commands = b"Play/Pause\nStop\nShuffle\nNext\nPrevious" else: commands = bytes('\n'.join([s["name"] for s in stations]), 'utf8') @@ -35,12 +34,29 @@ if current_song: mpv_ipc('cycle', 'pause') elif choice == "Stop": mpv_ipc('stop') + elif choice == "Shuffle": + mpv_ipc('playlist-shuffle') + elif choice == "Next": + mpv_ipc('playlist-next') + elif choice == "Previous": + mpv_ipc('playlist-prev') else: s = [s for s in stations if s["name"] == choice] if s: - mpv_ipc('loadfile', s[0]["loc"]) - mpv_ipc('set_property_string', 'pause', 'no') + # Load the selected playlist + loc = s[0]["loc"] + if loc.startswith('http') or loc.startswith('ytdl'): + # Load the url + mpv_ipc('loadfile', loc) + else: + # Load the file + workdir = mpv_ipc('get_property_string', 'working-directory') + mpv_ipc('loadfile', os.path.expanduser(loc)) + else: + # Try to load the user input + mpv_ipc('loadfile', choice) + mpv_ipc('set_property_string', 'pause', 'no') + # force update of i3status -check_call('killall', '-USR1', 'i3status') - +check_call(['killall', '-USR1', 'i3status']) diff --git a/files/.config/systemd/user/mpv.service b/files/.config/systemd/user/mpv.service index d065211..ee02cc3 100644 --- a/files/.config/systemd/user/mpv.service +++ b/files/.config/systemd/user/mpv.service @@ -2,7 +2,7 @@ Description=mpv - a media player [Service] -ExecStart=/usr/bin/mpv --idle --input-ipc-server /tmp/mpv.sock +ExecStart=/usr/bin/mpv --idle --really-quiet --no-video --input-ipc-server /tmp/mpv.sock [Install] WantedBy=default.target diff --git a/files/.local/share/playlists.yaml b/files/.local/share/playlists.yaml deleted file mode 100644 index 1cdf884..0000000 --- a/files/.local/share/playlists.yaml +++ /dev/null @@ -1,4 +0,0 @@ -- name: Nectarine - loc: http://nectarine.ers35.net:8000/necta192.mp3 -- name: TheBase - loc: http://radio.thebase.sc:8000/stream diff --git a/files/.local/share/rofi-radio/playlists.yaml b/files/.local/share/rofi-radio/playlists.yaml new file mode 100644 index 0000000..78b50f2 --- /dev/null +++ b/files/.local/share/rofi-radio/playlists.yaml @@ -0,0 +1,9 @@ +- name: Nectarine + loc: http://nectarine.ers35.net:8000/necta192.mp3 +- name: TheBase + loc: http://radio.thebase.sc:8000/stream +- name: CJPX 99.5 Radio-Classique Montréal + loc: http://stream.statsradio.com:8030/stream +- name: CBF 95.1 ICI Radio-Canada Première Montréal + loc: http://2qmtl0.akacast.akamaistream.net/7/953/177387/v1/rc.akacast.akamaistream.net/2QMTL0 + diff --git a/files/.local/share/rofi-radio/playlists/.@dir b/files/.local/share/rofi-radio/playlists/.@dir new file mode 100644 index 0000000..e69de29