o
    i                     @   s.   d Z ddlZddlmZ deddfddZdS )	z:Functions to play audio on Windows using native win32 APIs    N   )pr_err	mp3_fnamereturnc                    s   t jdkr	tdddlmm}m} |jj |j	|j
|jg _|j _dtdtf fdd}|jjd	tdd
ffdd}|| }|d |d| d |d |d d
S )z-Play mp3 file with given path using win32 APIwin32z"Function only available on Windowsr   )create_unicode_bufferwindllwintypes	long_namer   c                    s.   d}	 |} | ||}||kr|j S |}q)z|
        Gets the DOS-safe short path name of a given long path.
        http://stackoverflow.com/a/23598461/200291
        r   )value)r
   Zoutput_buf_sizeZ
output_bufneeded)_get_short_path_name_wr    V/home/kim/smarthome/.venv/lib/python3.10/site-packages/edge_playback/win32_playback.pyget_short_path_name   s   z+play_mp3_win32.<locals>.get_short_path_namemsgNc                    s>    | ddd}|dkrt d| d|  d td dS dS )zSend MCI command stringr   zError z in mciSendString z
. Exiting.r   N)r   sysexit)r   result)mci_send_string_wr   r   mci_send(   s
   z play_mp3_win32.<locals>.mci_sendz	Close AllzOpen "z" Type MPEGVideo Alias theMP3zPlay theMP3 WaitzClose theMP3)r   platformNotImplementedErrorctypesr   r   r	   Zkernel32ZGetShortPathNameWZLPCWSTRZLPWSTRZDWORDargtypesrestypestrZwinmmZmciSendStringW)r   r   r	   r   r   Zmp3_shortnamer   )r   r   r   r   play_mp3_win32   s"   
r   )__doc__r   utilr   r   r   r   r   r   r   <module>   s    