basic functionality, echos status for notify-send and i3blocks
This commit is contained in:
parent
9acffaa658
commit
e7f3cf6170
|
@ -0,0 +1 @@
|
||||||
|
__pycache__
|
|
@ -0,0 +1,40 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# https://python-mpd2.readthedocs.io/en/latest
|
||||||
|
# https://dunst-project.org/documentation/
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from mpd import MPDClient
|
||||||
|
|
||||||
|
import mpd_playback
|
||||||
|
import mpd_state
|
||||||
|
|
||||||
|
cover_art_temp = '/tmp/mpd_cover_art_temp.jpg'
|
||||||
|
|
||||||
|
arguments = sys.argv
|
||||||
|
|
||||||
|
if len(arguments) == 1:
|
||||||
|
mpc_command = None
|
||||||
|
elif len(arguments) == 2:
|
||||||
|
mpc_command = arguments[1]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# connect
|
||||||
|
try:
|
||||||
|
client = MPDClient()
|
||||||
|
client.connect("localhost", 6600)
|
||||||
|
except ConnectionRefusedError:
|
||||||
|
# mpd is not running, stop here
|
||||||
|
return
|
||||||
|
# follow mpc_command
|
||||||
|
if mpc_command == 'toggle':
|
||||||
|
mpd_playback.toggle(client)
|
||||||
|
# show status
|
||||||
|
mpd_state.get_state(client, cover_art_temp)
|
||||||
|
# close connection
|
||||||
|
client.close()
|
||||||
|
client.disconnect()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -1,11 +1,5 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
# https://python-mpd2.readthedocs.io/en/latest
|
|
||||||
|
|
||||||
import sys
|
|
||||||
from mpd import MPDClient
|
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
|
|
||||||
def fade(way, current_vol, client):
|
def fade(way, current_vol, client):
|
||||||
""" gracefull fading """
|
""" gracefull fading """
|
||||||
if way == 'out':
|
if way == 'out':
|
||||||
|
@ -19,10 +13,9 @@ def fade(way, current_vol, client):
|
||||||
sleep(0.03)
|
sleep(0.03)
|
||||||
|
|
||||||
|
|
||||||
def mpc_toggle():
|
def toggle(client):
|
||||||
""" toggles play status """
|
""" toggles play status """
|
||||||
client = MPDClient()
|
# setup
|
||||||
client.connect("localhost", 6600)
|
|
||||||
client_status = client.status()
|
client_status = client.status()
|
||||||
# switch
|
# switch
|
||||||
current_vol = int(client_status['volume'])
|
current_vol = int(client_status['volume'])
|
||||||
|
@ -33,14 +26,4 @@ def mpc_toggle():
|
||||||
client.setvol(0)
|
client.setvol(0)
|
||||||
client.play()
|
client.play()
|
||||||
fade('in', current_vol, client)
|
fade('in', current_vol, client)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
""" main parser for args """
|
|
||||||
mpc_command = sys.argv[1]
|
|
||||||
if mpc_command == 'toggle':
|
|
||||||
mpc_toggle()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
|
def print_state(artist, album, song_title, mpd_status):
|
||||||
|
""" print three lines for i3blocks """
|
||||||
|
# setup based on mpd_status
|
||||||
|
if mpd_status == 'play':
|
||||||
|
print_main = f'{artist} - {album} - {song_title}'
|
||||||
|
print_small = f'{artist} - {song_title}'
|
||||||
|
print_color = '#FFFFFF'
|
||||||
|
elif mpd_status == 'pause':
|
||||||
|
print_main = f'{artist} - {song_title}'
|
||||||
|
print_small = f'{song_title}'
|
||||||
|
print_color = '#404040'
|
||||||
|
# print
|
||||||
|
print(print_main)
|
||||||
|
print(print_small)
|
||||||
|
print(print_color)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def get_state(client, cover_art_temp):
|
||||||
|
""" sends a notification of the current status """
|
||||||
|
# read out status from client
|
||||||
|
now_playing = client.currentsong()
|
||||||
|
client_status = client.status()
|
||||||
|
# parse status
|
||||||
|
music_file = now_playing['file']
|
||||||
|
artist = now_playing['artist']
|
||||||
|
album = now_playing['album']
|
||||||
|
song_title = now_playing['title']
|
||||||
|
# try to write cover art to temp file
|
||||||
|
try:
|
||||||
|
cover_art = client.readpicture(music_file)
|
||||||
|
with open(cover_art_temp, 'w+b') as f:
|
||||||
|
f.write(cover_art['binary'])
|
||||||
|
except:
|
||||||
|
cover_art = False
|
||||||
|
# set player status icon
|
||||||
|
mpd_status = client_status['state']
|
||||||
|
if mpd_status == 'play':
|
||||||
|
icon = ""
|
||||||
|
elif mpd_status == 'pause':
|
||||||
|
icon = ""
|
||||||
|
# print for i3blocks
|
||||||
|
print_state(artist, album, song_title, mpd_status)
|
||||||
|
# send message
|
||||||
|
title = icon + '\t' + artist
|
||||||
|
message = album + "-" + song_title
|
||||||
|
subprocess.call(['notify-send', title, message, '-i', cover_art_temp])
|
||||||
|
return
|
||||||
|
|
Loading…
Reference in New Issue