mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-03 19:17:16 -05: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