Add an option to use a youtube-dl fork, and change the command line arguments.
This commit is contained in:
parent
c039c3e585
commit
3eaf1b921d
47
README.md
47
README.md
@ -25,20 +25,55 @@ Binaries are available at https://github.com/tardisx/gropple/releases
|
||||
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 when it is not running on your local machine. You may also need to specify
|
||||
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).
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.o
|
||||
|
||||
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
|
||||
|
||||
|
37
main.go
37
main.go
@ -39,18 +39,45 @@ var downloadPath = "./"
|
||||
|
||||
var address string
|
||||
|
||||
var dlCmd = "youtube-dl"
|
||||
|
||||
type args []string
|
||||
|
||||
var dlArgs = args{}
|
||||
var defaultArgs = args{
|
||||
"--write-info-json",
|
||||
"-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best",
|
||||
"--newline",
|
||||
}
|
||||
|
||||
const currentVersion = "v0.02"
|
||||
|
||||
//go:embed web
|
||||
var webFS embed.FS
|
||||
|
||||
func (i *args) Set(value string) error {
|
||||
*i = append(*i, strings.TrimSpace(value))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (i *args) String() string {
|
||||
return fmt.Sprintf("%v", i)
|
||||
}
|
||||
|
||||
func main() {
|
||||
var port int
|
||||
flag.IntVar(&port, "port", 6283, "port to listen on")
|
||||
flag.StringVar(&address, "address", "http://localhost:6283", "address for the service")
|
||||
flag.StringVar(&downloadPath, "path", "", "path for downloaded files - defaults to current directory")
|
||||
flag.StringVar(&dlCmd, "dl-cmd", "youtube-dl", "downloader to use")
|
||||
flag.Var(&dlArgs, "dl-args", "arguments to the downloader")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if len(dlArgs) == 0 {
|
||||
dlArgs = defaultArgs
|
||||
}
|
||||
|
||||
r := mux.NewRouter()
|
||||
r.HandleFunc("/", HomeHandler)
|
||||
r.HandleFunc("/fetch", FetchHandler)
|
||||
@ -164,13 +191,11 @@ func FetchHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func queue(dl *download) {
|
||||
cmdSlice := []string{}
|
||||
cmdSlice = append(cmdSlice, dlArgs...)
|
||||
cmdSlice = append(cmdSlice, dl.Url)
|
||||
|
||||
cmd := exec.Command(
|
||||
"youtube-dl",
|
||||
"--write-info-json",
|
||||
"-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best",
|
||||
"--newline", dl.Url,
|
||||
)
|
||||
cmd := exec.Command(dlCmd, cmdSlice...)
|
||||
cmd.Dir = downloadPath
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
|
Loading…
x
Reference in New Issue
Block a user