def get_audio_info(): global_settings.aud_interface.calculate_progress() copied_status = deepcopy(global_settings.aud_interface.status) modified_audio_data = { "audio_data": copied_status } modified_audio_data["audio_data"]["track"] = copied_status.get_track().to_dict() modified_audio_data["audio_data"]["status"] = copied_status.get_status().value modified_audio_data["audio_data"]["audio_library"] = "" if len(modified_audio_data["audio_data"]["img_uri_hashed"]) > 1: img_hashed_uri = modified_audio_data["audio_data"]["img_uri_hashed"] image_uri_split = modified_audio_data["audio_data"]["track"]["image_uri"].rsplit('/', 1) image_dir = image_uri_split[0] modified_audio_data["audio_data"]["img_uri_formatted"] = format_image(f"{img_hashed_uri}", "jpg", image_dir, size_goal=32768) else: modified_audio_data["audio_data"]["img_uri_formatted"] = '' modified_audio_data["audio_data"]["track"]["track_type"] = copied_status.get_track()["track_type"].value modified_audio_data["audio_data"]["volume"] = copied_status.get_volume() if int(modified_audio_data["audio_data"]["progress_time"]) > 0: modified_audio_data["audio_data"]["progress_string"] = str( timedelta(seconds=int(modified_audio_data["audio_data"]["progress_time"]))) modified_audio_data["audio_data"]["duration_string"] = modified_audio_data["audio_data"]["track"]["duration"] else: modified_audio_data["audio_data"]["progress_string"] = 0 modified_audio_data["audio_data"]["duration_string"] = modified_audio_data["audio_data"]["track"]["duration"] for i, track_item in enumerate(modified_audio_data["audio_data"]["queue"]): modified_audio_data["audio_data"]["queue"][i] = track_item.to_dict() modified_audio_data["audio_data"]["queue"][i]["track_type"] = modified_audio_data["audio_data"]["queue"][i]["track_type"].value return modified_audio_data
def cmd_img(self, data): all_data = data.message.strip().split() parameters = all_data[1].rsplit(".", 1) try: if not os.path.isfile( f"{dir_utils.get_perm_med_dir()}/images/{parameters[0]}.{parameters[1]}" ): gs.gui_service.quick_gui("The image does not exist.", text_type='header', box_align='left') return False except IndexError: return False # Format image formatted_string = IH.format_image( parameters[0], parameters[1], f"{dir_utils.get_perm_med_dir()}/images/") rprint("Posting an image to the mumble channel chat.") # Display image with PGUI system gs.gui_service.quick_gui_img( f"{dir_utils.get_perm_med_dir()}/images/", formatted_string, bgcolor=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_COL], cellspacing=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_SIZE], format_img=False) log(INFO, "Posted an image to the mumble channel chat from local files.")
def quick_gui_img(self, directory, img_data, format_img=False, caption=None, caption_align='center', caption_font=None, bgcolor="black", channel=None, user=None, img_size=65536, cellspacing="5"): if self.box_open: return False if channel is None: channel = runtime_utils.get_my_channel() self.open_box(align='left', bgcolor=bgcolor, cellspacing=cellspacing) if format_img: formatted_string = IH.format_image(f"{img_data}", "jpg", directory, size_goal=img_size) content = self.make_content(formatted_string, image=True, text_align='center') if content is not None: self.append_row(content) else: content = self.make_content(img_data, image=True, text_align='center') if content is not None: self.append_row(content) if caption is not None: caption = self.make_content(caption, text_type="header", text_font=caption_font, text_align=caption_align, image=False) self.append_row(caption) self.close_box() self.display_box(channel=channel, user=user) self.clear_display()
def get_audio_info(): global_settings.aud_interface.calculate_progress() copied_status = deepcopy(global_settings.aud_interface.status) modified_audio_data = {"audio_data": copied_status} modified_audio_data["audio_data"]["track"] = copied_status.get_track( ).to_dict() modified_audio_data["audio_data"]["status"] = copied_status.get_status( ).value modified_audio_data["audio_data"]["audio_library"] = "" if len(modified_audio_data["audio_data"]["img_uri_hashed"]) > 1: img_hashed_uri = modified_audio_data["audio_data"]["img_uri_hashed"] image_uri_split = modified_audio_data["audio_data"]["track"][ "image_uri"].rsplit('/', 1) image_dir = image_uri_split[0] modified_audio_data["audio_data"]["img_uri_formatted"] = format_image( f"{img_hashed_uri}", "jpg", image_dir, size_goal=32768, quiet=True, src_only=True) else: modified_audio_data["audio_data"]["img_uri_formatted"] = '' modified_audio_data["audio_data"]["track"][ "track_type"] = copied_status.get_track()["track_type"].value modified_audio_data["audio_data"]["volume"] = copied_status.get_volume() if int(modified_audio_data["audio_data"]["progress_time"]) > 0: modified_audio_data["audio_data"]["progress_string"] = str( timedelta(seconds=int(modified_audio_data["audio_data"] ["progress_time"]))) modified_audio_data["audio_data"][ "duration_time"] = modified_audio_data["audio_data"]["track"][ "duration"] modified_audio_data["audio_data"]["duration_string"] = str( timedelta(seconds=int(modified_audio_data["audio_data"]["track"] ['duration']))) if int( modified_audio_data["audio_data"] ["track"]['duration']) > 0 else "-1" else: modified_audio_data["audio_data"]["progress_string"] = 0 modified_audio_data["audio_data"][ "duration_string"] = modified_audio_data["audio_data"]["track"][ "duration"] for i, track_item in enumerate(modified_audio_data["audio_data"]["queue"]): modified_audio_data["audio_data"]["queue"][i] = track_item.to_dict() modified_audio_data["audio_data"]["queue"][i][ "track_type"] = modified_audio_data["audio_data"]["queue"][i][ "track_type"].value encoded_dict = json.dumps(modified_audio_data, sort_keys=True) modified_audio_data["audio_data"]["hash"] = hex( crc32(str.encode(encoded_dict)) & 0xffffffff) return modified_audio_data
def cmd_post(self, data): all_data = data.message.strip().split(' ', 1) img_url = all_data[1] # Download image img_url = BeautifulSoup(img_url, 'html.parser').get_text() try: IH.download_image_stream(img_url) except exceptions.HTTPError: gs.gui_service.quick_gui( "Encountered an HTTP Error while trying to retrieve the image.", text_type='header', text_align='left', box_align='left') return except exceptions.InvalidSchema: gs.gui_service.quick_gui( "Encountered an Invalid Schema Error while trying to retrieve the image.", text_type='header', text_align='left', box_align='left') return except exceptions.RequestException: gs.gui_service.quick_gui( "Encountered a Request Error while trying to retrieve the image.", text_type='header', text_align='left', box_align='left') return img_ext = img_url.rsplit('.', 1)[1] formatted_string = IH.format_image( "_image", img_ext, f'{dir_utils.get_temp_med_dir()}/internal/images') rprint("Posting an image to the mumble channel chat.") # Display image with PGUI system gs.gui_service.quick_gui_img( f"{dir_utils.get_temp_med_dir()}/internal/images", formatted_string, bgcolor=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_COL], cellspacing=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_SIZE], format_img=False) log(INFO, f"Posted an image to the mumble channel chat from: {img_url}.")
def cmd_img(self, data): all_data = data.message.strip().split(' ', 1) if len(all_data) != 2: log(ERROR, CMD_INVALID_IMG, origin=L_COMMAND, error_type=CMD_INVALID_ERR, print_mode=PrintMode.VERBOSE_PRINT.value) gs.gui_service.quick_gui(CMD_INVALID_IMG, text_type='header', box_align='left') return parameters = all_data[1].rsplit(".", 1) # Check if the image exists in the permanent media directory. if not path.isfile( f"{dir_utils.get_perm_med_dir()}/{self.plugin_name}/{parameters[0]}.{parameters[1]}" ): log(ERROR, CMD_IMAGE_DNE, origin=L_COMMAND, error_type=CMD_PROCESS_ERR, print_mode=PrintMode.VERBOSE_PRINT.value) gs.gui_service.quick_gui(CMD_IMAGE_DNE, text_type='header', box_align='left') return # Format the image and display it with the PGUI system. formatted_string = IH.format_image( parameters[0], parameters[1], f"{dir_utils.get_perm_med_dir()}/{self.plugin_name}/") gs.gui_service.quick_gui_img( f"{dir_utils.get_perm_med_dir()}/{self.plugin_name}/", formatted_string, bgcolor=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_COL], cellspacing=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_SIZE], format_img=False) log(INFO, INFO_POSTED_IMAGE, origin=L_COMMAND, print_mode=PrintMode.VERBOSE_PRINT.value)
def create_monster_image(monster_data_dict, max_img_size=65536): if monster_data_dict['image'] is not None: img_string = ImageHelper.format_image( f'{monster_data_dict["image"]}', 'jpg', f'{dir_utils.get_perm_med_dir()}/mhw_wiki', size_goal=max_img_size, max_width=250, max_height=250) content = global_settings.gui_service.make_content( f"""{img_string}""", 'header', text_color=global_settings.cfg[C_PGUI_SETTINGS][P_TXT_HEAD_COL], text_align='center', image=True) else: content = global_settings.gui_service.make_content( f"""Image Unavailable""", 'header', text_color=global_settings.cfg[C_PGUI_SETTINGS][P_TXT_HEAD_COL], text_align='center') return content
def cmd_post(self, data): all_data = data.message.strip().split() img_url = all_data[1] # Download image img_url = ''.join( BeautifulSoup(img_url, 'html.parser').findAll(text=True)) IH.download_image_stream(img_url) # Format image time.sleep(1) img_ext = img_url.rsplit('.', 1)[1] formatted_string = IH.format_image( "_image", img_ext, f'{dir_utils.get_temp_med_dir()}/images') rprint("Posting an image to the mumble channel chat.") # Display image with PGUI system gs.gui_service.quick_gui_img( f"{dir_utils.get_temp_med_dir()}/images", formatted_string, bgcolor=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_COL], cellspacing=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_SIZE], format_img=False) log(INFO, f"Posted an image to the mumble channel chat from: {img_url}.") dir_utils.remove_file("_image.jpg", f'{dir_utils.get_temp_med_dir()}/images')
def cmd_post(self, data): all_data = data.message.strip().split(' ', 1) if len(all_data) != 2: log(ERROR, CMD_INVALID_POST, origin=L_COMMAND, error_type=CMD_INVALID_ERR, print_mode=PrintMode.VERBOSE_PRINT.value) gs.gui_service.quick_gui(CMD_INVALID_POST, text_type='header', box_align='left') return # Download image from the provided URL. img_url = all_data[1].strip() img_url = BeautifulSoup(img_url, 'html.parser').get_text() try: # Download the image in 1024 byte chunks and save it as a temporary image. IH.download_image_stream(img_url) except exceptions.HTTPError: log(ERROR, GEN_HTTP_ERROR, origin=L_COMMAND, error_type=CMD_PROCESS_ERR, print_mode=PrintMode.VERBOSE_PRINT.value) gs.gui_service.quick_gui(GEN_HTTP_ERROR, text_type='header', box_align='left') return except exceptions.InvalidSchema: log(ERROR, GEN_INVALID_SCHEMA_ERROR, origin=L_COMMAND, error_type=CMD_PROCESS_ERR, print_mode=PrintMode.VERBOSE_PRINT.value) gs.gui_service.quick_gui(GEN_INVALID_SCHEMA_ERROR, text_type='header', box_align='left') return except exceptions.RequestException: log(ERROR, GEN_REQUESTS_ERROR, origin=L_COMMAND, error_type=CMD_PROCESS_ERR, print_mode=PrintMode.VERBOSE_PRINT.value) gs.gui_service.quick_gui(GEN_REQUESTS_ERROR, text_type='header', box_align='left') return # Format the retrieved image into the b64 variant for mumble usage. img_ext = img_url.rsplit('.', 1)[1] formatted_string = IH.format_image( T_TEMP_IMG_NAME, img_ext, f'{dir_utils.get_temp_med_dir()}/internal/images') # Display image with PGUI system and log the event. gs.gui_service.quick_gui_img( f"{dir_utils.get_temp_med_dir()}/internal/images", formatted_string, bgcolor=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_COL], cellspacing=self.metadata[C_PLUGIN_SETTINGS][P_FRAME_SIZE], format_img=False) log(INFO, INFO_POSTED_IMAGE, origin=L_COMMAND, print_mode=PrintMode.VERBOSE_PRINT.value)