A frontend to youtube-dl (or compatible forks, like yt-dlp) to download videos with a single click, straight from your web browser.
go build
Binaries are available at https://github.com/tardisx/gropple/releases for most platforms.
./gropple
There are no command line arguments. All configuration is done via the web interface. The address will be printed after startup:
2023/11/22 22:42:06 Starting gropple v1.0.0 - https://github.com/tardisx/gropple
2023/11/22 22:42:07 Configuration loaded from /Users/username/path/config.yml
2023/11/22 22:42:07 Visit http://localhost:6123 for details on installing the bookmarklet and to check status
Copy the docker-compose.yml
to a directory somewhere.
Edit the two volume
entries to point to local paths where you would like to
store the config file, and the downloads (the path on the left hand side of the
colon).
Run docker-compose up -d
to start the program.
Note that the docker images include yt-dlp
and ffmpeg
and are thus
completely self-contained.
Run docker-compose logs
to see the output of the program, if you are having
problems.
Bring up http://localhost:6283
(or the appropriate host if you are running it
on a different machine) 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. Any kind of browser bookmark should work. The bookmarklet contains embedded javascript to pass the URL of whatever page you are currently on back to gropple.
Whenever you are on a page with a video you would like to download just click the bookmarklet.
A popup window will appear. Choose a download profile and the download will start. The status will be shown in the window, updating in real time.
There is also an optional "download option" you can choose. These are discussed below.
You may close this window at any time without stopping the download, the status of all downloads is available on the index page. Clicking on the id number will show the popup again.
Click the "config" link on the index page to configure gropple.
The options in each part are dicussed below.
You can configure the port number here if you do not want the default of 6123
.
If you are running it on a machine other than localhost
you will need to set
the "server address" to ensure the bookmarklet has the correct URL in it.
Similarly, if you are running it behind a reverse proxy, the address here must
match what you would type in the browser so that the bookmarklet will work
correctly.
The download path specifies where downloads will end up, if no specific -o
options are passed to yt-dlp
.
Gropple will limit the number of downloads per domain to this number. Increasing this will likely result in failed downloads when server rate limiters notice you.
Changes the size of the popup window.
Gropple's default configuration uses yt-dlp
and has two profiles set up, one
for downloading video, the other for downloading audio (mp3).
Each download profile consists of a name (for your reference), a command to run, and a number of arguments.
Note that gropple does not include any downloaders, you have to install them separately (unless using the docker image).
If you would like to use a youtube-dl compatible fork or change the options you can do so here. Create as many profiles as you wish, whenever you start a download you can choose the appropriate profile.
Note that the command arguments must each be specified separately - see the
default configuration. For example, if you have a single argument like
--audio-format mp3
, it will be parsed by the yt-dlp
as a single, long
unknown argument, and will fail. This needs to be configured as two arguments,
--audio-format
and mp3
.
While gropple will use your PATH
to find the executable, you can also specify
a full path instead. Note that any tools that the downloader calls itself (for
instance, ffmpeg
) will need to be available on your path.
There are also an arbitrary amount of Download Options you can configure. Each one specifies one or more extra arguments to add to the downloader command line. The most common use for this is to have customised download paths. For instance, sometimes you might want to bundle all files into a single directory, other times you might want to separate files by download playlist URL or similar.
Most of this is done directly through appropriate options for yt-dlp
, see the
output template
documentation.
However, gropple offers two extra substitutions:
%GROPPLE_HOST%
%GROPPLE_PATH%
These will be replaced with the hostname, and path of the download, respectively.
So, a playlist URL https://www.youtube.com/@UsernameHere
With a download option setup like this:
* Name of Option: Split by Host and Path
* Arguments:
* -o
* /Downloads/%GROPPLE_HOST%/%GROPPLE_PATH%/%(title)s [%(id)s].%(ext)s
Will result in downloads going into the path
/Downloads/www.youtube.com/@UsernameHere/...
.
Note that this also means that yt-dlp
can resume partially downloaded files, and
also automatically 'backfill', downloading only files that have not been
downloaded yet from that playlist.
From main index page you can click the "Bulk" link in the menu to bring up the bulk queue page.
In all respects this acts the same as the usual bookmarklet, but it has a textbox for pasting many URLs at once. All downloads will be queued immediately.
If you'd like to use gropple from a USB stick or similar, copy the config file
from its default location (shown when you start gropple) to the same location as
the binary, and rename it to gropple.yml
.
Many download problems are diagnosable via the log - check in the popup window
and scroll the log down to the bottom. The most common problem is that yt-dlp
cannot be found, or its dependency (like ffmpeg
) cannot be found on your path.
Gropple only calls external tools like yt-dlp
to do the downloading. If you
are having problems downloading from a site, make sure that yt-dlp
is updated
to the latest version (yd-dlp -U
).
For other problems, please file an issue on github.
Many things. Please raise an issue after checking the currently open issues.