rawpython / remi

Python REMote Interface library. Platform independent. In about 100 Kbytes, perfect for your diet.
Apache License 2.0
3.48k stars 401 forks source link

excuse me!ask you a question,timed task,refresh video source. #491

Closed Antonio0307 closed 1 year ago

Antonio0307 commented 2 years ago

I have two video sources,I can use button selection.But I want to use a timer,20 minutes apart,automatic loop refreshes video source.Tried several ways, but failed. Thank you!!

-- coding: utf-8 --

from remi.gui import from widgets.toolbox_opencv import from remi import start, App import time

class untitled(App): def init(self, *args, **kwargs):

DON'T MAKE CHANGES HERE, THIS METHOD GETS OVERWRITTEN WHEN SAVING IN THE EDITOR

    if not 'editing_mode' in kwargs.keys():
        super(untitled, self).__init__(*args, static_file_path={'my_res':'./res/'})

def idle(self):
    #idle function called every update cycle
    pass

def main(self):
    return untitled.construct_ui(self)

@staticmethod
def construct_ui(self):
    #DON'T MAKE CHANGES HERE, THIS METHOD GETS OVERWRITTEN WHEN SAVING IN THE EDITOR
    container0 = Container()
    container0.attr_class = "Container"
    container0.attr_editor_newclass = False
    container0.css_height = "555.0px"
    container0.css_left = "20px"
    container0.css_position = "absolute"
    container0.css_top = "20px"
    container0.css_width = "420.0px"
    container0.variable_name = "container0"
    opencvvideo0 = OpencvVideo()
    self.opencvvideo0 = opencvvideo0
    opencvvideo0.attr_class = "OpencvVideo"
    opencvvideo0.attr_editor_newclass = False
    opencvvideo0.css_height = "315.0px"
    opencvvideo0.css_left = "15.0px"
    opencvvideo0.css_position = "absolute"
    opencvvideo0.css_top = "30.0px"
    opencvvideo0.css_width = "375.0px"
    opencvvideo0.framerate = 30
    opencvvideo0.variable_name = "opencvvideo0"
    opencvvideo0.video_source = " "
    # A :http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8"  ,
    # B "https://prod-streaming-video-msn-com.akamaized.net/ba258271-89c7-47bc-9742-bcae67c23202/f7ff4fe4-1346-47bb-9466-3f4662c1ac3a.mp4"
    container0.append(opencvvideo0,'opencvvideo0')

    self.container0 = container0
    return self.container0

Configuration

configuration = {'config_project_name': 'untitled', 'config_address': '0.0.0.0', 'config_port': 8089, 'config_multiple_instance': True, 'config_enable_file_cache': True, 'config_start_browser': True, 'config_resourcepath': './res/'}

if name == "main":

# start(MyApp,address='127.0.0.1', port=8081, multiple_instance=False,enable_file_cache=True, update_interval=0.1, start_browser=True)
start(untitled, address=configuration['config_address'], port=configuration['config_port'], 
                    multiple_instance=configuration['config_multiple_instance'], 
                    enable_file_cache=configuration['config_enable_file_cache'],
                    start_browser=configuration['config_start_browser'])
Antonio0307 commented 2 years ago

I thought of a way to do it, but I can't change the source. David, what did I do wrong? image

dddomodossola commented 2 years ago

Hello @Antonio0307 ,

Here is an example for you:


# -*- coding: utf-8 -*-

from remi.gui import *
from widgets.toolbox_opencv import *
from widgets.toolbox_scheduling import *
from remi import start, App

video_list = ["0.mp4", "1.mp4"]
video_index = 0

class untitled(App):
    def __init__(self, *args, **kwargs):
        #DON'T MAKE CHANGES HERE, THIS METHOD GETS OVERWRITTEN WHEN SAVING IN THE EDITOR
        if not 'editing_mode' in kwargs.keys():
            super(untitled, self).__init__(*args, static_file_path={'my_res':'./res/'})

    def idle(self):
        #idle function called every update cycle
        pass

    def main(self):
        return untitled.construct_ui(self)

    @staticmethod
    def construct_ui(self):
        #DON'T MAKE CHANGES HERE, THIS METHOD GETS OVERWRITTEN WHEN SAVING IN THE EDITOR
        container0 = Container()
        container0.attr_class = "Container"
        container0.attr_editor_newclass = False
        container0.css_height = "360.0px"
        container0.css_left = "20px"
        container0.css_position = "absolute"
        container0.css_top = "20px"
        container0.css_width = "510.0px"
        container0.variable_name = "container0"
        opencvvideo0 = OpencvVideo()
        opencvvideo0.attr_class = "OpencvVideo"
        opencvvideo0.attr_editor_newclass = False
        opencvvideo0.css_height = "180px"
        opencvvideo0.css_left = "150.0px"
        opencvvideo0.css_position = "absolute"
        opencvvideo0.css_top = "75.0px"
        opencvvideo0.css_width = "200px"
        opencvvideo0.framerate = 1
        opencvvideo0.variable_name = "opencvvideo0"
        opencvvideo0.video_source = "C:\\Users\\davide\\Documents\\GIT\\remi\\editor\\0.mp4"
        container0.append(opencvvideo0,'opencvvideo0')
        timerwidget0 = TimerWidget()
        timerwidget0.attr_class = "TimerWidget"
        timerwidget0.attr_editor_newclass = False
        timerwidget0.attr_src = "data:image/png;base64,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"
        timerwidget0.autostart = True
        timerwidget0.css_height = "46px"
        timerwidget0.css_left = "108.96875px"
        timerwidget0.css_position = "absolute"
        timerwidget0.css_top = "289.3125px"
        timerwidget0.css_width = "46px"
        timerwidget0.interval_milliseconds = 5000
        timerwidget0.variable_name = "timerwidget0"
        container0.append(timerwidget0,'timerwidget0')
        container0.children['timerwidget0'].onelapsed.do(self.onelapsed_timerwidget0)

        self.opencvvideo0 = opencvvideo0

        self.container0 = container0
        return self.container0

    def onelapsed_timerwidget0(self, emitter):
        global video_list, video_index
        with self.update_lock:
            video_index += 1
            self.opencvvideo0.video_source = video_list[video_index % len(video_list)]

#Configuration
configuration = {'config_project_name': 'untitled', 'config_address': '0.0.0.0', 'config_port': 8081, 'config_multiple_instance': True, 'config_enable_file_cache': True, 'config_start_browser': True, 'config_resourcepath': './res/'}

if __name__ == "__main__":
    # start(MyApp,address='127.0.0.1', port=8081, multiple_instance=False,enable_file_cache=True, update_interval=0.1, start_browser=True)
    start(untitled, address=configuration['config_address'], port=configuration['config_port'], 
                        multiple_instance=configuration['config_multiple_instance'], 
                        enable_file_cache=configuration['config_enable_file_cache'],
                        start_browser=configuration['config_start_browser'])

Kind Regards, Davide Rosa

Antonio0307 commented 2 years ago

Hello @Antonio0307 ,

Here is an example for you:

# -*- coding: utf-8 -*-

from remi.gui import *
from widgets.toolbox_opencv import *
from widgets.toolbox_scheduling import *
from remi import start, App

video_list = ["0.mp4", "1.mp4"]
video_index = 0

class untitled(App):
    def __init__(self, *args, **kwargs):
        #DON'T MAKE CHANGES HERE, THIS METHOD GETS OVERWRITTEN WHEN SAVING IN THE EDITOR
        if not 'editing_mode' in kwargs.keys():
            super(untitled, self).__init__(*args, static_file_path={'my_res':'./res/'})

    def idle(self):
        #idle function called every update cycle
        pass

    def main(self):
        return untitled.construct_ui(self)

    @staticmethod
    def construct_ui(self):
        #DON'T MAKE CHANGES HERE, THIS METHOD GETS OVERWRITTEN WHEN SAVING IN THE EDITOR
        container0 = Container()
        container0.attr_class = "Container"
        container0.attr_editor_newclass = False
        container0.css_height = "360.0px"
        container0.css_left = "20px"
        container0.css_position = "absolute"
        container0.css_top = "20px"
        container0.css_width = "510.0px"
        container0.variable_name = "container0"
        opencvvideo0 = OpencvVideo()
        opencvvideo0.attr_class = "OpencvVideo"
        opencvvideo0.attr_editor_newclass = False
        opencvvideo0.css_height = "180px"
        opencvvideo0.css_left = "150.0px"
        opencvvideo0.css_position = "absolute"
        opencvvideo0.css_top = "75.0px"
        opencvvideo0.css_width = "200px"
        opencvvideo0.framerate = 1
        opencvvideo0.variable_name = "opencvvideo0"
        opencvvideo0.video_source = "C:\\Users\\davide\\Documents\\GIT\\remi\\editor\\0.mp4"
        container0.append(opencvvideo0,'opencvvideo0')
        timerwidget0 = TimerWidget()
        timerwidget0.attr_class = "TimerWidget"
        timerwidget0.attr_editor_newclass = False
        timerwidget0.attr_src = "data:image/png;base64,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"
        timerwidget0.autostart = True
        timerwidget0.css_height = "46px"
        timerwidget0.css_left = "108.96875px"
        timerwidget0.css_position = "absolute"
        timerwidget0.css_top = "289.3125px"
        timerwidget0.css_width = "46px"
        timerwidget0.interval_milliseconds = 5000
        timerwidget0.variable_name = "timerwidget0"
        container0.append(timerwidget0,'timerwidget0')
        container0.children['timerwidget0'].onelapsed.do(self.onelapsed_timerwidget0)

        self.opencvvideo0 = opencvvideo0

        self.container0 = container0
        return self.container0

    def onelapsed_timerwidget0(self, emitter):
        global video_list, video_index
        with self.update_lock:
            video_index += 1
            self.opencvvideo0.video_source = video_list[video_index % len(video_list)]

#Configuration
configuration = {'config_project_name': 'untitled', 'config_address': '0.0.0.0', 'config_port': 8081, 'config_multiple_instance': True, 'config_enable_file_cache': True, 'config_start_browser': True, 'config_resourcepath': './res/'}

if __name__ == "__main__":
    # start(MyApp,address='127.0.0.1', port=8081, multiple_instance=False,enable_file_cache=True, update_interval=0.1, start_browser=True)
    start(untitled, address=configuration['config_address'], port=configuration['config_port'], 
                        multiple_instance=configuration['config_multiple_instance'], 
                        enable_file_cache=configuration['config_enable_file_cache'],
                        start_browser=configuration['config_start_browser'])

Kind Regards, Davide Rosa

I thought of a lot of ways,but,And finally.........finally......................, I'll use this.Thanks for your reply.