
    Cg                         d dl mZ d dlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZ d Z e       d        Z e       d        Z e       d        Z e       d	        Zg d
Zy)    )unicode_literals)
basestring   )filter_operator
GlobalNode	InputNodeMergeOutputsNode
OutputNodeoutput_operatorc                     | |d<   |j                  dd      }|rd|v rt        d      ||d<   t        t        j                  |      j                         S )a>  Input file URL (ffmpeg ``-i`` option)

    Any supplied kwargs are passed to ffmpeg verbatim (e.g. ``t=20``,
    ``f='mp4'``, ``acodec='pcm'``, etc.).

    To tell ffmpeg to read from stdin, use ``pipe:`` as the filename.

    Official documentation: `Main options <https://ffmpeg.org/ffmpeg.html#Main-options>`__
    filenamefNformat*Can't specify both `format` and `f` kwargskwargs)pop
ValueErrorr   input__name__stream)r   r   fmts      W/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/ffmpeg/_ffmpeg.pyr   r      sY     "F:
**S$
C
vIJJxU^^F3::<<    c                 T    t        | t        j                  |      j                         S )zCAdd extra global command-line argument(s), e.g. ``-progress``.
    )r   global_argsr   r   )r   argss     r   r   r   #   s"     fk22D9@@BBr   c                 V    t        | t        j                  dg      j                         S )zOverwrite output files without asking (ffmpeg ``-y`` option)

    Official documentation: `Main options <https://ffmpeg.org/ffmpeg.html#Main-options>`__
    z-y)r   overwrite_outputr   r   )r   s    r   r   r   *   s%     f.77$@GGIIr   c                  R    t        | t        j                        j                         S )z9Include all given outputs in one ffmpeg command line
    )r	   merge_outputsr   r   )streamss    r   r!   r!   3   s      G]%;%;<CCEEr   c                  ,   t        |       } d|vr2t        | d   t              st        d      | j	                  d      |d<   | }|j	                  dd      }|rd|v rt        d      ||d<   t        |t        j                  |      j                         S )	a?  Output file URL

    Syntax:
        `ffmpeg.output(stream1[, stream2, stream3...], filename, **ffmpeg_args)`

    Any supplied keyword arguments are passed to ffmpeg verbatim (e.g.
    ``t=20``, ``f='mp4'``, ``acodec='pcm'``, ``vcodec='rawvideo'``,
    etc.).  Some keyword-arguments are handled specially, as shown below.

    Args:
        video_bitrate: parameter for ``-b:v``, e.g. ``video_bitrate=1000``.
        audio_bitrate: parameter for ``-b:a``, e.g. ``audio_bitrate=200``.
        format: alias for ``-f`` parameter, e.g. ``format='mp4'``
            (equivalent to ``f='mp4'``).

    If multiple streams are provided, they are mapped to the same
    output.

    To tell ffmpeg to write to stdout, use ``pipe:`` as the filename.

    Official documentation: `Synopsis <https://ffmpeg.org/ffmpeg.html#Synopsis>`__
    r   zA filename must be providedr   Nr   r   r   )	list
isinstancer   r   r   r
   outputr   r   )streams_and_filenamer   r"   r   s       r   r'   r'   :   s    0   45.r2J?:;;155b9z"G
**S$
C
vIJJxgvv>EEGGr   )r   r!   r'   r   N)
__future__r   past.builtinsr   _utilsnodesr   r   r   r	   r
   r   r   r   r   r!   r'   __all__ r   r   <module>r/      s    ' $  =& C C J J F F #H #HL Cr   