a
    .i                     @   s*   d Z ddlmZ ddlZG dd dZdS )u   
Класс - адаптер, для класса PLAYER
Цель адаптера: Приведение  протокола общения с внешним классом к унифицированным требованиям контроллера.
   )PLAYER    Nc                   @   sv   e Zd ZdddZddddZdeddd	d
ZdeddddZdeddddZddddZ	ddddZ
dS )PLAYER_adapterdefaultP   devicevolumeN)returnc                 C   s   d | _ | j | _d S N)player_instanceDEFAULT_CONFIGcopyplayer_configself r   5/var/aqua_controller/devices/player/player_adapter.py__init__   s    zPLAYER_adapter.__init__)optionsr
   c              
   C   s   z|r0t |tr0dD ]}||v r|| | j|< q| jd}t|d| _| jd}t |trd|  krrdkrn n| j| ntdW n4 t	y } zt
d| |W Y d }~n
d }~0 0 d S )	Nr   r   )r   r	   r   d   p   Уровень громкости должна быть целым числом, в диапазоне (0 - 100)u>   Ошибка инициализации устройства: )
isinstancedictr   getr   r   int
set_volume
ValueError	ExceptionRuntimeError)r   r   keyZ
tmp_device
tmp_volumeer   r   r   run   s    
"zPLAYER_adapter.runc              
   C   sF  z| j d u rtd|d u r$i }nt|ts6td|d}|d urt|trxd|  krfdkrxn n| j | ntd|d}|d urt|t	r|g}n t|t
tfrt
|}ntdg }|D ]&}tj|rtj|r|| q|r| j | W n6 ty@ } ztd	| |W Y d }~n
d }~0 0 d S )
Nu;   Устройство не инициализировано.uM   Параметр 'options' должен быть словарем или Noner	   r   r   r   fileud   Параметр 'file' должен быть строкой, списком или кортежемuK   Ошибка воспроизведения звукового файла: )r   r   r   r   	TypeErrorr   r   r   r   strlisttupleospathexistsisfileappendZplay_multipler   )r   r   r!   Ztmp_fileZ	file_listZvalid_filesZ	file_itemr"   r   r   r   set:   s6    


"



zPLAYER_adapter.set)optionr
   c                 C   s   t dd S )Nu=   Метод не доступен для устройства.)r   )r   r/   r   r   r   r   c   s    zPLAYER_adapter.getc              
   C   sh   z(| j d ur&| j   | j   d | _ W n: tyb } z"d | _ td| |W Y d }~n
d }~0 0 d S )Nu6   Ошибка остановки устройства: )r   stopshutdownr   r   )r   r"   r   r   r   r0   g   s    



zPLAYER_adapter.stopc                 C   s   z|    W n   Y n0 d S r   )r0   r   r   r   r   __del__r   s    zPLAYER_adapter.__del__)N)N)N)__name__
__module____qualname__r   r   r   r#   r.   r   r0   r2   r   r   r   r   r      s   
)r   )__doc__Zplayerr   r)   r   r   r   r   r   <module>   s   