Man Linux: Main Page and Category List

NAME

       cclive - command line video download tool

SYNOPSIS

       cclive [options] [url...]

DESCRIPTION

       cclive is a command line video download tool for Youtube and similar
       websites.  It is a rewrite of the clive software in C++.

OPTIONS

       -h, --help
           Print help and exit.

       -v, --version
           Print version and exit.

       --hosts
           Print supported hosts and exit.

       --background
           Go to background immediately after startup. Output will be written
           to cclive.log unless --logfile is used.

       Output

       -q, --quiet
           Turn off all output.

       --debug
           Turn on libcurl verbose mode.

       --emit-csv
           Print video details in CSV format and exit. Prepends "csv:" for
           each video.  Ignores "--quiet" for CSV.

       --print-fname
           Print filename on a separate line before each download starts.
           Prepends "file:" for each video.

       -o, --logfile=file
           Write output to file while in the background. Defaults to
           cclive.log.

       -i, --logfile-interval=seconds
           Update logfile every seconds while in the background. Defines how
           frequently the download progress information is written to the log.
           Defaults to 10.

       HTTP

       --agent=agentstring
           Identify cclive as agentstring to the HTTP servers.

       --proxy=proxyhost[:port]
           Use the specified HTTP proxy. Overrides http_proxy definition.

       --no-proxy
           Do not use HTTP proxy, even if http_proxy environment variable is
           defined.

       --connect-timeout=seconds
           Maximum time in seconds allowed for connection to take.  Defaults
           to 30.

       --connect-timeout-socks=seconds
           Otherwise identical to the above option but works around the known
           "SOCKS proxy connect timeout" bug in libcurl. Defaults to 30.

       -t, --retry=number
           number of retries. Specify 0 for infinite. Default is 5 times, with
           the exception of errors such as "forbidden" (403) or "not found"
           (404).

       --retry-wait=seconds
           Wait 1..seconds between the retries. Default is 1.

       Download

       -O, --output-video=file
           Write the video to file. Overrides "--filename-format".

       -c, --continue
           Resume a partially downloaded video file. Affects the file
           transfers prior to this invocation of cclive. You do not need to
           specify this option if you want the current invocation of cclive to
           retry downloading should the connection be lost midway through.
           This is the default behaviour.

       -W, --overwrite
           Overwrite the existing file. Negates "--continue".

       -n, --no-extract
           Do not actually extract any videos, simulate only. cclive parses,
           verifies the video link and exits without downloading it.

       l, --limit-rate=amount
           Limit download speed to amount (KB/s). Ignored for video page
           fetches.

       -f, --format=formatid
           Download formatid of the video. If set to "best", cclive attempts
           to download the best quality of the video. See also "FORMATS".

       -M, --format-map=hostid:formatid|hostid:formatid...
           Like "--format" but allows specifying the format for multiple
           hosts.  Note that "--format" setting overrides this setting. See
           also "EXAMPLES".

       Filename formatting

       -N, --number-videos
           Prepend a numeric prefix (e.g. "001_") to the output filenames.

       -r, --regexp=regexp
           Regular expression used to clean up video titles before they are
           used for output filenames. Supports (and mimics) Perl’s /g (global,
           find all) and /i (case-insensitive). See also "EXAMPLES".

       -S, --substitute=regexps
           Mimics Perl’s s/old/new/(gi) substitution. This option can be used
           to replace occurences in output filenames. Supports /g (global,
           find all occurences) and /i (case-insensitive).

           Use of multiple regular expressions is also supported. You can
           separate each with with a whitespace. The number of regular
           expressions is currently unlimited.

           See also "EXAMPLES".

       -F, --filename-format=formatstring
           Use the specified formatstring to format the output filenames.
           cclive defaults to "%h_%i.%s". Any of the following specifiers
           appearing in the format string will be replaced accordingly:

             %t = video title
             %i = video id
             %h = website id
             %s = file suffix

           See also "EXAMPLES".

       Subsequent

       --exec=expression;
           Execute expression after each file transfer. Optional arguments may
           be passed to the command. The expression must be terminated by a
           semicolon (";").

           If the specifier "%i" appears anywhere in expression it will be
           replaced with the pathname of the extracted video file.

       --exec=expression+
           Same as "--exec", except that "%i" will be replaced with as many
           pathnames as possible for the invocation of expression.

       -e, --exec-run
           Invokes the expression specified with "--exec" when download
           finishes.

       Streaming

       --stream-exec=expression
           Expression to be invoked with "--stream" and "--stream-pass".

           If a "%i" specifier is used in the expression, it will be replaced
           with either the video pathname ("--stream") or the parsed video
           link ("--stream-pass").

       -s, --stream-pass
           In addition to the "%i" specifier, if the specifier "%f" appears
           anywhere in "--stream-exec" expression it will be replaced with the
           pathname of the extracted video file.

           See also "EXAMPLES". This feature is based on clive wrapper script
           contributed by Bill Squire.

EXAMPLES

       cclive URL
           Download video from URL.

       cclive -f best Youtube_URL
           Download best available format from Youtube_URL.

       cclive -F "%t.%s" URL
           Use video titles in filenames. cclive uses "%i_%h.%s" by default.
           Note that cclive will apply --regexp pattern, if any, to the title
           before using it. For the supported specifiers, see the
           "--filename-format" description.

       cclive -F "%t.%s" -r "/(\w+)/" URL
           Match a string of "word" character from the video title and use it
           in the filename replacing the "%t" specifier. cclive replaces the
           "%s" specifier with appropriate file suffix string (e.g. "flv").

       cclive -F "%t.%s" -r "/(\w|\s)/g" URL
           Match all "word" and "whitespace" characters, and use them in the
           filename replacing the "%t". Note the use of "/g" (global, find
           all).

       cclive -S "s/old/new/i" URL
           Replace all occurences of "old" with "new" in the output filename.
           Note the use of "i" (case-insensitive).

       cclive -S "s/old/new/i s/:/_/g" URL
           Same but replaces also ’:’ with ’_’. Note the use of "g" (global,
           find all) and the use of a whitespace to separate the used regular
           expressions.

       cclive --exec="mplayer -really-quiet %i;" -e URL
           Play the downloaded video with mplayer(1) when download finishes.

       cclive --exec="ffmpeg -i %i -acodec libvorbis %i.ogg;" -e URL
           Similar but re-encode audio from the downloaded video to a vorbis
           audio file, using ffmpeg(1).

       echo ’stream-exec = "mplayer -really-quiet %i"’ >> ~/.ccliverc
           Adds "--stream-exec" to the config file for permanent use. Saves
           typing as shown below:

       cclive -s URL
           Stream and play the video from the URL using mplayer(1), as defined
           with "--stream-exec" above.

           Note that cclive itself does not stream or play the media, it only
           parses and passes the video link to mplayer(1).

           You can use the above as an alternative to the Adobe flash player
           if you cannot view the streamed videos otherwise, or if you want to
           play them in an external player while streaming.

           The above should work with other player software, like vlc(1) and
           totem(1).

       cclive -s URL --stream-exec="wget %i -O %f"
           Use wget(1) to download the video. Note the use of the "%f"
           specifier which is unique to "--pass-stream, -s".

       cat > url.lst
             http://en.sevenload.com/videos/IUL3gda-Funny-Football-Clips
             http://youtube.com/watch?v=3HD220e0bx4
             http://break.com/index/beach-tackle-whip-lash.html
             http://www.liveleak.com/view?i=704_1228511265

           Create a file that will contain multiple URLs, each separated with
           a newline.  We can use the created file with cclive as shown below:

       cclive < url.lst
           Or:

       cat url.lst | cclive
           This may save you some typing, as you would normally have to type
           each URL to the command line as an argument.

       echo ’format-map = "youtube:best|dailymotion:hq"’ >> ~/.ccliverc
           Save "--format-map" to config file for permanent use.

       cclive Youtube_URL Dailymotion_URL
           Would set --format=best for Youtube_URL and --format=hq for
           Dailymotion_URL.  Note that the use of "--format" overrides
           --format-map setting.

FORMATS

       cclive uses libquvi <http://quvi.googlecode.com> to parse the video
       download links. You can get a complete list of the supported formats
       with the "--hosts" option.

       If you have any additional info regarding the formats, report them to
       the quvi project (see above link) as this is strictly quvi territory.

FILES

       $HOME/.ccliverc
           Most of the program options can be specified in the $HOME/.ccliverc
           config file. For example:

            agent      = JBond/1.0       # --agent
            proxy      = http://foo:1234 # --proxy
            limit-rate = 50              # --limit-rate
            no-extract                   # --no-extract

           You can also use $CCLIVE_HOME instead of $HOME.

UNICODE

       If you are seeing mangled characters in output filenames (titles), this
       may be because of an invalid locale setting or a sign of terminal
       incapable of displaying unicode characters. On a typical Unix-like
       system, try running "locale -a" to get a list of the available locale
       names.

       For example, in bash and urxvt terms:

         % LANG=en_US.UTF8 urxvt&
         % cclive ... # in new terminal

       cclive (libquvi) converts the characters to unicode if the video HTML
       specifies the charset meta tag. Otherwise the characters are copied as
       they are.

       If you are missing the unicode characters when using "--regexp" and
       "--filename-format", make sure the regular expression includes "\pL".
       For example:

         % cclive -F "%t.%s" -r "/(\w|\s|\pL)/g" URL

       "In UTF-8 mode, characters with values greater than 128 never match \d,
       \s, or \w, and always match \D, \S, and \W. This is true even when Uni-
       code character property support is available. These sequences retain
       their original meanings from before UTF-8 support was available, mainly
       for efficiency reasons. Note that this also affects \b, because it is
       defined in terms of \w and \W." -- man pcrepattern

BUGS

       Report them at <http://cclive.googlecode.com/>. Please see if the issue
       has already been reported (or closed) before you submit another. You
       can use the issue tracker’s search feature for this, just be sure to
       search "All issues".

       If your bug report contains an error message starting with "error:
       libquvi:", report the bug to the quvi tracker instead
       (<http://quvi.googlecode.com/>).

       You can use the issue trackers for submitting your patches.

DEBUGGING

       The following lists some of the cclive options that may be useful while
       debugging. Other tools, like strace(1), gdb(1) and valgrind(1) may also
       prove helpful.

       cclive --debug URL
           Enable libcurl verbose mode.

       cclive -n URL
           Simulate only. Fetch, parse but skip get.

       $prefix/share/quvi/lua/README
       $prefix/share/quvi/lua/website/README
           cclive relies on libquvi for parsing the video download links.  If
           the parsing ever breaks, the above two files cover some of the
           essential details.

           The latter directory also contains the website specific Lua scripts
           that libquvi calls to parse the video links.

       $prefix/share/doc/quvi
           The above directory contains quvi related HOWTOs which may also
           prove helpful reading for those interested in cclive.  The
           guidelines that the HOWTOs list are also followed in this project.

EXIT STATUS

       cclive exits 0 on success, and >0 if an error occurs.

         CCLIVE_OK           = 0
         CCLIVE_OPT          = 1  // cmdline option parsing error
         CCLIVE_OPTARG       = 2  // cmdline option arg error
         CCLIVE_CURLINIT     = 3  // curl init error (unused since 0.6.0+)
         CCLIVE_NOTHINGTODO  = 4  // file already retrieved
         CCLIVE_SYSTEM       = 5  // system call failed
         CCLIVE_NOSUPPORT    = 6  // host not supported
         CCLIVE_NET          = 7  // network error
         CCLIVE_FETCH        = 8  // fetch error
         CCLIVE_PARSE        = 9  // parse error
         CCLIVE_INTERNAL     = 10 // internal error (see return code)

OTHER

       Project page:
           <http://cclive.googlecode.com/>

AUTHOR

       Toni Gundogdu <legatvs@gmail.com>.