def repeat_session(self, args): print("Sleep for {} minutes".format(self.repeat)) try: sleep(60 * self.repeat) return refresh_args_by_conf_file(args, self.next_config_file) except KeyboardInterrupt: print_full_report(self.sessions) sys.exit(0)
def repeat_session(self, args): print("Sleep for {} minutes".format(self.repeat)) try: sleep(60 * self.repeat) refresh_args_by_conf_file(args) except KeyboardInterrupt: print_full_report(self.sessions) self.sessions.persist(self.session_state.my_username) sys.exit(0)
def end_session(self, device_wrapper): close_instagram(device_wrapper.device_id, device_wrapper.app_id) print_copyright() self.session_state.finishTime = datetime.now() print_timeless(COLOR_REPORT + "-------- FINISH: " + str(self.session_state.finishTime) + " --------" + COLOR_ENDC) print_full_report(self.sessions) print_timeless("") self.sessions.persist(self.session_state.my_username)
def end_session(self, device_wrapper): close_instagram(device_wrapper.device_id, device_wrapper.app_id) if __version__.__debug_mode__: device_wrapper.get().stop_screen_record() print_copyright() self.session_state.finishTime = datetime.now() print_timeless(COLOR_REPORT + "-------- FINISH: " + str(self.session_state.finishTime) + " --------" + COLOR_ENDC) print_full_report(self.sessions) print_timeless("") self.sessions.persist(self.session_state.my_username)
def run(self): args, device_wrapper, app_version = self.parse_args_and_get_device_wrapper( ) if args is None or device_wrapper is None: return if not args.no_speed_check: print( "Checking your Internet speed to adjust the script speed, please wait for a minute..." ) print("(use " + COLOR_BOLD + "--no-speed-check" + COLOR_ENDC + " to skip this check)") sleeper.update_random_sleep_range() while True: self.set_session_args(args) action_runner = self.actions_mgr.select_action_runner(args) if action_runner is None: return action_runner.set_params(args) self.limits_mgr.set_limits(args) try: self.start_session(args, device_wrapper, app_version) self.storage = Storage(self.session_state.my_username, args) action_runner.run(device_wrapper, self.storage, self.session_state, self.on_action_callback, self.limits_mgr.is_limit_reached_for_action) except ActionBlockedError as ex: print_timeless("") print_timeless(COLOR_FAIL + str(ex) + COLOR_ENDC) self.end_session(device_wrapper) return except Exception as ex: if __debug_mode__: raise ex else: print_timeless(COLOR_FAIL + f"\nCaught an exception:\n{ex}" + COLOR_ENDC) save_crash(device_wrapper.get(), ex) self.end_session(device_wrapper) if self.repeat is not None: self.repeat_session(args) else: break print_full_report(self.sessions) self.sessions.persist(directory=self.session_state.my_username)
def end_session(self, device_wrapper, with_app_closing=True): if with_app_closing: close_instagram_and_system_dialogs(device_wrapper.get()) if __version__.__debug_mode__: device_wrapper.get().stop_screen_record() print_copyright() self.session_state.end_session() print_timeless(COLOR_REPORT + "-------- FINISH: " + str(self.session_state.finishTime) + " --------" + COLOR_ENDC) print_full_report(self.sessions) print_timeless("")
def run(self): args, device_wrapper = self.parse_args_and_get_device_wrapper() while True: if args is None or device_wrapper is None: return self.set_session_args(args) action_runner = self.actions_mgr.select_action_runner(args) if action_runner is None: return action_runner.set_params(args) self.limits_mgr.set_limits(args) try: self.start_session(args, device_wrapper) self.storage = Storage(self.session_state.my_username, args) action_runner.run(device_wrapper, self.storage, self.session_state, self.on_action_callback, self.limits_mgr.is_limit_reached_for_action) self.end_session(device_wrapper) except ActionBlockedError as ex: print_timeless("") print_timeless(COLOR_FAIL + str(ex) + COLOR_ENDC) return except Exception as ex: if __debug_mode__: raise ex else: print_timeless(COLOR_FAIL + f"\nCaught an exception:\n{ex}" + COLOR_ENDC) save_crash(device_wrapper.get()) if self.repeat is not None: self.repeat_session(args) else: break print_full_report(self.sessions) self.sessions.persist(directory=self.session_state.my_username)
def wrapper(*args, **kwargs): from insomniac.session import sessions session_state = sessions[-1] try: func(*args, **kwargs) except KeyboardInterrupt: close_instagram(device_wrapper.device_id) print_copyright() print_timeless(COLOR_REPORT + "-------- FINISH: " + str(datetime.now().time()) + " --------" + COLOR_ENDC) print_full_report(sessions) sessions.persist(directory=session_state.my_username) sys.exit(0) except (DeviceFacade.JsonRpcError, IndexError, HTTPException, timeout) as ex: print(COLOR_FAIL + traceback.format_exc() + COLOR_ENDC) save_crash(device_wrapper.get(), ex) print("No idea what it was. Let's try again.") # Hack for the case when IGTV was accidentally opened close_instagram(device_wrapper.device_id) sleeper.random_sleep() open_instagram(device_wrapper.device_id) sleeper.random_sleep() navigate(device_wrapper.get(), Tabs.PROFILE) except LanguageChangedException: print_timeless("") print( "Language was changed. We'll have to start from the beginning." ) navigate(device_wrapper.get(), Tabs.PROFILE) except Exception as e: save_crash(device_wrapper.get(), e) close_instagram(device_wrapper.device_id) print_full_report(sessions) sessions.persist(directory=session_state.my_username) raise e