add customizable logging levels
This commit is contained in:
parent
6d62ebfa30
commit
367210ff23
40
main.go
40
main.go
@ -15,6 +15,11 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
LogLevelInfo int = 1
|
||||
LogLevelVerbose int = 2
|
||||
)
|
||||
|
||||
type config struct {
|
||||
youtubeDl string
|
||||
mkvmerge string
|
||||
@ -22,12 +27,19 @@ type config struct {
|
||||
overrideOutput string
|
||||
subsOnly bool
|
||||
deleteTemporaries bool
|
||||
loglevel int
|
||||
}
|
||||
|
||||
func performDownload(ctx context.Context, cfg *config, targetUrl string) error {
|
||||
|
||||
//
|
||||
|
||||
if cfg.loglevel >= LogLevelInfo {
|
||||
fmt.Printf("Starting download for '%s'...\n", targetUrl)
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
var content []byte
|
||||
var err error
|
||||
if targetUrl == "-" {
|
||||
@ -70,16 +82,20 @@ func performDownload(ctx context.Context, cfg *config, targetUrl string) error {
|
||||
|
||||
// Download the video
|
||||
ytdl := exec.CommandContext(ctx, cfg.youtubeDl, `-f`, `bestvideo+bestaudio`, "https://youtu.be/"+ltc.VideoID, `--merge-output-format`, `mkv`, "-o", filepath.Join(tmpdir, "downloaded"))
|
||||
ytdl.Stdout = os.Stdout
|
||||
ytdl.Stderr = os.Stderr
|
||||
if cfg.loglevel >= LogLevelVerbose {
|
||||
ytdl.Stdout = os.Stdout
|
||||
ytdl.Stderr = os.Stderr
|
||||
}
|
||||
err = ytdl.Run()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Determine video's total length
|
||||
minfo := exec.CommandContext(ctx, cfg.mediainfo, `--Inform="General;%Duration%"`, filepath.Join(tmpdir, "downloaded.mkv"))
|
||||
minfo.Stderr = os.Stderr
|
||||
minfo := exec.CommandContext(ctx, cfg.mediainfo, `--Inform=General;%Duration%`, filepath.Join(tmpdir, "downloaded.mkv"))
|
||||
if cfg.loglevel >= LogLevelVerbose {
|
||||
minfo.Stderr = os.Stderr
|
||||
}
|
||||
ret, err := minfo.Output()
|
||||
if err != nil {
|
||||
return err
|
||||
@ -89,6 +105,10 @@ func performDownload(ctx context.Context, cfg *config, targetUrl string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if cfg.loglevel >= LogLevelVerbose {
|
||||
fmt.Printf("Video duration is %d ms\n", msecsDuration)
|
||||
}
|
||||
|
||||
// Create the subtitle file (clamped to total length)
|
||||
|
||||
fh, err := os.OpenFile(filepath.Join(tmpdir, "subtitles.srt"), os.O_CREATE|os.O_WRONLY, 0600)
|
||||
@ -105,8 +125,10 @@ func performDownload(ctx context.Context, cfg *config, targetUrl string) error {
|
||||
// Mux the subtitles into the file
|
||||
|
||||
mkvm := exec.CommandContext(ctx, cfg.mkvmerge, `-o`, filepath.Join(tmpdir, "muxed.mkv"), filepath.Join(tmpdir, "downloaded.mkv"), filepath.Join(tmpdir, "subtitles.srt"))
|
||||
mkvm.Stdout = os.Stdout
|
||||
mkvm.Stderr = os.Stderr
|
||||
if cfg.loglevel >= LogLevelVerbose {
|
||||
mkvm.Stdout = os.Stdout
|
||||
mkvm.Stderr = os.Stderr
|
||||
}
|
||||
err = mkvm.Run()
|
||||
if err != nil {
|
||||
return err
|
||||
@ -137,6 +159,10 @@ func performDownload(ctx context.Context, cfg *config, targetUrl string) error {
|
||||
|
||||
// Done
|
||||
|
||||
if cfg.loglevel >= LogLevelInfo {
|
||||
fmt.Printf("Download complete for '%s'\n", outputFile)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -153,6 +179,7 @@ Options:
|
||||
--output PATH Override output filename
|
||||
(only valid for a single URL)
|
||||
--delete-temporary=false Preserve temporary files
|
||||
--loglevel 0|1|2 Set verbosity (0=silent, 1=normal, 2=verbose)
|
||||
`)
|
||||
os.Exit(1)
|
||||
}
|
||||
@ -168,6 +195,7 @@ func main() {
|
||||
flag.StringVar(&cfg.mediainfo, "mediainfo", "mediainfo", "")
|
||||
flag.StringVar(&cfg.overrideOutput, "output", "", "")
|
||||
flag.BoolVar(&cfg.deleteTemporaries, "delete-temporary", true, "")
|
||||
flag.IntVar(&cfg.loglevel, "loglevel", 1, "")
|
||||
flag.Usage = usage
|
||||
flag.Parse()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user