---
name: "clive"
section: "1p"
platform: "linux"
package: "clive"
version: "2.3.3-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/clive/1p"
---

# clive(1p)

(c)ommand (li)ne (v)ideo (e)xtraction tool

## NAME

clive - (c)ommand (li)ne (v)ideo (e)xtraction tool

## SYNOPSIS

clive \[\<options\>\] \[\<url\> \| \<file\> ...\]

## DESCRIPTION

clive is a command line media extraction tool for YouTube and similar websites that require flash.

### Background

clive originates from a simple shell script that was cooked up to work around the YouTube's flash requirement back in 2006.

### Getting started

*Configuring*

Autodetection

clive will attempt to autodetect the required commands from the `$PATH`, when they have not been defined in either config file or the command line.

Configuration file

See "FILES" for an example configuration file. You may want to consider adding at least the "--quvi" and "--get-with" there.

See also

"TROUBLESHOOTING", "KNOWN ISSUES" and "EXAMPLES".

## OPTIONS

clive expects the URLs to be separated by a newline character when the they are read from either stdin or files.

### --help

Print help and exit.

### --version

Print version and exit.

### --license

Print license and exit.

### -q, --quiet

Turn off all *clive* output excluding errors. Note that this switch has no effect on any of the third party commands that clive invokes.

### -F, --query-formats

Query available formats to an URL. The returned string will contain an array of *format strings*, each separated by the '\|' character. The array is created, by libquvi, from the data returned by the server. You can use these *format strings* with `"--format"`.

See also "EXAMPLES" and `"--format"`.

### -f, --format *arg* (=default)

Download format *arg* of the media. The *arg* can also be `"default"`, `"best"`, `"help"` or `"list"`. Note, however, that of these, the `"list"` and the `"help"` are deprecated and will be removed in the later versions of clive.

The *arg* value is used with all of the URLs fed to clive at runtime. If the *arg* is `"best"`, libquvi will determine the `"best"` format available to an URL.

If the *arg* is `"default"` libquvi attempts to return an URL to whatever was deemed to be the `"default"` format to the URL. libquvi will switch to `"default"` format if the *arg* was unregognized or the requested *arg* format was unavailable.

For the above reasons, the downloaded format may be different from the requested *arg* format.

For details about the YouTube's "fmt" IDs, refer to:\
  http://en.wikipedia.org/wiki/YouTube#Quality\_and\_codecs

See also "EXAMPLES", `"--query-formats"`.

### -O, --output-file *arg*

Write media to *arg*. Overrides `"--filename-format"`.

### -n, --no-download

Do not download the media, print details only.

### --config-file *arg*

Path to a file to read clive arguments from. See also "FILES".

## OPTIONS - CONFIGURATION

The `"configuration"` options may be read from the config file. See "FILES".

### --quvi *arg*

*arg* to be invoked to start the `quvi(1)` command which clive uses to parse the media details. This is typically a full path to `quvi(1)` with any additional options. Overrides any value set by autodetection.

The following specifiers can be used in the *arg*:

```
  %u .. Media stream URL
```

*All* occurences of the specifier will be replaced. clive will automatically append `"--quiet"` to *arg*.

### --get-with *arg*

Path to a download command (e.g. `wget(1)` or `curl(1)`) with any additional arguments. clive invokes this command to download the media.  Overrides any value set by autodetection.

The following specifiers are supported:

```
  %n  Media filename (after applying --regexp and --filename-format)
  %f  Path to downloaded media file (output path and %n)
  %u  Media stream URL
```

*All* occurences of the specifier will be replaced.

### --filename-format *arg* (="%t.%s")

Use *arg* to specify the media output filename format. The following specifiers are supported:

```
  %t  Media title (after applying --regexp)
  %h  Media host ID
  %s  File suffix
  %i  Media ID
```

*All* occurences of the specifier will be replaced.

### --regexp *arg* (="/(\\w\|\\s)/g")

Use regular expression *arg* to clean up the media title before it is used in the filename. The syntax supports both "i" (case-insensitive) and "g" (global or "find all").

### --exec *arg*

Invoke *arg* after media download finishes. The following specifiers are supported:

```
  %f  Path to the downloaded media file
```

*All* occurences of the specifier will be replaced.

## TROUBLESHOOTING

### error: specify path to *quvi*(1) command with --quvi

clive uses `quvi(1)` to parse the media details. Use the `"--quvi"` to specify the path. See also "FILES".

### error: specify path to a download command with --get-with

clive uses a 3rd party command to download the media. Use the `"--get-with"` to specify the path to such command. See also "FILES".

### HTTP/1.0 500 Internal Server Error

Any number of reasons. Some have been tracked back to unacceptable user-agent string value and mangled HTTP headers (e.g. a green-eyed HTTP proxy). See also "KNOWN ISSUES".

## KNOWN ISSUES

### Resuming partially transferred files may fail

Some websites are known to refuse to work with the HTTP requests to resume a file transfer.

*Workaround*

None known. You will have to remove the existing file before you try again.

### HTTP user-agent

Some websites refuse to play nice with renegade user-agent strings.

*Recommendations*

Make sure both `quvi(1)` and `curl(1)` use the same user-agent string. Note that `quvi(1)` uses "Mozilla/5.0" by default. See also "TROUBLESHOOTING" for `"HTTP/500"`.

### HTTP proxy

Generally OK, although some proxies may have been configured to `"cook up"` the HTTP headers before they are sent back to the server. This may sometimes lead to issues with the servers.

*Recommendations*

If you use an HTTP proxy, make sure you have configured all of the commands that clive uses (e.g. `quvi(1)`, `curl(1)`, etc.) to use the same proxy.

### Exit status

If you are planning to use clive for anything more peculiar, consider the following example:

```
  * You feed clive two URLs
  * The 1st one fails, quvi exits with a non-zero value
  * clive proceeds to the 2nd URL, quvi now exits with zero value
  * clive exits with the zero, even if the 1st URL failed
```

*Workaround*

Feed one URL at a time.

## FILES

### Local user

```
  * ~/.config/clive/config
  * ~/.clive/config
  * ~/.cliverc
```

### System wide

```
  * /usr/local/share/clive/config
  * /etc/xdg/clive/clive.conf
  * /usr/share/clive/config
  * /etc/xdg/clive.conf
  * /etc/clive/config
```

### CLIVE\_CONFIG

You can also set CLIVE\_CONFIG, e.g.:

```
  env CLIVE_CONFIG=/path/to/config/file clive
```

### --config-file

Or use `"--config-file"`, e.g.:

```
  clive --config-file /path/to/config/file
```

### Example config

A typical configuration file could look like:

```
  --get-with "/usr/bin/curl -L -C - -o %f %u --user-agent Mozilla/5.0"
  --quvi "/usr/bin/quvi --category-http %u"
  --filename-format "%t_%i.%s"
  --exec "/usr/bin/vlc %f"
```

## EXAMPLES

### Note

Put the URLs inside quotes when they are specified as the command line arguments to the program. This is the recommended practice.

### clive "URL"

Typical use.

### clive -f best "URL"

Download the best available format of the media.

### clive -F "URL"

Query available formats to the URL. Use one of the returned format strings from this list with `"--format"`.

### clive -n "URL"

Do not download the media, print the details only.

## EXIT STATUS

clive exits with 0 on success, otherwise the code is \>0. For example, if command line parsing fails, the exit status is 1.

When an error occurs in another command invoked by clive, e.g. `quvi(1)`, clive then exits with the exit status returned by that command.

See also "KNOWN ISSUES" for "Exit status".

## SEE ALSO

`quvi(1)`  `curl(1)`

## WWW

```
 Home  : http://clive.sourceforge.net/
 gitweb: http://repo.or.cz/w/clive.git
```

## LICENSE

clive is free software, licensed under the GPLv3+.

## AUTHOR

Toni Gundogdu \<legatvs at sign gmail com\>

Thanks to all those who have contributed to the project by sending patches, reporting bugs and writing feedback. You know who you are.
