Ejemplo n.º 1
0
def main():
    control = Control()

    communicate.listen()

    while True:
        control.action, control.option = communicate.accept()

        log.write("Received action '%s' and option '%s'." % (control.action,
                                                             control.option))

        control.get_state()

        if control.state == "Ended":
            control.stop()

            api.action("stop")

        log.write("Performing action '%s'." % (control.action))

        if control.action == "restart":
            break

        try:
            action_result = getattr(control, control.action)()

            if action_result:
                communicate.reply(action_result)

        except Exception as error:
            log.error("Failed to perform action '%s': %s." % (control.action,
                                                              error))

            continue
Ejemplo n.º 2
0
def media_watcher():
    log.write("Watcher launched.")

    communicate.receiver_hostname = config.hostname

    while True:
        with communicate:
            communicate.send("get_status")

            state, time_elapsed, time_total = communicate.receive()

            time_remaining = int(time_total) - int(time_elapsed)

            time_sleep = time_remaining / 2

            if time_sleep < 3:
                time_sleep = 0.5

        if state in ["Ended", "opped"]:
            with communicate:
                communicate.send(("play", "next"))

            log.write("Watcher exited.")

            break

        sleep(time_sleep)
Ejemplo n.º 3
0
    def get_media_file(self, media_partial):
        if media_partial == "disc":
            self.media_file = self.find_disc_type()

            log.write(self.media_file)

            return

        media_mount = options.source_mount

        if "Downloads-" in media_partial:
            media_partial = media_partial.strip("Downloads-")

            media_mount = options.downloads_mount

        if "Temporary-" in media_partial:
            media_partial = media_partial.strip("Temporary-")

            media_mount = options.temporary_mount

        if config.platform == "win32":
            media_partial = media_partial.replace("/", "\\")

        self.media_file = media_mount + "/" + media_partial

        if not os.path.exists(self.media_file):
            self.find_media_files()
Ejemplo n.º 4
0
    def volume_down(self):
        current_volume = self.media_player.audio_get_volume()

        target_volume = current_volume - 15

        if current_volume < 30:
            target_volume = 10

	log.write("Setting volume to '%s'." % (target_volume))

        self.media_player.audio_set_volume(target_volume)
Ejemplo n.º 5
0
    def volume_up(self):
        current_volume = self.media_player.audio_get_volume()

        target_volume = current_volume + 15

        if target_volume > 200:
            target_volume = 200

	log.write("Setting volume to '%s'." % (target_volume))

        self.media_player.audio_set_volume(target_volume)
Ejemplo n.º 6
0
    def play(self):
        self.stop()

        if self.option == "next":
            if self.queue:
                media_file, directory, media_info = self.queue.pop(0)

                time_viewed = 0

            else:
                log.write("Cannot play next media, queue is empty.")

                return

        else:
            media_partial, time_viewed, directory, media_info = self.option

            media = Media(directory, media_info)

            media.get_media_file(media_partial)

            self.queue.extend(media.parts)

            media_file = media.media_file

        media_ready = self.instance.media_new(media_file)

        self.media_player.set_media(media_ready)

        api.action("begin", (directory, media_info))

        if self.state not in ["Playing", "Paused"]:
            media_watch = Process(target = media_watcher)

            media_watch.start()

        self.media_player.play()

        if time_viewed:
            self.media_player.set_time(time_viewed * 1000)

        self.media_player.set_fullscreen(1)

	self.mute()

        if self.media_player.audio_get_mute():
            self.mute()

        self.media_player.audio_set_volume(40)

        self.focus()
Ejemplo n.º 7
0
def main():
    """Check Receivers, launch web server."""
    log.write("Checking Receivers.")

    with database:
        receivers = database.select_receivers()

    check_alive_receivers(receivers)

    log.write("Starting web server.")

    # This is set up for testing, hence port 7000.
    web.run(host = "0.0.0.0",
            port = 7000,
            debug = True)
Ejemplo n.º 8
0
        with self.database:
            for fle in delete_list:
                directory = self.check_directory(fle)

                for drc in self.options.directories:
                    if directory == drc:
                        directory = directory.lower()

                        data = getattr(self.naming, "parse_" + directory)(fle)

                        # Check it is there first, if it is, delete.
                        if getattr(self.database,
                                   "check_" + directory)(data):
                            getattr(self.database,
                                    "delete_" + directory)(data)

    def check_directory(self, directory):
        """Checks that the directory is one that was passed by the user."""

        for drc in self.options.directories:
            if "%s/%s/" % (self.options.source_mount, drc) in directory:
                return drc

if __name__ == "__main__":
    log.write("Indexer launched.")

    main()

    log.write("Indexer exited.")
Ejemplo n.º 9
0
    def set_subtitle_track(self):
        self.media_player.video_set_spu(int(self.option))

    def set_audio_track(self):
        self.media_player.audio_set_track(int(self.option))

    def focus(self):
        if config.platform == "win32":
            keybd_event(VK_MENU, 0xb8, 0, 0)
            keybd_event(VK_TAB, 0x8f, 0, 0)
            keybd_event(VK_TAB, 0x8f, KEYEVENTF_KEYUP, 0)
            keybd_event(VK_MENU, 0xb8, KEYEVENTF_KEYUP, 0)

if __name__ == "__main__":
    log.write("Receiver launched.")

    parser = argparse.ArgumentParser(description = """The Downloads and
                                     Temporary mounts are optional. They
                                     provide functionality for the 'Recent'
                                     page.""")

    parser.add_argument("-w", "--webmote",
                        action = "store",
                        required = True,
                        help = "The hostname of the Webmote server.")

    parser.add_argument("-n", "--name",
                        action = "store",
                        required = True,
                        help = "A descriptive name for this Receiver.")
Ejemplo n.º 10
0
        else:
            receivers = database.select_receivers()

    receivers = check_alive_receivers(receivers)

    return flask.render_template("admin.html",
                                 receiver = receiver,
                                 data = data,
                                 receivers = receivers)

# Run.
#------------------------------------------------------------------------------

if __name__ == "__main__":
    log.write("Webmote launched.")

    help = """Launches the Webmote server. Both arguments are optional but
              provide functionality for the 'Recent' page."""

    parser = argparse.ArgumentParser(description = help)

    parser.add_argument("-d", "--downloads_mount",
                        action = "store",
                        type = unicode,
                        default = None)
    parser.add_argument("-t", "--temporary_mount",
                        action = "store",
                        type = unicode,
                        default = None)