예제 #1
0
def main():
    zoom = Zoom(ZOOM_API_KEY, ZOOM_API_SECRET)
    jwt_token: bytes = bytes(JWT_TOKEN, encoding='utf8')
    response: Response = zoom.get_meeting_participants(ZOOM_MEETING_ID,
                                                       jwt_token)
    print(response)
    list_of_participants: List[dict] = response.json().get("participants")
    while token := response.json().get("next_page_token"):
        response = zoom.get_meeting_participants(ZOOM_MEETING_ID, jwt_token,
                                                 token)
        list_of_participants += response.json().get("participants")
예제 #2
0
    def __init__(self):
        # SpreadSheet
        logger.info('--- Initialize Spreadsheet')
        self.mysheet = Sheet()

        # Google Drive
        logger.info('--- Initialize Google Drive')
        self.mydrive = GDrive()

        # Slack
        # logger.info('--- Initialize Slack')
        # self.slack = Slack()

        # Zoom
        logger.info('--- Initialize Zoom')
        self.zoom = Zoom()
예제 #3
0
async def spam(meeting_id: int, password: str, username: str, message: str,
               url: str):
    """
    Спамит сообщениями в чат

    :param meeting_id: номер конференции
    :param password: пароль конференции
    :param username: ник бота
    :param message: сообщение
    :param url: ссылка на конференцию
    """
    zoom = Zoom(url, username)
    logger.debug(_("Joining meeting {meeting_id} with password {password}"),
                 meeting_id=meeting_id,
                 password=password)

    while True:
        try:
            meeting = await zoom.join_meeting(meeting_id, password)

            async with meeting as ws:
                logger.info(_("{username}: Started sending messages..."),
                            username=username)
                while True:
                    try:
                        await ws.get_message()
                        text = b64encode(message.encode()).decode()
                        await ws.send_message(
                            zoom.create_payload(4135, {
                                "text": text,
                                "destNodeID": 0
                            }))
                    except WrongPasswordError:
                        logger.warning(
                            _("Server: wrong password, ignoring..."))
                        continue
                    except (ClosedResourceError, ConnectionClosed,
                            AttributeError):
                        logger.warning(
                            _("Server closed connection, trying again..."))
                        await trio.sleep(3)
                        break
        except (ClosedResourceError, ConnectionClosed, AttributeError):
            logger.warning(_("Server closed connection, trying again..."))
            await trio.sleep(3)
            pass
예제 #4
0
async def spam(meeting_id: int, password: str, username: str, message: str):
    zoom = Zoom(username)
    meeting = await zoom.join_meeting(meeting_id, password)

    async with meeting as websocket:
        while True:
            await websocket.recv()
            text = b64encode(message.encode()).decode()
            await websocket.send(
                json.dumps({
                    "evt": 4135,
                    "body": {
                        "text": text,
                        "destNodeID": 0
                    },
                    "seq": 0
                }))
예제 #5
0
from googl import Googl
from zoom import Zoom

ZOOM_API_KEY = os.environ.get("ZOOM_API_KEY")
ZOOM_API_SECRET = os.environ.get("ZOOM_API_SECRET")
ZOOM_MEETING_ID = os.environ.get("ZOOM_MEETING_ID")

SERVICE_ACCOUNT_FILE = f".secrets/{os.listdir('.secrets')[0]}"
SCOPES = [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/drive.file"
]

if __name__ == "__main__":
    zoom = Zoom(ZOOM_API_KEY, ZOOM_API_SECRET)

    jwt_token: bytes = zoom.generate_jwt_token()
    response: Response = zoom.get_meeting_participants(ZOOM_MEETING_ID,
                                                       jwt_token)
    list_of_participants: List[dict] = response.json().get("participants")

    while token := response.json().get("next_page_token"):
        response = zoom.get_meeting_participants(ZOOM_MEETING_ID, jwt_token,
                                                 token)
        list_of_participants += response.json().get("participants")

    df: DataFrame = pd.DataFrame(list_of_participants).drop(
        columns=["attentiveness_score"])
    df.join_time = pd.to_datetime(
        df.join_time).dt.tz_convert("Australia/Sydney")
예제 #6
0
    def __init__(self):
        self.builder = Gtk.Builder()
        self.builder.add_from_file(const.MAIN_PROG_FOLDER + const.UI_FOLDER +
                                   "main_ui.glade")
        handlers = {
            "on_open": self.on_open,
            "on_quit": self.on_quit,
            "run_fpga": self.run_fpga,
            "run_histopac": self.run_histopac,  ###change to self.run_histopac
            "run_anizpac": self.run_anizpac,  ###change to self.run_anizpac
            "run_pypac_signal": self.run_pypac_signal,
            "edit_config": self.edit_config,
            "edit_constants": self.edit_constants,
            "on_start": self.on_start,
            "on_stop": self.on_stop,
            "on_save": self.on_save,
            "on_pause": self.on_pause,
            "on_clear": self.on_clear,
            "zoom_en_shrink": self.z_en_shrink,
            "zoom_en_squeeze": self.z_en_squeeze,
            "zoom_en_left": self.z_en_mov_l,
            "zoom_en_right": self.z_en_mov_r,
            "zoom_en_up": self.z_en_up,
            "zoom_en_down": self.z_en_down,
            "zoom_en_log": self.z_en_log,
            "zoom_en_zero": self.z_en_zero,
            "zoom_t_shrink": self.z_t_shrink,
            "zoom_t_squeeze": self.z_t_squeeze,
            "zoom_t_left": self.z_t_left,
            "zoom_t_right": self.z_t_right,
            "zoom_t_down": self.z_t_down,
            "zoom_t_up": self.z_t_up,
            "zoom_t_log": self.z_t_log
        }
        self.builder.connect_signals(handlers)

        self.main_win = self.builder.get_object("main_win")

        self.init_Figs()

        main_grid = self.builder.get_object("main_grid")
        self.attach_Figs(main_grid)

        #tmp_foldername = "/home/das/job/plis/histo/apr14_4det_porog=90_delay=100_coinc_10h_night"
        self.curr_histo_folder = const.DEFAULT_CURR_HISTO_FOLDER
        self.spectra = Spectra(self.curr_histo_folder)
        self.fill_Figs(self.spectra.histo)

        zoom_args = {
            "en_magnification": 1e2,
            "en_v_step": 5e3,
            "en_h_step": 1e2,
            "t_magnification": 1e2,
            "t_v_step": 1e3,
            "t_h_step": 100.0
        }
        self.zoom = Zoom(self.en_fig, self.t_fig, self.en_axes, self.t_axes,
                         zoom_args)

        self.logger = Logger(path.join(const.MAIN_PROG_FOLDER, "journal.log"))
        self.logger.info("Program initialization OK")

        self.update_counts([0] * 4)

        self.info_textview = self.builder.get_object("info_textview")
        self.information = Information(self.info_textview)

        self.statusbar = self.builder.get_object("main_statusbar")
예제 #7
0
class UI():
    def __init__(self):
        self.builder = Gtk.Builder()
        self.builder.add_from_file(const.MAIN_PROG_FOLDER + const.UI_FOLDER +
                                   "main_ui.glade")
        handlers = {
            "on_open": self.on_open,
            "on_quit": self.on_quit,
            "run_fpga": self.run_fpga,
            "run_histopac": self.run_histopac,  ###change to self.run_histopac
            "run_anizpac": self.run_anizpac,  ###change to self.run_anizpac
            "run_pypac_signal": self.run_pypac_signal,
            "edit_config": self.edit_config,
            "edit_constants": self.edit_constants,
            "on_start": self.on_start,
            "on_stop": self.on_stop,
            "on_save": self.on_save,
            "on_pause": self.on_pause,
            "on_clear": self.on_clear,
            "zoom_en_shrink": self.z_en_shrink,
            "zoom_en_squeeze": self.z_en_squeeze,
            "zoom_en_left": self.z_en_mov_l,
            "zoom_en_right": self.z_en_mov_r,
            "zoom_en_up": self.z_en_up,
            "zoom_en_down": self.z_en_down,
            "zoom_en_log": self.z_en_log,
            "zoom_en_zero": self.z_en_zero,
            "zoom_t_shrink": self.z_t_shrink,
            "zoom_t_squeeze": self.z_t_squeeze,
            "zoom_t_left": self.z_t_left,
            "zoom_t_right": self.z_t_right,
            "zoom_t_down": self.z_t_down,
            "zoom_t_up": self.z_t_up,
            "zoom_t_log": self.z_t_log
        }
        self.builder.connect_signals(handlers)

        self.main_win = self.builder.get_object("main_win")

        self.init_Figs()

        main_grid = self.builder.get_object("main_grid")
        self.attach_Figs(main_grid)

        #tmp_foldername = "/home/das/job/plis/histo/apr14_4det_porog=90_delay=100_coinc_10h_night"
        self.curr_histo_folder = const.DEFAULT_CURR_HISTO_FOLDER
        self.spectra = Spectra(self.curr_histo_folder)
        self.fill_Figs(self.spectra.histo)

        zoom_args = {
            "en_magnification": 1e2,
            "en_v_step": 5e3,
            "en_h_step": 1e2,
            "t_magnification": 1e2,
            "t_v_step": 1e3,
            "t_h_step": 100.0
        }
        self.zoom = Zoom(self.en_fig, self.t_fig, self.en_axes, self.t_axes,
                         zoom_args)

        self.logger = Logger(path.join(const.MAIN_PROG_FOLDER, "journal.log"))
        self.logger.info("Program initialization OK")

        self.update_counts([0] * 4)

        self.info_textview = self.builder.get_object("info_textview")
        self.information = Information(self.info_textview)

        self.statusbar = self.builder.get_object("main_statusbar")

    def create_t_title(self, i):
        titles = [
            "D1-D2", "D2-D1", "D1-D3", "D3-D1", "D1-D4", "D4-D1", "D2-D3",
            "D3-D2", "D2-D4", "D4-D2", "D3-D4", "D4-D3"
        ]

        return titles[i]

    def init_Figs(self):
        def format_yticks(y, pos):
            threshold_divider = 300
            if y < threshold_divider:
                return "{:.0f}".format(y)
            else:
                return "{:.1f}k".format(y / 1e3)

        self.en_fig = []
        self.en_axes = []
        for i in range(0, const.DET_NUM):
            self.en_fig.append(Figure(figsize=(1, 1), dpi=80, frameon=False))
            self.en_axes.append(self.en_fig[i].add_subplot(111))

            ###adjust subplots to specific size
            if i == 0:
                self.en_fig[i].subplots_adjust(left=0.2,
                                               bottom=0.05,
                                               right=0.99,
                                               top=0.97)
            else:
                self.en_fig[i].subplots_adjust(left=0.05,
                                               bottom=0.05,
                                               right=0.99,
                                               top=0.97)
            ###
            ###xlim ylim
            self.en_axes[i].set_xlim(0, const.HIST_SIZE)
            self.en_axes[i].set_ylim(bottom=-1)
            ###
            ###x, y ticks
            self.en_axes[i].set_xticks([0, 1000, 2000, 3000, 4000])
            self.en_axes[i].minorticks_on()
            #            self.en_axes[i].xaxis.set_major_formatter( FuncFormatter(lambda x, pos: "{:.0f}k".format(x/1e3)) )
            if i == 0:
                self.en_axes[i].yaxis.set_major_formatter(
                    FuncFormatter(format_yticks))
            else:
                self.en_axes[i].yaxis.set_major_formatter(NullFormatter())
            ###

        self.t_fig = []
        self.t_axes = []
        for i in range(0, 12):
            self.t_fig.append(Figure(figsize=(1, 1), dpi=80, frameon=False))
            self.t_axes.append(self.t_fig[i].add_subplot(111))
            title_text = self.create_t_title(i)

            if (i == 0) or (i == 1):
                self.t_fig[i].suptitle(title_text, x=0.45, y=0.95)
            else:
                self.t_fig[i].suptitle(title_text, x=0.3, y=0.95)

            ###adjust subplots to specific size
            if i == 0:
                self.t_fig[i].subplots_adjust(left=0.2,
                                              bottom=0.05,
                                              right=0.99,
                                              top=0.99)
            elif i == 1:
                self.t_fig[i].subplots_adjust(left=0.2,
                                              bottom=0.05,
                                              right=0.99,
                                              top=0.99)
            elif i in [2, 4, 6, 8, 10]:
                self.t_fig[i].subplots_adjust(left=0.05,
                                              bottom=0.05,
                                              right=0.99,
                                              top=0.99)
            else:
                self.t_fig[i].subplots_adjust(left=0.05,
                                              bottom=0.05,
                                              right=0.99,
                                              top=0.99)
            ###
            ###xlim ylim
            self.t_axes[i].set_xlim(0, const.HIST_SIZE)
            self.t_axes[i].set_ylim(bottom=-1)
            ###
            ###x, y ticks
            self.t_axes[i].set_xticks([0, 1000, 2000, 3000, 4000])
            self.t_axes[i].minorticks_on()
            #self.t_axes[i].xaxis.set_major_formatter( FuncFormatter(lambda x, pos: "{:.0f}k".format(x/1e3)) )
            if (i == 0) or (i == 1):
                self.t_axes[i].yaxis.set_major_formatter(
                    FuncFormatter(format_yticks))
            else:
                self.t_axes[i].yaxis.set_major_formatter(NullFormatter())
            ###

    def attach_Figs(self, grid):
        for i in range(4):
            en_d_vbox_name = "en_d{:d}_vbox".format(i)
            en_d_vbox = self.builder.get_object(en_d_vbox_name)
            en_d_vbox.pack_start(FigureCanvas(self.en_fig[i]), True, True, 0)

        col, row = 0, 1
        for i in range(6):
            grid.attach(FigureCanvas(self.t_fig[2 * i]), col, row, 1, 1)
            col += 1

        col, row = 0, 2
        for i in range(6):
            grid.attach(FigureCanvas(self.t_fig[2 * i + 1]), col, row, 1, 1)
            col += 1

    def fill_Figs(self, histo):
        histo_np_arr = np.array(histo)

        max_histo_en = histo_np_arr[0:const.DET_NUM].max() or 1
        max_histo_t = histo_np_arr[const.DET_NUM:].max() or 1

        self.en_axes_line = [0] * const.DET_NUM
        self.t_axes_line = [0] * 12

        for i in range(0, const.DET_NUM):
            x_data = np.arange(const.HIST_SIZE)
            y_data = histo_np_arr[i]
            self.en_axes_line[i], = self.en_axes[i].plot(x_data,
                                                         y_data,
                                                         color="blue")
            self.en_axes[i].set_ylim(top=max_histo_en)

        for i in range(0, 12):
            x_data = np.arange(const.HIST_SIZE)
            y_data = histo_np_arr[const.DET_NUM + i]
            self.t_axes_line[i], = self.t_axes[i].plot(x_data,
                                                       y_data,
                                                       color="red")
            self.t_axes[i].set_ylim(top=max_histo_t)

    def update_Figs(self, histo):
        histo_np_arr = np.array(histo)

        max_histo_en = histo_np_arr[0:const.DET_NUM].max() or 1
        max_histo_t = histo_np_arr[const.DET_NUM:, 1:].max() or 1

        ###for test
        t = time()
        ###

        print("max_histo_en = {}".format(max_histo_en))
        for i in range(0, const.DET_NUM):
            self.en_axes[i].set_ylim(bottom=-1, top=max_histo_en + 1)
            self.en_axes_line[i].set_ydata(histo_np_arr[i])
            self.en_fig[i].canvas.draw()

        for i in range(0, 12):
            self.t_axes[i].set_ylim(bottom=-1, top=max_histo_t + 1)
            self.t_axes_line[i].set_ydata(histo_np_arr[const.DET_NUM + i])
            self.t_fig[i].canvas.draw()

            text = "{}    {}".format(
                self.create_t_title(i),
                np.sum(histo_np_arr[const.DET_NUM + i][1:]))
            if (i == 0) or (i == 1):
                self.t_fig[i].suptitle(text, x=0.55, y=0.95)
            else:
                self.t_fig[i].suptitle(text, x=0.4, y=0.95)

        print("plotting time = {}".format(time() - t))

    def update_counts(self, det_counts):
        all_zero_counts = 0
        for i in range(0, const.DET_NUM):
            if det_counts[i] == 0:
                all_zero_counts += 1

            text = "D{:d}    ".format(i + 1)
            if det_counts[i] < 1e3:
                text += "{:.0f}".format(det_counts[i])
            else:
                text += "{:.2f}K".format(det_counts[i] / 1e3)
            #text = "D{:d}    {:.2f}K".format(i + 1, det_counts[i]/1e3)
            if i == 0:
                self.en_fig[i].suptitle(text, x=0.45, y=0.95)
            else:
                self.en_fig[i].suptitle(text, x=0.3, y=0.95)

        for i in range(0, const.DET_NUM):
            self.en_fig[i].canvas.draw()

    def on_open(self, *args):
        print("open histo")

        fcd = Gtk.FileChooserDialog("Open", None, Gtk.FileChooserAction.SELECT_FOLDER, \
                                    ("Cancel", Gtk.ResponseType.CANCEL, "Open", Gtk.ResponseType.OK))

        fcd.set_current_folder(self.curr_histo_folder)

        response = fcd.run()
        if response == Gtk.ResponseType.OK:
            self.curr_histo_folder = fcd.get_current_folder()
            self.spectra = Spectra(self.curr_histo_folder)
            self.update_Figs(self.spectra.histo)

            fcd.destroy()
        elif response == Gtk.ResponseType.CANCEL:
            fcd.destroy()

    def on_quit(self, *args):
        Gtk.main_quit(*args)

    def run_fpga(self, *args):
        print("Run fpga app")
        self.fpga = FPGA()
        self.fpga.win.show_all()

    def run_histopac(self, *args):
        self.logger.info("Run histopac")
        histopac_exe = path.join(const.HISTOPAC_PROG_FOLDER,
                                 const.HISTOPAC_PROG_NAME)
        from os import chdir
        chdir(const.HISTOPAC_PROG_FOLDER)
        system("{:s} {:s}".format(histopac_exe, self.curr_histo_folder))

    def run_anizpac(self, *args):
        self.logger.info("Run anizpac")
        #Chdir to anizpac
        #call anizpac

    def run_pypac_signal(self, *args):
        self.logger.info("Run pypac signal app")

        file_list = os.listdir(self.curr_histo_folder)
        signal_file = None

        for name in file_list:
            try:
                if name.split('.')[1] == "sgnl":
                    if self.curr_histo_folder[-1] == '/':
                        signal_file = self.curr_histo_folder + name
                    else:
                        signal_file = self.curr_histo_folder + '/' + name
                    break
            except IndexError:
                None

        if signal_file is not None:
            pypac_exe = path.join(const.PYPAC_PROG_FOLDER,
                                  const.PYPAC_PROG_NAME)
            system("{:s} -i {:s}".format(pypac_exe, signal_file))
        else:
            text = "There are no signal files in current histo folder: {:s}".format(
                self.curr_histo_folder)
            self.statusbar_push("error", err_msg=text)
            print("!Error: " + text)

    def run_pypac_histo(self, *args):
        print("Run pypac histo app")
        '''
        if "fpga" not in self.__dict__:
            print("Run FPGA should be started first")
            self.fpga = FPGA()
        '''

        system("{:s} -h {:s}".format(
            const.PYPAC_PROG_FOLDER + const.PYPAC_PROG_NAME,
            self.curr_histo_folder))

    def edit_config(self, *args):
        system("{:s} {:s}".format(const.TXT_EDITOR,
                                  const.MAIN_PROG_FOLDER + const.CFG_FILE))

    def edit_constants(self, *args):
        system("{:s} {:s}".format(
            const.TXT_EDITOR, const.MAIN_PROG_FOLDER + const.CONSTANTS_FILE))

    def on_start(self, *args):
        btn = args[0]

        if "fpga" not in self.__dict__:
            print("Run FPGA should be started first")
            self.fpga = FPGA()

        print("On start | print acq_time = {}".format(self.fpga.acq_time))
        self.fpga.save_consts_cfg(self.fpga.histo_folder)

        ###should be moved to separate func
        info = {
            "name": self.fpga.histo_folder,
            "start": localtime(),
            "expos": self.fpga.acq_time,
            "time": 1,
            "intens": 0,
        }
        self.information.update(info)
        ###

        self.curr_histo_folder = self.fpga.histo_folder

        print("signal flag = {}".format(self.fpga.with_signals_flag))
        if self.fpga.with_signals_flag:
            prog_name = const.HDRAINER_EXE + "(with signals)"
        else:
            prog_name = const.HDRAINER_EXE
        self.hdrainer = Hdrainer(prog_name, self.fpga.acq_time,
                                 self.fpga.coinc, self.fpga.en_range,
                                 self.fpga.histo_folder)

        self.thread_args = {"ret": -1}
        t1 = Thread(target=self.hdrainer.start)
        t1.start()

        self.online_flag = 1

        GLib.timeout_add_seconds(const.SLEEP_S_FIG_UPDATE,
                                 self.read_plot_online_histo,
                                 self.fpga.histo_folder)
        GLib.timeout_add_seconds(const.SLEEP_S_COUNTS_UPDATE,
                                 self.update_counts_online_histo)

        self.glib_loop = GLib.MainLoop()
        self.glib_loop.run()
        #self.glib_loop.quit()

        t1.join()

        ret = self.hdrainer.ret
        if (ret != 0 or ret is None):
            text = prog_name + " error! Return code {}.".format(ret)
            self.statusbar_push("error", err_msg=text)
        else:
            text = "Success execution of {} | execution_time = {:d}".format(
                prog_name, self.fpga.acq_time)
            self.statusbar_push("ok", normal_msg=text)
            print(text)

        info["time"] = 0
        info["intens"] = 0
        self.information.update(info)

        self.hdrainer.det_counts = [0] * 4
        self.update_counts(self.hdrainer.det_counts)

        btn.handler_block_by_func(self.on_start)
        btn.set_active(False)
        btn.handler_unblock_by_func(self.on_start)

    def on_stop(self, *args):
        print("On stop")
        self.hdrainer.stop()

    def on_save(self, *args):
        self.logger.info("On save")
        fcd = Gtk.FileChooserDialog(title="Save", parent=None, \
                                    action=Gtk.FileChooserAction.SELECT_FOLDER)
        fcd.add_buttons("Cancel", Gtk.ResponseType.CANCEL, "Save",
                        Gtk.ResponseType.OK)
        fcd.set_current_folder(self.curr_histo_folder)

        response = fcd.run()
        if response == Gtk.ResponseType.OK:
            self.curr_histo_folder = fcd.get_current_folder()
            self.spectra.savebin_histo_files(self.curr_histo_folder)

            fcd.destroy()
        elif response == Gtk.ResponseType.CANCEL:
            fcd.destroy()
        else:
            print(type(response), response)

    def on_pause(self, *args):
        print("On pause")

    def on_clear(self, *args):
        print("On clear")

    def z_en_shrink(self, *args):
        print("z_en_shrink")
        self.zoom.en_x_shrink()

    def z_en_squeeze(self, *args):
        print("z_en_squeeze")
        self.zoom.en_x_squeeze()

    def z_en_mov_l(self, *args):
        print("z_en_mov_l")
        self.zoom.en_x_move_l()

    def z_en_mov_r(self, *args):
        print("z_en_mov_r")
        self.zoom.en_x_move_r()

    def z_en_up(self, *args):
        print("z_en_up")
        self.zoom.en_y_up()

    def z_en_down(self, *args):
        print("z_en_down")
        self.zoom.en_y_down()

    def z_en_log(self, *args):
        print("z_en_log")
        self.zoom.en_log()

        btn = args[0]
        if btn.get_label() == "log":
            btn.set_label("lin")
        else:
            btn.set_label("log")

    def z_en_zero(self, *args):
        print("z_en_zero")
        self.zoom.en_zero()

    def z_t_shrink(self, *args):
        print("z_t_shrink")
        self.zoom.t_x_shrink()

    def z_t_squeeze(self, *args):
        print("z_t_squeeze")
        self.zoom.t_x_squeeze()

    def z_t_left(self, *args):
        self.zoom.t_x_move_l()

    def z_t_right(self, *args):
        self.zoom.t_x_move_r()

    def z_t_up(self, *args):
        self.zoom.t_y_up()

    def z_t_down(self, *args):
        self.zoom.t_y_down()

    def z_t_log(self, *args):
        print("z_t_log")
        self.zoom.t_log()

        btn = args[0]
        if btn.get_label() == "log":
            btn.set_label("lin")
        else:
            btn.set_label("log")

    def read_plot_online_histo(self, hdir):
        #now readbin_histo each 1 sec!!!
        #update_counts should be each 1 sec only

        #histo read should be 1 time ~100 sec
        histo = self.spectra.readbin_histo_files(hdir)
        self.update_Figs(histo)

        if self.hdrainer.online:
            res = True
        else:
            self.glib_loop.quit()
            res = False

        return res

    def update_counts_online_histo(self):
        #Update EN and T spk counts (top on the fig)
        self.update_counts(self.hdrainer.det_counts)

        info = {
            "time": self.hdrainer.exec_time,
            "intens": self.hdrainer.cycles_per_time,
        }
        self.information.update(info)

        if self.hdrainer.online:
            res = True
        else:
            self.glib_loop.quit()
            res = False

        return res

    def is_glib_alive(self, x):
        print("main loop is alive? {}".format(self.glib_loop.is_running()))

    def statusbar_push(self, context, normal_msg="", err_msg=""):
        context_id = self.statusbar.get_context_id(context)
        if err_msg:
            msg = "!Error!: " + err_msg
        else:
            msg = normal_msg

        self.statusbar.push(context_id, msg)
예제 #8
0
class Mas:
    mysheet = {}

    def __init__(self):
        # SpreadSheet
        logger.info('--- Initialize Spreadsheet')
        self.mysheet = Sheet()

        # Google Drive
        logger.info('--- Initialize Google Drive')
        self.mydrive = GDrive()

        # Slack
        # logger.info('--- Initialize Slack')
        # self.slack = Slack()

        # Zoom
        logger.info('--- Initialize Zoom')
        self.zoom = Zoom()

        # Email
        # logger.info('--- Initialize Email')
        # self.email = Email()

    '''
		Google Spreadsheet
	'''

    def update_ccs_sheet(self):
        self.mysheet.update_ccs_sheet_from_df(self.updated_ccs)

    '''
		Google Drive
	'''

    def drive_setup(self):
        logger.info('--- Setup Google Drive')
        self.mydrive.setup(self.mysheet)
        self.updated_ccs = self.mydrive.generate_links_and_share_permission()

        self.update_ccs_sheet()

    '''
		Slack
	'''

    def slack_setup(self):
        self.updated_ccs = self.slack.setup(self.mysheet)
        self.update_ccs_sheet()

    '''
		Zoom
	'''

    def zoom_setup(self):
        self.updated_ccs = self.zoom.setup(self.mysheet, self.mydrive)
        # self.update_ccs_sheet()

    '''
		Email
	'''

    def email_setup(self):
        self.email.send_email()

    def run(self):
        # self.drive_setup()

        self.zoom_setup()
예제 #9
0
파일: main.py 프로젝트: zooliet/UWTracking
if args['path']:
    stream = cv2.VideoCapture(args['path'])
    cfg['FRAME_HEIGHT'] = int(stream.get(4))
    cfg['FRAME_WIDTH'] = int(stream.get(3))
else:
    if args['camera'].isdigit():
        stream = cv2.VideoCapture(int(args['camera']))
    else:
        stream = cv2.VideoCapture(args['camera'])
    stream.set(cv2.CAP_PROP_FRAME_WIDTH, cfg['FRAME_WIDTH'])
    stream.set(cv2.CAP_PROP_FRAME_HEIGHT, cfg['FRAME_HEIGHT'])

################################################################################

motor = Motor(dev = args['motor'], baud = 115200, screen_width = cfg['WIDTH'])
zoom = Zoom(dev = args['zoom'], baud = 115200, screen_width = cfg['WIDTH'])
redis_agent = RedisAgent(redis.Redis(), [cfg['CHANNEL_NAME']])
redis_agent.start()

################################################################################

def onmouse(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        param['dragging'] = True
        param['x1'] = x
        param['y1'] = y
        param['x2'] = x
        param['y2'] = y

    elif event == cv2.EVENT_MOUSEMOVE:
        if param['dragging'] == True:
예제 #10
0
파일: main.py 프로젝트: zooliet/UWTracking
if args['path']:
    stream = cv2.VideoCapture(args['path'])
    cfg['FRAME_HEIGHT'] = int(stream.get(4))
    cfg['FRAME_WIDTH'] = int(stream.get(3))
else:
    if args['camera'].isdigit():
        stream = cv2.VideoCapture(int(args['camera']))
    else:
        stream = cv2.VideoCapture(args['camera'])
    stream.set(cv2.CAP_PROP_FRAME_WIDTH, cfg['FRAME_WIDTH'])
    stream.set(cv2.CAP_PROP_FRAME_HEIGHT, cfg['FRAME_HEIGHT'])

################################################################################

motor = Motor(dev=args['motor'], baud=115200, screen_width=cfg['WIDTH'])
zoom = Zoom(dev=args['zoom'], baud=115200, screen_width=cfg['WIDTH'])
redis_agent = RedisAgent(redis.Redis(), [cfg['CHANNEL_NAME']])
redis_agent.start()

################################################################################


def onmouse(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        param['dragging'] = True
        param['x1'] = x
        param['y1'] = y
        param['x2'] = x
        param['y2'] = y

    elif event == cv2.EVENT_MOUSEMOVE:

#!############################ Init I/O #########################

if (os.path.isfile('./logs.xlsx')):
    wb = load_workbook(filename='logs.xlsx')
    ws = wb.active
else:
    newWorkbook()

#port = portusb.lstPort()
port = portusb.portNew()
print('[INFO] Openning ' + port)
ser = serial.Serial(port, 9600)

vs3 = Zoom(400, cameraindex.index('Camera'), 169, 266, 189, 377).start()
vs4 = Zoom(400, cameraindex.index('CAMERA'), 263, 372, 179, 438).start()

sleep(2.0)

fps = FPS().start()

#!############################ Loop #########################

while True:
    try:
        serInWait = ser.in_waiting
    except OSError:
        vs3.stop()
        vs4.stop()
        ser.close()