Example #1
0
 def __init__(self, mpg, timeToQuit):
     super(Server.ManageQueue, self).__init__()
     self._mpg = mpg
     self._scrobbler = Scrobbler()
     self.scrobbled = False
     self._timeToQuit = timeToQuit
     self._skippedTrack = False
Example #2
0
def capture(args):
    """Read from stdin and pass mplayer output to ICY text analyzer."""

    scrobbler = Scrobbler('/tmp/scrobbles.db', args.credentials)
    analyzer = ICYAnalyzer(trigger_callback=scrobbler.submit)

    buff = ""

    while True:
        try:
            char = sys.stdin.read(1)
        except UnicodeDecodeError:
            char = ""

        sys.stdout.write(char)
        if char == "\x1b":
            sys.stdout.flush()

        buff += char
        if buff.endswith("\n"):
            analyzer.process(buff)
            buff = ""

        if "(Quit)" in buff or "(End of file)" in buff:
            break

        if len(buff) > 1000:
            buff = ""
Example #3
0
    class ManageQueue(threading.Thread):
        """Handle playing a song after the current one has finished"""

        def __init__(self, mpg, timeToQuit):
            super(Server.ManageQueue, self).__init__()
            self._mpg = mpg
            self._scrobbler = Scrobbler()
            self.scrobbled = False
            self._timeToQuit = timeToQuit
            self._skippedTrack = False

        def skippedTrack(self):
            self._skippedTrack = True

        def markAsPlaying(self):
            metadata = Server.Metadata(self._mpg.filename)
            self._scrobbler.nowPlaying(metadata.artist, metadata.title, metadata.album)
            self._skippedTrack = False

        def run(self):
            while not self._timeToQuit.isTime:
                if self._mpg.timeToScrobble and not self.scrobbled:
                    print "scrobbling this track!"
                    metadata = Server.Metadata(self._mpg.filename)
                    self._scrobbler.scrobble(metadata.artist, metadata.title, metadata.album)
                    self.scrobbled = True

                if not self._mpg.playing:
                    self._mpg.next()
                    print "....next"
                    self.markAsPlaying()
                    self.scrobbled = False

                if self._skippedTrack:
                    self.markAsPlaying()

                time.sleep(0.1)