mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-01 04:34:50 -04:00
Add a new offline route
This commit is contained in:
parent
523406f269
commit
c0f6b5a85f
@ -28,6 +28,33 @@ func DirectStream(c echo.Context) error {
|
|||||||
return c.File(path)
|
return c.File(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Download item
|
||||||
|
//
|
||||||
|
// Transcode the video/audio to the selected quality for offline use.
|
||||||
|
// This route will be slow and stream an incomplete file, this is not meant to be used while
|
||||||
|
// streaming.
|
||||||
|
//
|
||||||
|
// Path: /:resource/:slug/offline?quality=:quality
|
||||||
|
func (h *Handler) GetOffline(c echo.Context) error {
|
||||||
|
resource := c.Param("resource")
|
||||||
|
slug := c.Param("slug")
|
||||||
|
quality, err := src.QualityFromString(c.QueryParam("quality"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
path, err := GetPath(resource, slug)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ret, err := h.downloader.GetOffline(path, quality)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.String(http.StatusOK, ret)
|
||||||
|
}
|
||||||
|
|
||||||
// Get master playlist
|
// Get master playlist
|
||||||
//
|
//
|
||||||
// Get a master playlist containing all possible video qualities and audios available for this resource.
|
// Get a master playlist containing all possible video qualities and audios available for this resource.
|
||||||
@ -265,6 +292,7 @@ func (h *Handler) GetSubtitle(c echo.Context) error {
|
|||||||
type Handler struct {
|
type Handler struct {
|
||||||
transcoder *src.Transcoder
|
transcoder *src.Transcoder
|
||||||
extractor *src.Extractor
|
extractor *src.Extractor
|
||||||
|
downloader *src.Downloader
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -277,9 +305,14 @@ func main() {
|
|||||||
e.Logger.Fatal(err)
|
e.Logger.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
h := Handler{transcoder: transcoder, extractor: src.NewExtractor()}
|
h := Handler{
|
||||||
|
transcoder: transcoder,
|
||||||
|
extractor: src.NewExtractor(),
|
||||||
|
downloader: src.NewDownloader(),
|
||||||
|
}
|
||||||
|
|
||||||
e.GET("/:resource/:slug/direct", DirectStream)
|
e.GET("/:resource/:slug/direct", DirectStream)
|
||||||
|
e.GET("/:resource/:slug/offline", h.GetOffline)
|
||||||
e.GET("/:resource/:slug/master.m3u8", h.GetMaster)
|
e.GET("/:resource/:slug/master.m3u8", h.GetMaster)
|
||||||
e.GET("/:resource/:slug/:quality/index.m3u8", h.GetVideoIndex)
|
e.GET("/:resource/:slug/:quality/index.m3u8", h.GetVideoIndex)
|
||||||
e.GET("/:resource/:slug/audio/:audio/index.m3u8", h.GetAudioIndex)
|
e.GET("/:resource/:slug/audio/:audio/index.m3u8", h.GetAudioIndex)
|
||||||
|
11
transcoder/src/downloader.go
Normal file
11
transcoder/src/downloader.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package src
|
||||||
|
|
||||||
|
type Downloader struct{}
|
||||||
|
|
||||||
|
func NewDownloader() *Downloader {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *Downloader) GetOffline(path string, quality Quality) (string, error) {
|
||||||
|
return "", nil
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user