# gropple

A web service and bookmarklet to download videos with a single click.

![Screencast](/screencast.gif)

## Pre-requisites

* a passing familiarity with the command line
* youtube-dl (plus any of its required dependencies, like ffmpeg)
* golang compiler (if you'd like to build from source)

## Build

    go build

## Binaries

Binaries are available at https://github.com/tardisx/gropple/releases

## Running

    gropple -port 6283 -address http://hostname:6283 -path /downloads

With no arguments, it will listen on port 6283 and use an address of 'http://localhost:6283'.

The address must be specified so that the bookmarklet can refer to the correct
host if it is not running on your local machine. You may also need to specify
a different address if you are running it behind a proxy server or similar.

## Using

Bring up `http://localhost:6283` (or your chosen address) in your browser. You 
should see a link to the bookmarklet at the top of the screen, and the list of
downloads (currently empty).

Drag the bookmarklet to your favourites bar, or otherwise bookmark it as you 
see fit.

Whenever you are on a page with a video you would like to download, simply 
click the bookmarklet.

A popup window will appear, the download will start on the your gropple server 
and the status will be shown in the window.

You may close this window at any time without stopping the download, the status 
of all downloads is available on the index page.

## Using an alternative downloader

The default downloader is youtube-dl. It is possible to use a different downloader 
via the `-dl-cmd` command line option.

While `gropple` will use your `PATH` to find the executable, you may also want 
to specify a full path instead.

So, for instance, to use `youtube-dlc` instead of `youtube-dl` and specify the 
full path:

`gropple -dl-cmd /home/username/bin/youtube-dlc`

Note that this is only the path to the executable. If you need to change the 
command arguments, see below.

## Changing the youtube-dl arguments

The default arguments passed to `youtube-dl` are:

* `--newline` (needed to allow gropple to properly parse the output)
* `--write-info-json` (optional, but provides information on the download in the corresponding .json file)
* `-f` and `bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best` (choose the type of video `youtube-dl` will download)

These are customisable on the command line for `gropple`. For example, to duplicate these default options, you would 
do:

`gropple -dl-args '--newline' -dl-args '--write-info-json' -dl-args '-f' -dl-args 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best`

## TODO

Many things. Please raise an issue after checking the [currently open issues](https://github.com/tardisx/gropple/issues).


