Un piccolo pezzettino di codice che ho creato per fare in modo che nel cosiddetto "Mood Text" di Skype compaia la canzone che state ascoltando con MPD.
Buongiorno; dopo varie ricerche su internet ho notato l'assenza di uno script che permetta di collegare Music Player Daemon (mpd) con Skype, similmente a quello che si può fare con Amarok. Allora nel pieno spirito del programmatore pazzo, ho deciso di scrivermelo da me ed ecco il risultato.
Per funzionare è necessario aver installato Skype4Py e Python-MPD nel proprio PC.
Il codice è abbastanza breve ed ha un minimo di gestione delle eccezioni, lo cito qui nel caso voleste darci una rapida occhiata.
#!/usr/bin/env python2
#LICENSE: MIT
status={}
import Skype4Py
import mpd
import threading
import time
#Connessione ad mpd
time.sleep(20)
try:
server=mpd.MPDClient()
server.connect("127.0.0.1",6600)
except:
print("Impossibile connettersi ad mpd")
quit()
#Connessione a Skype
try:
skype=Skype4Py.Skype(Transport='x11')
skype.Attach()
oldmood=skype.CurrentUserProfile._GetMoodText()
except:
print("Impossibile connettersi a Skype")
quit()
#Ricavo la canzone corrente
def doit():
global t
t=threading.Timer(5.0,doit)
t.start()
try:
oldstatus=status
global status
status=server.status()
except KeyboardInterrupt:
print("Arresto del monitor di status")
t.cancel()
quit()
except:
print("Impossibile ricavare lo status dal server")
t.cancel()
quit()
if status!=oldstatus:
song=server.currentsong()
try:
artist=song['artist']
title=song['title']
toprint="(music) "+ title + " - " + artist
if (status['state']=="pause") or (status['state']=="stop"):
toprint=oldmood
except KeyError:
toprint="(music) "+song['file']
except KeyboardInterrupt:
print ("Arresto del monitor di status")
t.cancel()
quit()
except:
print("Impossibile ricavare il titolo della canzone")
t.cancel()
quit()
try:
skype.CurrentUserProfile._SetMoodText(toprint)
except KeyboardInterrupt:
print("Arresto del monitor di status")
t.cancel()
quit()
except:
print("Impossibile settare lo stato di skype")
t.cancel()
quit()
try:
doit()
except KeyboardInterrupt:
print("Programma Arrestato")
t.cancel()
quit()
except:
t.cancel()
quit()