Skip to navigation
Logo Penaz's Area

cat /dev/random > penaz

MPD4Skype - Uno script di "Now Playing" per skype ed MPD


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()