Beispiel #1
0
 def __init__(self, config, root_folder, includes_dir, language):
     self.root_folder = root_folder
     self.includes_dir = includes_dir
     self.language = language
     self.config = config
     sys.path.append(root_folder)
     sys.path.append(os.path.join(self.root_folder, 'target'))
     self.state = Initial(self)
Beispiel #2
0
class Context():
    target_engine = None
    tts_engine = None
    speech_recognition_engine = None
    personal_assistant = None
    input_engine = None
    sound_engine = None
    config = None
    language = None
    state = None

    def __init__(self, config, root_folder, includes_dir, language):
        self.root_folder = root_folder
        self.includes_dir = includes_dir
        self.language = language
        self.config = config
        sys.path.append(root_folder)
        sys.path.append(os.path.join(self.root_folder, 'target'))
        self.state = Initial(self)

    def log(self, message):
        if(self.target_engine is not None):
            self.target_engine.log(message)
        else:
            print(message)

    def isUp(self):
        return self.input_engine.isUp()

    def run(self):
        self.state.go()

    def ask(self, message = None):
        if(message is None):

            self.sound_engine.open()

            self.personal_assistant.open()

            # Writes the stream from the sound engine to the personal assistant
            def callback(in_data, frame_count):
                self.personal_assistant.send(in_data, frame_count)

            self.sound_engine.record(callback)

            self.sound_engine.close()
            self.personal_assistant.close()

        while(self.personal_assistant.is_active()):
            #wait for the response from the assistant
            sleep(0.1)

        self.Result = self.personal_assistant.get_result()

        return self.Result

    def say(self, message):
        self.tts_engine.speak(message, self.sound_engine)

    def show_notification(self, title, message = ''):
        self.target_engine.show_notification(title, message)

    def user_input_required(self):
        return self.target_engine.user_input_required()

    def play_movie(self, result):
        params = result.Parameters
        if('title' in params and params['title'] != '$title'):
            q = params['title']
            self.target_engine.search_movie(q)
            url = 'plugin://plugin.video.kodipopcorntime/search?query=' + q + ''
        elif('searchQuery' in params and params['searchQuery'] != '$q'):
            q = params['searchQuery']
            url = 'plugin://plugin.video.kodipopcorntime/search?query=' + q + ''
        elif('genre' in params and params['genre'] != '$genre'):
            url = 'plugin://plugin.video.kodipopcorntime/genres/' + params['genre'] + '/1?limit=20'
        else:
            url = "plugin://plugin.video.kodipopcorntime/genres"

        container = self.context.activate_window(url, window='videos')

    def show_weather(self, result):
        self.target_engine.activate_window(pluginurl = None, window = "weather")

    def send_action(self, action):
        self.target_engine.send_action(action)