o
    ó††h–2  ã                   @   sð   d dl Z d dlmZ d dlZd dlZd dlZd dlmZ zd dlZej	ddgddd� dZ
W n ejefy@   dZ
ed	ƒ Y nw d
ddddddddddddœZddiZe e¡ZG dd„ de jƒZG dd„ dƒZG dd„ dejƒZdd„ ZdS )é    N)Úcommands)ÚdequeÚffmpegz-versionT)Úcapture_outputÚcheckFuC   âš ï¸� FFmpeg nenÃ­ nainstalovÃ¡n! Music commands nebudou fungovat.zbestaudio/bestz&%(extractor)s-%(id)s-%(title)s.%(ext)sÚautoz0.0.0.0)ÚformatZouttmplZrestrictfilenamesZ
noplaylistZnocheckcertificateZignoreerrorsZlogtostderrÚquietZno_warningsZdefault_searchÚsource_addressZextract_flatÚoptionsz-vnc                       s6   e Zd Zddœ‡ fdd„
Zedddœdd	„ƒZ‡  ZS )
Ú
YTDLSourceg      à?)Úvolumec                   s<   t ƒ  ||¡ || _| d¡| _| d¡| _| d¡| _d S )NÚtitleÚurlÚduration)ÚsuperÚ__init__ÚdataÚgetr   r   r   )ÚselfÚsourcer   r   ©Ú	__class__© úDC:\Users\Buzz\Documents\TitanTS\Discord\TitanBot\files\cogs\music.pyr   (   s
   zYTDLSource.__init__NF©ÚloopÚstreamc                ƒ   sn   �|pt  ¡ }| d ‡ ‡fdd„¡I d H }d|v r|d d }ˆ r%|d nt |¡}| tj|fi t¤Ž|d�S )Nc                      s   t jˆˆ  d�S )N)Zdownload)ÚytdlZextract_infor   ©r   r   r   r   Ú<lambda>2   s    z%YTDLSource.from_url.<locals>.<lambda>Úentriesr   r   )r   )ÚasyncioÚget_event_loopÚrun_in_executorr   Zprepare_filenameÚdiscordÚFFmpegPCMAudioÚffmpeg_options)Úclsr   r   r   r   Úfilenamer   r   r   Úfrom_url/   s   €zYTDLSource.from_url)Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr*   Ú__classcell__r   r   r   r   r   '   s    r   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
MusicQueuec                 C   s   t ƒ | _d | _d | _d S ©N)r   ÚqueueÚcurrentÚnp©r   r   r   r   r   <   s   
zMusicQueue.__init__c                 C   s   | j  |¡ d S r1   )r2   Úappend)r   Úitemr   r   r   ÚaddA   s   zMusicQueue.addc                 C   s   | j r| j  ¡ S d S r1   )r2   Úpopleftr5   r   r   r   Úget_nextD   s   
zMusicQueue.get_nextc                 C   s   | j  ¡  d S r1   )r2   Úclearr5   r   r   r   r;   I   s   zMusicQueue.clearc                 C   s*   dd l }t| jƒ}| |¡ t|ƒ| _d S )Nr   )ÚrandomÚlistr2   Úshuffler   )r   r<   Z	temp_listr   r   r   r>   L   s   

zMusicQueue.shuffleN)r+   r,   r-   r   r8   r:   r;   r>   r   r   r   r   r0   ;   s    r0   c                   @   s*  e Zd Zdd„ Zdd„ Zdd„ Zejddgd	�d
d„ ƒZejddgd	�dd„ ƒZ	ejdd�dd„ ƒZ
ejdd�dd„ ƒZejddgd	�dd„ ƒZejddgd	�dd„ ƒZejdd gd	�d!d"„ ƒZejd#d�d$d%„ ƒZejd&d'gd	�d4d&efd)d*„ƒZejd+d,d-gd	�d.d/„ ƒZejd0d1gd	�d2d3„ ƒZd(S )5ÚMusicc                 C   s   || _ i | _d S r1   )ÚbotÚmusic_queues)r   r@   r   r   r   r   S   s   
zMusic.__init__c                 C   s    || j vrtƒ | j |< | j | S r1   )rA   r0   )r   Úguild_idr   r   r   Ú	get_queueW   s   

zMusic.get_queuec           	   
   ƒ   s  �ˆ  ˆ jj¡}|jr‰| ¡ }||_zPtj|d ˆjj	dd�I dH }ˆ j
j|‡ ‡fdd„d� tjdd	|j› d	�d
d�}|jrW|jd }|jd }|jd|› d|d›�dd� ˆ j|d�I dH  W dS  tyˆ } zˆ  d|› �¡I dH  ˆ ˆ ¡I dH  W Y d}~dS d}~ww dS )u"   PÅ™ehraje dalÅ¡Ã­ skladbu z frontyr   Tr   Nc                    ó   t  ˆ ˆ ¡ˆjj¡S r1   ©r"   Úrun_coroutine_threadsafeÚ	play_nextr@   r   ©Úe©Úctxr   r   r   r    f   ó    z!Music.play_next.<locals>.<lambda>©Úafterõ   ðŸŽµ PrÃ¡vÄ› hrajeú**éòeX ©r   ÚdescriptionÚcoloré<   õ   â�±ï¸� DÃ©lkaú:Ú02d©ÚnameÚvalueÚinline©Úembedu   â�Œ Chyba pÅ™i pÅ™ehrÃ¡vÃ¡nÃ­: )rC   ÚguildÚidr2   r:   r3   r   r*   r@   r   Úvoice_clientÚplayr%   ÚEmbedr   r   Ú	add_fieldÚsendÚ	ExceptionrG   )	r   rK   r2   Z	next_songÚplayerr^   ÚminutesÚsecondsrI   r   rJ   r   rG   \   s0   €ý

€þìzMusic.play_nextÚjoinÚconnect)rZ   Úaliasesc                 Ã   s„   �|j js| d¡I dH  dS |j jj}|jdur#|j |¡I dH  n| ¡ I dH  tjdd|j	› d�dd�}|j|d�I dH  dS )	u$   PÅ™ipojÃ­ bota do hlasovÃ©ho kanÃ¡luu)   â�Œ Nejsi pÅ™ipojen k hlasovÃ©mu kanÃ¡lu!Nu   âœ… PÅ™ipojenu   PÅ™ipojen k **rP   rQ   rR   r]   )
ÚauthorÚvoicere   Úchannelra   Úmove_tork   r%   rc   rZ   )r   rK   ro   r^   r   r   r   rj   x   s   €

ýz
Music.joinrb   Úpc          	      ƒ   sò  �ˆ   ¡ 4 I dH šã ˆ jsˆ ˆ ¡I dH  z£tj|ˆjjdd�I dH }ˆ ˆ jj	¡}ˆ j 
¡ rf| ||jˆ jdœ¡ tjdd|j› d�dd�}|jd	ˆ jjdd
� |jdt|jƒdd
� ˆ j|d�I dH  nQ||jˆ jdœ|_ˆ jj|‡ ‡fdd„d� tjdd|j› d�dd�}|jd	ˆ jjdd
� |jr®|jd }|jd }|jd|› d|d›�dd
� ˆ j|d�I dH  W n tyÕ } zˆ  d|› �¡I dH  W Y d}~nd}~ww W d  ƒI dH  dS W d  ƒI dH  dS 1 I dH sòw   Y  dS )u   PÅ™ehraje hudbu z YouTubeNTr   )r   r   Ú	requesteru   ðŸ“� PÅ™idÃ¡no do frontyrP   rQ   rR   õ   ðŸ‘¤ PoÅ¾adavek odrY   u   ðŸ“Š Pozice ve frontÄ›r]   c                    rD   r1   rE   rH   rJ   r   r   r    ±   rL   zMusic.play.<locals>.<lambda>rM   rO   rU   rV   rW   rX   u   â�Œ Chyba pÅ™i hledÃ¡nÃ­: )Útypingra   rj   r   r*   r@   r   rC   r_   r`   Ú
is_playingr8   r   rm   r%   rc   rd   ÚmentionÚlenr2   re   r3   rb   r   rf   )	r   rK   Úqueryrg   r2   r^   rh   ri   rI   r   rJ   r   rb   �   s\   €
ýýýý

€"€ÿ€Ð1.Ïz
Music.playÚpause)rZ   c                 Ã   óT   �|j r |j  ¡ r |j  ¡  tjddd�}|j|d�I dH  dS | d¡I dH  dS )u   PozastavÃ­ pÅ™ehrÃ¡vÃ¡nÃ­u   â�¸ï¸� PozastavenorQ   ©r   rT   r]   Nõ   â�Œ Nic se nepÅ™ehrÃ¡vÃ¡!)ra   ru   ry   r%   rc   re   ©r   rK   r^   r   r   r   ry   Ã   ó   €
zMusic.pauseÚresumec                 Ã   rz   )u   ObnovÃ­ pÅ™ehrÃ¡vÃ¡nÃ­u   â–¶ï¸� ObnovenorQ   r{   r]   Nu%   â�Œ PÅ™ehrÃ¡vÃ¡nÃ­ nenÃ­ pozastaveno!)ra   Ú	is_pausedr   r%   rc   re   r}   r   r   r   r   Í   r~   zMusic.resumeÚskipÚnextc                 Ã   rz   )u   PÅ™eskoÄ�Ã­ aktuÃ¡lnÃ­ skladbuu   â�­ï¸� PÅ™eskoÄ�enorQ   r{   r]   Nr|   )ra   ru   Ústopr%   rc   re   r}   r   r   r   r�   ×   r~   z
Music.skipr2   Úqc              
   Ã   s  �|   |jj¡}|js|js| d¡I dH  dS tjddd�}|jr7|jdd|jd › d	|jd
 j	› �dd� |jrƒg }t
t|jƒdd… dƒD ]\}}| d|› d|d › d|d
 j	› �¡ qH|jdd |¡dd� t|jƒdkrƒ|jddt|jƒd › d�dd� |j|d�I dH  dS )u   ZobrazÃ­ frontu skladebõ   â�Œ Fronta je prÃ¡zdnÃ¡!Nu   ðŸŽµ Fronta skladebrQ   r{   u   â–¶ï¸� PrÃ¡vÄ› hrajerP   r   u   **
PoÅ¾adavek od: rr   FrY   é
   é   ú`z.` **z** - u   ðŸ“� NÃ¡sledujÃ­cÃ­ skladbyÚ
u   â„¹ï¸�z... a u    dalÅ¡Ã­ch skladebr]   )rC   r_   r`   r2   r3   re   r%   rc   rd   rv   Ú	enumerater=   r6   rj   rw   )r   rK   r2   r^   Z
queue_listÚiZsongr   r   r   Ú
show_queueá   s0   €ý (ý"zMusic.show_queueZ
clearqueueZcqc                 Ã   s<   �|   |jj¡}| ¡  tjddd�}|j|d�I dH  dS )u   VymaÅ¾e frontuu   ðŸ—‘ï¸� Fronta vymazÃ¡narQ   r{   r]   N)rC   r_   r`   r;   r%   rc   re   ©r   rK   r2   r^   r   r   r   Úclear_queue  s
   €zMusic.clear_queuer>   c                 Ã   sV   �|   |jj¡}|js| d¡I dH  dS | ¡  tjddd�}|j|d�I dH  dS )u   ZamÃ­chÃ¡ frontur…   Nu   ðŸ”€ Fronta zamÃ­chÃ¡narQ   r{   r]   )rC   r_   r`   r2   re   r>   r%   rc   r�   r   r   r   Úshuffle_queue  s   €zMusic.shuffle_queuer   ZvolNc                 Ã   sâ   �|du r-|j r#|j jr#t|j jjd ƒ}| d|› d�¡I dH  dS | d¡I dH  dS d|  kr7dksBn | d¡I dH  dS |j rg|j jrg|d |j j_tjdd	|› d�d
d�}|j|d�I dH  dS | d¡I dH  dS )u   NastavÃ­ hlasitost (0-100)Néd   u   ðŸ”Š AktuÃ¡lnÃ­ hlasitost: ú%r|   r   u$   â�Œ Hlasitost musÃ­ bÃ½t mezi 0-100!u   ðŸ”Š Hlasitost zmÄ›nÄ›nazNastaveno na rQ   rR   r]   )ra   r   Úintr   re   r%   rc   )r   rK   r   Zcurrent_volr^   r   r   r   r     s(   €ÿ
ýzMusic.volumeÚ
disconnectÚleaveZdcc                 Ã   sf   �|j r)|  |jj¡}| ¡  |j  ¡ I dH  tjddd�}|j|d�I dH  dS | d¡I dH  dS )u!   OdpojÃ­ bota z hlasovÃ©ho kanÃ¡luNu   ðŸ‘‹ OdpojenrQ   r{   r]   u*   â�Œ Nejsem pÅ™ipojen k hlasovÃ©mu kanÃ¡lu!)	ra   rC   r_   r`   r;   r“   r%   rc   re   r�   r   r   r   r“   1  s   €zMusic.disconnectZ
nowplayingr4   c                 Ã   s¬   �|   |jj¡}|js| d¡I dH  dS tjdd|jd › d�dd�}|jd|jd	 jd
d� |j	rK|j	j
rKt|j	j
jd ƒ}|jd|› d�d
d� |j|d�I dH  dS )u)   ZobrazÃ­ aktuÃ¡lnÄ› pÅ™ehrÃ¡vanou skladbur|   NrO   rP   r   rQ   rR   rs   rr   TrY   r�   u   ðŸ”Š Hlasitostr‘   r]   )rC   r_   r`   r3   re   r%   rc   rd   rv   ra   r   r’   r   )r   rK   r2   r^   r   r   r   r   Únow_playing=  s   €ýzMusic.now_playingr1   )r+   r,   r-   r   rC   rG   r   Úcommandrj   rb   ry   r   r�   rŒ   rŽ   r�   r’   r   r“   r•   r   r   r   r   r?   R   s4    


5

	
	
	
!



r?   c                 Ã   s   �|   t| ƒ¡I d H  d S r1   )Úadd_cogr?   )r@   r   r   r   ÚsetupS  s   €r˜   )r%   Údiscord.extr   r"   Zyt_dlpÚosÚcollectionsr   Ú
subprocessÚrunZFFMPEG_AVAILABLEÚCalledProcessErrorÚFileNotFoundErrorÚprintZytdl_format_optionsr'   Z	YoutubeDLr   ÚPCMVolumeTransformerr   r0   ÚCogr?   r˜   r   r   r   r   Ú<module>   sH    þôÿ
  