예제 #1
0
파일: qlyric.py 프로젝트: hzqtc/notilyric
class QLyric(EventPlugin):
	PLUGIN_ID = "QLyric"
	PLUGIN_NAME = "Quod Libet Lyric"
	PLUGIN_DESC = "A lyric downloader and displayer for Quod Libet"
	PLUGIN_VERSION = "0.1"

	def __init__(self):
		self.live = False
		self.notilyric = NotiLyric('QLyric')
		self.interval = 1

	def display(self):
		while self.live:
			time.sleep(self.interval)
			if player.paused:
				self.notilyric.close()
				continue

			progress = int(player.get_position() // 1000)
			self.notilyric.display(progress)

	def enabled(self):
		self.live = True
		thread.start_new_thread(self.display, ())

	def disabled(self):
		self.live = False
		self.notilyric.close()

	def plugin_on_song_started(self, song):
		self.notilyric.setinfo(song.get('artist'), song.get('title'))
예제 #2
0
class FMLyric(object):
	def __init__(self, addr, port):
		self.addr = addr
		self.port = port

		self.notilyric = NotiLyric('fmlyric')
		self.interval = 1

		self.artist = self.title = ''

	def run(self):
		self.conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		try:
			self.conn.connect((socket.gethostbyname(self.addr), self.port))
		except:
			print 'Connect to FMD failed. Is FMD running?'
			return
		res = self.conn.recv(1024)	# receive welcome info

		while True:
			try:
				time.sleep(self.interval)
			except:
				print 'Quit.'
				self.conn.send('bye')
				self.conn.close()
				self.notilyric.close()
				break

			try:
				self.conn.send('info')
				obj = json.loads(self.conn.recv(4096))
			except:
				print 'Server quit.'
				self.conn.close()
				self.notilyric.close()
				break

			status = obj['status']
			if status != 'playing':
				self.notilyric.close()
				continue

			artist = obj['song']['artist'].encode('utf-8')
			title = obj['song']['title'].encode('utf-8')
			progress = obj['progress']

			if self.artist != artist or self.title != title:
				self.artist = artist
				self.title = title
				self.notilyric.setinfo(artist, title)
			self.notilyric.display(progress)
예제 #3
0
파일: fmlyric.py 프로젝트: hzqtc/notilyric
class FMLyric(object):
	def __init__(self, addr, port):
		self.addr = addr
		self.port = port

		self.notilyric = NotiLyric('fmlyric')
		self.interval = 1

		self.artist = self.title = ''

	def run(self):
		self.conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		try:
			self.conn.connect((socket.gethostbyname(self.addr), self.port))
		except:
			print 'Connect to FMD failed. Is FMD running?'
			return

		while True:
			try:
				time.sleep(self.interval)
			except:
				print 'Quit.'
				self.conn.send('bye')
				self.conn.close()
				self.notilyric.close()
				break

			try:
				self.conn.send('info')
				obj = json.loads(self.conn.recv(4096))
			except:
				print 'Server quit.'
				self.conn.close()
				self.notilyric.close()
				break

			status = obj['status']
			if status != 'play':
				self.notilyric.close()
				continue

			artist = obj['artist'].encode('utf-8')
			title = obj['title'].encode('utf-8')
			progress = obj['pos']

			if self.artist != artist or self.title != title:
				self.artist = artist
				self.title = title
				self.notilyric.setinfo(artist, title)
			self.notilyric.display(progress)
예제 #4
0
class FMLyric(object):
    def __init__(self, addr, port):
        self.addr = addr
        self.port = port

        self.notilyric = NotiLyric('fmlyric')
        self.interval = 1

        self.artist = self.title = ''

    def run(self):
        self.client = mpd.MPDClient()
        try:
            self.client.connect(self.addr, self.port)
        except:
            print 'Connect to MPD failed. Is MPD running?'
            return

        while True:
            try:
                time.sleep(self.interval)
            except:
                print 'Quit.'
                self.client.disconnect()
                self.notilyric.close()
                break

            status = self.client.status()
            if status['state'] != 'play':
                self.notilyric.close()
                continue

            song = self.client.currentsong()
            artist = song['artist']
            title = song['title']
            progress = int(status['time'].split(':')[0])

            if self.artist != artist or self.title != title:
                self.artist = artist
                self.title = title
                self.notilyric.setinfo(artist, title)
            self.notilyric.display(progress)
예제 #5
0
파일: mplyric.py 프로젝트: hzqtc/notilyric
class FMLyric(object):
	def __init__(self, addr, port):
		self.addr = addr
		self.port = port

		self.notilyric = NotiLyric('fmlyric')
		self.interval = 1

		self.artist = self.title = ''

	def run(self):
		self.client = mpd.MPDClient()
		try:
			self.client.connect(self.addr, self.port)
		except:
			print 'Connect to MPD failed. Is MPD running?'
			return

		while True:
			try:
				time.sleep(self.interval)
			except:
				print 'Quit.'
				self.client.disconnect()
				self.notilyric.close()
				break

			status = self.client.status()
			if status['state'] != 'play':
				self.notilyric.close()
				continue

			song = self.client.currentsong()
			artist = song['artist']
			title = song['title']
			progress = int(status['time'].split(':')[0])

			if self.artist != artist or self.title != title:
				self.artist = artist
				self.title = title
				self.notilyric.setinfo(artist, title)
			self.notilyric.display(progress)