mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 04:02:00 -06:00
Updated context usage and description
This commit is contained in:
parent
d5fc8824cf
commit
8544a49cab
1 changed files with 17 additions and 3 deletions
|
|
@ -30,6 +30,12 @@ type Downloader struct {
|
||||||
// cancel Context
|
// cancel Context
|
||||||
DeleteTempAfter bool
|
DeleteTempAfter bool
|
||||||
|
|
||||||
|
// Context to control the download process with.
|
||||||
|
// There is a tiny delay when canceling the context and the actual stop of the
|
||||||
|
// process. So it is not recommend stopping the program immediately after calling
|
||||||
|
// the cancel function. It's better when canceling it and then exit the program
|
||||||
|
// when Format.Download throws an error. See the signal handling section in
|
||||||
|
// cmd/crunchyroll-go/cmd/download.go for an example
|
||||||
Context context.Context
|
Context context.Context
|
||||||
|
|
||||||
// Goroutines is the number of goroutines to download segments with
|
// Goroutines is the number of goroutines to download segments with
|
||||||
|
|
@ -42,14 +48,16 @@ type Downloader struct {
|
||||||
FFmpeg bool
|
FFmpeg bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDownloader(filename string, goroutines int, onSegmentDownload func(segment *m3u8.MediaSegment, current, total int, file *os.File) error) Downloader {
|
// NewDownloader creates a downloader with default settings which should
|
||||||
|
// fit the most needs
|
||||||
|
func NewDownloader(context context.Context, filename string, goroutines int, onSegmentDownload func(segment *m3u8.MediaSegment, current, total int, file *os.File) error) Downloader {
|
||||||
tmp, _ := os.MkdirTemp("", "crunchy_")
|
tmp, _ := os.MkdirTemp("", "crunchy_")
|
||||||
|
|
||||||
return Downloader{
|
return Downloader{
|
||||||
Filename: filename,
|
Filename: filename,
|
||||||
TempDir: tmp,
|
TempDir: tmp,
|
||||||
DeleteTempAfter: true,
|
DeleteTempAfter: true,
|
||||||
Context: context.Background(),
|
Context: context,
|
||||||
Goroutines: goroutines,
|
Goroutines: goroutines,
|
||||||
OnSegmentDownload: onSegmentDownload,
|
OnSegmentDownload: onSegmentDownload,
|
||||||
}
|
}
|
||||||
|
|
@ -65,7 +73,13 @@ func NewDownloader(filename string, goroutines int, onSegmentDownload func(segme
|
||||||
// And this function just downloads each of this segment into the given directory.
|
// And this function just downloads each of this segment into the given directory.
|
||||||
// See https://en.wikipedia.org/wiki/MPEG_transport_stream for more information
|
// See https://en.wikipedia.org/wiki/MPEG_transport_stream for more information
|
||||||
func download(context context.Context, format *Format, tempDir string, goroutines int, onSegmentDownload func(segment *m3u8.MediaSegment, current, total int, file *os.File) error) error {
|
func download(context context.Context, format *Format, tempDir string, goroutines int, onSegmentDownload func(segment *m3u8.MediaSegment, current, total int, file *os.File) error) error {
|
||||||
resp, err := format.crunchy.Client.Get(format.Video.URI)
|
req, err := http.NewRequest(http.MethodGet, format.Video.URI, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
req.WithContext(context)
|
||||||
|
|
||||||
|
resp, err := format.crunchy.Client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue