o
    *ήc                     @   s   d dl mZ ddlmZ ddlmZ G dd deZG dd deZG d	d
 d
eZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZdS )    )absolute_import   )Type)IsoBmffc                       0   e Zd ZdZdZdZ fddZdd Z  ZS )Mp4z0
    Implements the MP4 video type matcher.
    z	video/mp4mp4c                       t t| jtjtjd d S N)mime	extension)superr   __init__MIME	EXTENSIONself	__class__ ;/tmp/pip-target-vg8gfxp4/lib/python/filetype/types/video.pyr         

zMp4.__init__c                 C   s>   |  |sdS | |\}}}|D ]	}|dv r dS q|dv S )NF)mp41mp42isomT_is_isobmff	_get_ftyp)r   bufmajor_brandminor_versioncompatible_brandsbrandr   r   r   match   s   
z	Mp4.match	__name__
__module____qualname____doc__r   r   r   r#   __classcell__r   r   r   r   r   	       r   c                       r   )M4vz0
    Implements the M4V video type matcher.
    zvideo/x-m4vm4vc                    r	   r
   )r   r+   r   r   r   r   r   r   r   r   (   r   zM4v.__init__c                 C   s   t |dkoG|d dkoG|d dkoG|d dkoG|d dkoG|d dkoG|d	 d
koG|d dkoG|d dkoG|d dkoG|d dkoG|d dkS )N
   r   r               f      t      y      p      M   	   4   V   lenr   r   r   r   r   r#   .   s.   










z	M4v.matchr$   r   r   r   r   r+   !   r*   r+   c                       r   )Mkvz0
    Implements the MKV video type matcher.
    zvideo/x-matroskamkvc                    r	   r
   )r   rA   r   r   r   r   r   r   r   r   ?   r   zMkv.__init__c                 C       | d}|ddk}|o|S )N   Eߣs   Bmatroska
startswithfindr   r   contains_ebml_elementcontains_doctype_elementr   r   r   r#   E      
z	Mkv.matchr$   r   r   r   r   rA   8   r*   rA   c                       r   )Webmz1
    Implements the WebM video type matcher.
    z
video/webmwebmc                    r	   r
   )r   rM   r   r   r   r   r   r   r   r   R   r   zWebm.__init__c                 C   rC   )NrD   s   BwebmrE   rF   rI   r   r   r   r#   X   rL   z
Webm.matchr$   r   r   r   r   rM   K   r*   rM   c                       r   )Movz0
    Implements the MOV video type matcher.
    zvideo/quicktimemovc                    r	   r
   )r   rO   r   r   r   r   r   r   r   r   e   r   zMov.__init__c                 C   s&   |  |sdS | |\}}}|dkS )NFzqt  r   )r   r   r   r    r!   r   r   r   r#   k   s   
z	Mov.matchr$   r   r   r   r   rO   ^   r*   rO   c                       r   )Aviz0
    Implements the AVI video type matcher.
    zvideo/x-msvideoavic                    r	   r
   )r   rQ   r   r   r   r   r   r   r   r   z   r   zAvi.__init__c                 C   sl   t |dko5|d dko5|d dko5|d dko5|d dko5|d	 d
ko5|d dko5|d dko5|d dkS )N   r   R   r   I   r.   F   r/   r9   A   r;   r=   r-       r>   r@   r   r   r   r#      s"   







z	Avi.matchr$   r   r   r   r   rQ   s   r*   rQ   c                       r   )Wmvz0
    Implements the WMV video type matcher.
    zvideo/x-ms-wmvwmvc                    r	   r
   )r   rY   r   r   r   r   r   r   r   r      r   zWmv.__init__c                 C   s   t |dkoA|d dkoA|d dkoA|d dkoA|d d	koA|d
 dkoA|d dkoA|d dkoA|d dkoA|d dkoA|d dkS )Nr;   r   0   r   &   r.      r/   u   r1      r3   r2   r5      r7      r9         r>   r@   r   r   r   r#      s*   








	

z	Wmv.matchr$   r   r   r   r   rY      r*   rY   c                       r   )Flvz0
    Implements the FLV video type matcher.
    zvideo/x-flvflvc                    r	   r
   )r   rd   r   r   r   r   r   r   r   r      r   zFlv.__init__c                 C   s<   t |dko|d dko|d dko|d dko|d dkS )Nr/   r   rV   r   L   r.   r=   r>   r@   r   r   r   r#      s   



z	Flv.matchr$   r   r   r   r   rd      r*   rd   c                       r   )Mpegz1
    Implements the MPEG video type matcher.
    z
video/mpegmpgc                    r	   r
   )r   rg   r   r   r   r   r   r   r   r      r   zMpeg.__init__c                 C   sH   t |dko#|d dko#|d dko#|d dko#|d dko#|d dkS )Nr/   r   r   r.         r>   r@   r   r   r   r#      s   




z
Mpeg.matchr$   r   r   r   r   rg      r*   rg   c                       r   )M3gpz&Implements the 3gp image type matcher.z
video/3gpp3gpc                    r	   r
   )r   rk   r   r   r   r   r   r   r   r      r   zM3gp.__init__c                 C   s   |d d t g dkS )Nr7   )r2   r4   r6   r8   3   g   r8   )	bytearrayr@   r   r   r   r#      s   z
M3gp.matchr$   r   r   r   r   rk      s    rk   N)
__future__r   baser   isobmffr   r   r+   rA   rM   rO   rQ   rY   rd   rg   rk   r   r   r   r   <module>   s   