3434from veadk .memory .short_term_memory import ShortTermMemory
3535from veadk .types import MediaMessage
3636from veadk .utils .logger import get_logger
37- from veadk .utils .misc import formatted_timestamp , read_png_to_bytes
37+ from veadk .utils .misc import formatted_timestamp , read_file_to_bytes
3838
3939logger = get_logger (__name__ )
4040
5050async def pre_run_process (self , process_func , new_message , user_id , session_id ):
5151 if new_message .parts :
5252 for part in new_message .parts :
53- if (
54- part .inline_data
55- and part .inline_data .mime_type == "image/png"
56- and self .upload_inline_data_to_tos
57- ):
53+ if part .inline_data and self .upload_inline_data_to_tos :
5854 await process_func (
5955 part ,
6056 self .app_name ,
@@ -105,9 +101,20 @@ def _convert_messages(
105101 if isinstance (messages , str ):
106102 _messages = [types .Content (role = "user" , parts = [types .Part (text = messages )])]
107103 elif isinstance (messages , MediaMessage ):
108- assert messages .media .endswith (".png" ), (
109- "The MediaMessage only supports PNG format file for now."
104+ import filetype
105+
106+ file_data = read_file_to_bytes (messages .media )
107+
108+ kind = filetype .guess (file_data )
109+ if kind is None :
110+ raise ValueError ("Unsupported or unknown file type." )
111+
112+ mime_type = kind .mime
113+
114+ assert mime_type .startswith (("image/" , "video/" )), (
115+ f"Unsupported media type: { mime_type } "
110116 )
117+
111118 _messages = [
112119 types .Content (
113120 role = "user" ,
@@ -116,8 +123,8 @@ def _convert_messages(
116123 types .Part (
117124 inline_data = Blob (
118125 display_name = messages .media ,
119- data = read_png_to_bytes ( messages . media ) ,
120- mime_type = "image/png" ,
126+ data = file_data ,
127+ mime_type = mime_type ,
121128 )
122129 ),
123130 ],
0 commit comments