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'.
|
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
|
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.
|
a different address if you are running it behind a proxy server or similar.
|
||||||
|
|
||||||
## Using
|
## 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
|
## TODO
|
||||||
|
|
||||||
|
37
main.go
37
main.go
@ -39,18 +39,45 @@ var downloadPath = "./"
|
|||||||
|
|
||||||
var address string
|
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"
|
const currentVersion = "v0.02"
|
||||||
|
|
||||||
//go:embed web
|
//go:embed web
|
||||||
var webFS embed.FS
|
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() {
|
func main() {
|
||||||
var port int
|
var port int
|
||||||
flag.IntVar(&port, "port", 6283, "port to listen on")
|
flag.IntVar(&port, "port", 6283, "port to listen on")
|
||||||
flag.StringVar(&address, "address", "http://localhost:6283", "address for the service")
|
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(&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()
|
flag.Parse()
|
||||||
|
|
||||||
|
if len(dlArgs) == 0 {
|
||||||
|
dlArgs = defaultArgs
|
||||||
|
}
|
||||||
|
|
||||||
r := mux.NewRouter()
|
r := mux.NewRouter()
|
||||||
r.HandleFunc("/", HomeHandler)
|
r.HandleFunc("/", HomeHandler)
|
||||||
r.HandleFunc("/fetch", FetchHandler)
|
r.HandleFunc("/fetch", FetchHandler)
|
||||||
@ -164,13 +191,11 @@ func FetchHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func queue(dl *download) {
|
func queue(dl *download) {
|
||||||
|
cmdSlice := []string{}
|
||||||
|
cmdSlice = append(cmdSlice, dlArgs...)
|
||||||
|
cmdSlice = append(cmdSlice, dl.Url)
|
||||||
|
|
||||||
cmd := exec.Command(
|
cmd := exec.Command(dlCmd, cmdSlice...)
|
||||||
"youtube-dl",
|
|
||||||
"--write-info-json",
|
|
||||||
"-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best",
|
|
||||||
"--newline", dl.Url,
|
|
||||||
)
|
|
||||||
cmd.Dir = downloadPath
|
cmd.Dir = downloadPath
|
||||||
|
|
||||||
stdout, err := cmd.StdoutPipe()
|
stdout, err := cmd.StdoutPipe()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user