コード例 #1
0
ファイル: control.py プロジェクト: madBeavis/MAD
    def generate_screenshot(self, origin):
        devicemappings = self._mapping_manager.get_all_devicemappings()
        screenshot_type: ScreenshotType = ScreenshotType.JPEG
        if devicemappings.get(origin, {}).get("screenshot_type", "jpeg") == "png":
            screenshot_type = ScreenshotType.PNG

        screenshot_quality: int = devicemappings.get(origin, {}).get("screenshot_quality", 80)

        temp_comm = self._ws_server.get_origin_communicator(origin)
        temp_comm.get_screenshot(generate_device_screenshot_path(origin, devicemappings, self._args),
                                 screenshot_quality, screenshot_type)

        filename = generate_device_screenshot_path(origin, devicemappings, self._args)
        image_resize(filename, os.path.join(self._args.temp_path, "madmin"), width=250)

        return
コード例 #2
0
    def click_screenshot(self):
        origin = request.args.get('origin')
        click_x = request.args.get('clickx')
        click_y = request.args.get('clicky')
        useadb = request.args.get('adb')
        devicemappings = self._mapping_manager.get_all_devicemappings()

        filename = generate_device_screenshot_path(origin, devicemappings,
                                                   self._args)
        with Image.open(filename) as screenshot:
            width, height = screenshot.size

        real_click_x = int(width / float(click_x))
        real_click_y = int(height / float(click_y))
        adb = devicemappings.get(origin, {}).get('adb', False)

        if useadb == 'True' and self._adb_connect.make_screenclick(
                adb, origin, real_click_x, real_click_y):
            self._logger.info('MADMin: ADB screenclick successfully ({})',
                              str(origin))
        else:
            self._logger.info('MADMin WS Click x:{} y:{} ({})',
                              str(real_click_x), str(real_click_y),
                              str(origin))
            temp_comm = self._ws_server.get_origin_communicator(origin)
            temp_comm.click(int(real_click_x), int(real_click_y))

        time.sleep(2)
        return self.take_screenshot(origin, useadb)
コード例 #3
0
ファイル: control.py プロジェクト: snooter/MAD
    def click_screenshot(self):
        origin = request.args.get('origin')
        click_x = request.args.get('clickx')
        click_y = request.args.get('clicky')
        useadb = request.args.get('adb')

        filename = generate_device_screenshot_path(origin,
                                                   self._device_mapping,
                                                   self._args)
        img = cv2.imread(filename, 0)
        height, width = img.shape[:2]

        real_click_x = int(width / float(click_x))
        real_click_y = int(height / float(click_y))
        adb = self._device_mapping[origin].get('adb', False)

        if useadb == 'True' and self._adb_connect.make_screenclick(
                adb, origin, real_click_x, real_click_y):
            self._logger.info('MADMin: ADB screenclick successfully ({})',
                              str(origin))
        else:
            self._logger.info('MADMin WS Click x:{} y:{} ({})',
                              str(real_click_x), str(real_click_y),
                              str(origin))
            temp_comm = self._ws_server.get_origin_communicator(origin)
            temp_comm.click(int(real_click_x), int(real_click_y))

        time.sleep(2)
        return self.take_screenshot(origin, useadb)
コード例 #4
0
ファイル: control.py プロジェクト: Romfrosk/MAD
    def take_screenshot(self, origin=None, adb=False):
        origin = request.args.get('origin')
        useadb = request.args.get('adb', False)
        self._logger.info('MADmin: Making screenshot ({})', str(origin))
        devicemappings = self._mapping_manager.get_all_devicemappings()

        adb = devicemappings.get(origin, {}).get('adb', False)

        if useadb == 'True' and self._adb_connect.make_screenshot(
                adb, origin, "jpg"):
            self._logger.info('MADMin: ADB screenshot successfully ({})',
                              str(origin))
        else:

            screenshot_type: ScreenshotType = ScreenshotType.JPEG
            if devicemappings.get(origin, {}).get("screenshot_type",
                                                  "jpeg") == "png":
                screenshot_type = ScreenshotType.PNG

            screenshot_quality: int = devicemappings.get(origin, {}).get(
                "screenshot_quality", 80)

            temp_comm = self._ws_server.get_origin_communicator(origin)
            temp_comm.get_screenshot(
                generate_device_screenshot_path(origin, devicemappings,
                                                self._args),
                screenshot_quality, screenshot_type)

        filename = generate_device_screenshot_path(origin, devicemappings,
                                                   self._args)
        image_resize(filename,
                     os.path.join(self._args.temp_path, "madmin"),
                     width=250)

        creationdate = datetime.datetime.fromtimestamp(
            creation_date(filename)).strftime(self._datetimeformat)

        return creationdate
コード例 #5
0
ファイル: control.py プロジェクト: madBeavis/MAD
    def take_screenshot(self, origin=None, adb=False):
        origin = request.args.get('origin')
        useadb = request.args.get('adb', False)
        self._logger.info('MADmin: Making screenshot ({})', str(origin))

        devicemappings = self._mapping_manager.get_all_devicemappings()
        adb = devicemappings.get(origin, {}).get('adb', False)
        filename = generate_device_screenshot_path(origin, devicemappings, self._args)

        if useadb == 'True' and self._adb_connect.make_screenshot(adb, origin, "jpg"):
            self._logger.info('MADMin: ADB screenshot successfully ({})', str(origin))
        else:
            self.generate_screenshot(origin)

        creationdate = datetime.datetime.fromtimestamp(
            creation_date(filename)).strftime(self._datetimeformat)

        return creationdate
コード例 #6
0
ファイル: control.py プロジェクト: Romfrosk/MAD
    def swipe_screenshot(self):
        origin = request.args.get('origin')
        click_x = request.args.get('clickx')
        click_y = request.args.get('clicky')
        click_xe = request.args.get('clickxe')
        click_ye = request.args.get('clickye')
        useadb = request.args.get('adb')

        devicemappings = self._mapping_manager.get_all_devicemappings()

        filename = generate_device_screenshot_path(origin, devicemappings,
                                                   self._args)
        img = cv2.imread(filename, 0)
        height, width = img.shape[:2]

        real_click_x = int(width / float(click_x))
        real_click_y = int(height / float(click_y))
        real_click_xe = int(width / float(click_xe))
        real_click_ye = int(height / float(click_ye))
        adb = devicemappings.get(origin, {}).get('adb', False)

        if useadb == 'True' and self._adb_connect.make_screenswipe(
                adb, origin, real_click_x, real_click_y, real_click_xe,
                real_click_ye):
            self._logger.info('MADMin: ADB screenswipe successfully ({})',
                              str(origin))
        else:
            self._logger.info('MADMin WS Swipe x:{} y:{} xe:{} ye:{} ({})',
                              str(real_click_x), str(real_click_y),
                              str(real_click_xe), str(real_click_ye),
                              str(origin))
            temp_comm = self._ws_server.get_origin_communicator(origin)
            temp_comm.touchandhold(int(real_click_x), int(real_click_y),
                                   int(real_click_xe), int(real_click_ye))

        time.sleep(2)
        return self.take_screenshot(origin, useadb)
コード例 #7
0
    def get_phonescreens(self):
        if not os.path.exists(os.path.join(self._args.temp_path, "madmin")):
            os.makedirs(os.path.join(self._args.temp_path, "madmin"))

        screens_phone = []
        ws_connected_phones = []
        if self._ws_server is not None:
            phones = self._ws_server.get_reg_origins().copy()
        else:
            phones = []
        devicemappings = self._mapping_manager.get_all_devicemappings()

        # Sort devices by name.
        phones = sorted(phones)
        for phonename in phones:
            ws_connected_phones.append(phonename)
            add_text = ""
            adb_option = False
            adb = devicemappings.get(phonename, {}).get('adb', False)
            if adb is not None and self._adb_connect.check_adb_status(
                    adb) is not None:
                self._ws_connected_phones.append(adb)
                adb_option = True
                add_text = '<b>ADB</b>'
            else:
                self._ws_connected_phones.append(adb)

            filename = generate_device_screenshot_path(phonename,
                                                       devicemappings,
                                                       self._args)
            try:
                screenshot_ending: str = ".jpg"
                image_resize(filename,
                             os.path.join(self._args.temp_path, "madmin"),
                             width=250)
                screen = "screenshot/madmin/screenshot_" + str(
                    phonename) + screenshot_ending
                screens_phone.append(
                    generate_phones(phonename,
                                    add_text,
                                    adb_option,
                                    screen,
                                    filename,
                                    self._datetimeformat,
                                    dummy=False))
            except IOError:
                screen = "static/dummy.png"
                screens_phone.append(
                    generate_phones(phonename,
                                    add_text,
                                    adb_option,
                                    screen,
                                    filename,
                                    self._datetimeformat,
                                    dummy=True))
                try:
                    os.remove(filename)
                    self._logger.info(
                        "Screenshot {} was corrupted and has been deleted",
                        filename)
                except:
                    pass

        for phonename in self._adb_connect.return_adb_devices():
            if phonename.serial not in self._ws_connected_phones:
                devicemappings = self._mapping_manager.get_all_devicemappings()
                for pho in devicemappings:
                    if phonename.serial == devicemappings[pho].get(
                            'adb', False):
                        adb_option = True
                        add_text = '<b>ADB - no WS<img src="/static/warning.png" width="20px" ' \
                                   'alt="NO websocket connection!"></b>'
                        filename = generate_device_screenshot_path(
                            pho, devicemappings, self._args)
                        if os.path.isfile(filename):
                            image_resize(filename,
                                         os.path.join(self._args.temp_path,
                                                      "madmin"),
                                         width=250)
                            screenshot_ending: str = ".jpg"
                            screen = "screenshot/madmin/screenshot_" + str(
                                pho) + screenshot_ending
                            screens_phone.append(
                                generate_phones(pho,
                                                add_text,
                                                adb_option,
                                                screen,
                                                filename,
                                                self._datetimeformat,
                                                dummy=False))
                        else:
                            screen = "static/dummy.png"
                            screens_phone.append(
                                generate_phones(pho,
                                                add_text,
                                                adb_option,
                                                screen,
                                                filename,
                                                self._datetimeformat,
                                                dummy=True))

        return render_template('phonescreens.html',
                               editform=screens_phone,
                               header="Device control",
                               title="Device control")
コード例 #8
0
ファイル: control.py プロジェクト: snooter/MAD
    def get_phonescreens(self):
        if not os.path.exists(os.path.join(self._args.temp_path, "madmin")):
            os.makedirs(os.path.join(self._args.temp_path, "madmin"))

        screens_phone = []
        ws_connected_phones = []
        if self._ws_server is not None:
            phones = self._ws_server.get_reg_origins().copy()
        else:
            phones = []
        for phonename in phones:
            ws_connected_phones.append(phonename)
            add_text = ""
            adb_option = False
            adb = self._device_mapping[phonename].get('adb', False)
            if adb is not None and self._adb_connect.check_adb_status(
                    adb) is not None:
                self._ws_connected_phones.append(adb)
                adb_option = True
                add_text = '<b>ADB</b>'
            else:
                self._ws_connected_phones.append(adb)

            filename = generate_device_screenshot_path(phonename,
                                                       self._device_mapping,
                                                       self._args)
            if os.path.isfile(filename):
                screenshot_ending: str = ".jpg"
                image_resize(filename,
                             os.path.join(self._args.temp_path, "madmin"),
                             width=250)
                screen = "screenshot/madmin/screenshot_" + str(
                    phonename) + screenshot_ending
                screens_phone.append(
                    generate_phones(phonename,
                                    add_text,
                                    adb_option,
                                    screen,
                                    filename,
                                    self._datetimeformat,
                                    dummy=False))
            else:
                screen = "static/dummy.png"
                screens_phone.append(
                    generate_phones(phonename,
                                    add_text,
                                    adb_option,
                                    screen,
                                    filename,
                                    self._datetimeformat,
                                    dummy=True))

        for phonename in self._adb_connect.return_adb_devices():
            if phonename.serial not in self._ws_connected_phones:
                for pho in self._device_mapping:
                    if phonename.serial == self._device_mapping[pho].get(
                            'adb', False):
                        adb_option = True
                        add_text = '<b>ADB - no WS<img src="/static/warning.png" width="20px" ' \
                                   'alt="NO websocket connection!"></b>'
                        filename = generate_device_screenshot_path(
                            pho, self._device_mapping, self._args)
                        if os.path.isfile(filename):
                            image_resize(filename,
                                         os.path.join(self._args.temp_path,
                                                      "madmin"),
                                         width=250)
                            screenshot_ending: str = ".jpg"
                            screen = "screenshot/madmin/screenshot_" + str(
                                pho) + screenshot_ending
                            screens_phone.append(
                                generate_phones(pho,
                                                add_text,
                                                adb_option,
                                                screen,
                                                filename,
                                                self._datetimeformat,
                                                dummy=False))
                        else:
                            screen = "static/dummy.png"
                            screens_phone.append(
                                generate_phones(pho,
                                                add_text,
                                                adb_option,
                                                screen,
                                                filename,
                                                self._datetimeformat,
                                                dummy=True))

        return render_template('phonescreens.html',
                               editform=screens_phone,
                               header="Phonecontrol",
                               title="Phonecontrol",
                               running_ocr=(self._args.only_ocr))