From 58cf1ad47d5687046e464bc4447e7410946da87a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Faure?= Date: Mon, 29 Mar 2021 10:48:46 +0200 Subject: [PATCH] Add timeshift support (#60) --- pkg/server/routes.go | 1 + pkg/server/xtreamHandles.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/pkg/server/routes.go b/pkg/server/routes.go index d5a0b81..8ce6b4b 100644 --- a/pkg/server/routes.go +++ b/pkg/server/routes.go @@ -55,6 +55,7 @@ func (c *Config) xtreamRoutes(r *gin.RouterGroup) { r.GET("/xmltv.php", c.authenticate, c.xtreamXMLTV) r.GET(fmt.Sprintf("/%s/%s/:id", c.User, c.Password), c.xtreamStreamHandler) r.GET(fmt.Sprintf("/live/%s/%s/:id", c.User, c.Password), c.xtreamStreamLive) + r.GET(fmt.Sprintf("/timeshift/%s/%s/:duration/:start/:id", c.User, c.Password), c.xtreamStreamTimeshift) r.GET(fmt.Sprintf("/movie/%s/%s/:id", c.User, c.Password), c.xtreamStreamMovie) r.GET(fmt.Sprintf("/series/%s/%s/:id", c.User, c.Password), c.xtreamStreamSeries) r.GET(fmt.Sprintf("/hlsr/:token/%s/%s/:channel/:hash/:chunk", c.User, c.Password), c.xtreamHlsrStream) diff --git a/pkg/server/xtreamHandles.go b/pkg/server/xtreamHandles.go index 8548531..b455330 100644 --- a/pkg/server/xtreamHandles.go +++ b/pkg/server/xtreamHandles.go @@ -220,6 +220,19 @@ func (c *Config) xtreamStreamLive(ctx *gin.Context) { c.xtreamStream(ctx, rpURL) } +func (c *Config) xtreamStreamTimeshift(ctx *gin.Context) { + duration := ctx.Param("duration") + start := ctx.Param("start") + id := ctx.Param("id") + rpURL, err := url.Parse(fmt.Sprintf("%s/timeshift/%s/%s/%s/%s/%s", c.XtreamBaseURL, c.XtreamUser, c.XtreamPassword, duration, start, id)) + if err != nil { + ctx.AbortWithError(http.StatusInternalServerError, err) // nolint: errcheck + return + } + + c.stream(ctx, rpURL) +} + func (c *Config) xtreamStreamMovie(ctx *gin.Context) { id := ctx.Param("id") rpURL, err := url.Parse(fmt.Sprintf("%s/movie/%s/%s/%s", c.XtreamBaseURL, c.XtreamUser, c.XtreamPassword, id))