diff --git a/docs/usage/iptv.md b/docs/usage/iptv.md index 82f7bfe8..357a988a 100644 --- a/docs/usage/iptv.md +++ b/docs/usage/iptv.md @@ -33,7 +33,16 @@ JioTV Go offers a convenient M3U playlist endpoint to enhance your IPTV experien ``` This will split the playlist into categories like `Movie - Kannada`, `Movie - Malayalam`, `News - English`, etc. + +4. If you would like to filter only specific languages on M3U playlist, append the `l=Tamil,English,Malayalam` (comma-separated) query parameter: + ``` + http://localhost:5001/playlist.m3u?l=Tamil,English,Bengali + ``` + + This will filter only the specified languages (Tamil, English and Bengali). + + Available Languages to filter `Hindi, Marathi, Punjabi, Urdu, Bengali, English, Malayalam, Tamil, Gujarati, Odia, Telugu, Bhojpuri, Kannada, Assamese, Nepali, French, Other` For both specific quality and split category, append the `q=` and `c=` query parameters: diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index d94ba77b..d9dc9225 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -360,6 +360,7 @@ func RenderTSHandler(c *fiber.Ctx) error { func ChannelsHandler(c *fiber.Ctx) error { quality := strings.TrimSpace(c.Query("q")) isSplitCategory := strings.TrimSpace(c.Query("c")) == "split" + languages := strings.TrimSpace(c.Query("l")) apiResponse := television.Channels() // hostUrl should be request URL like http://localhost:5001 hostURL := strings.ToLower(c.Protocol()) + "://" + c.Hostname() @@ -370,6 +371,11 @@ func ChannelsHandler(c *fiber.Ctx) error { m3uContent := "#EXTM3U x-tvg-url=\"" + hostURL + "/epg.xml.gz\"\n" logoURL := hostURL + "/jtvimage" for _, channel := range apiResponse.Result { + + if languages != "" && !utils.ContainsString(television.LanguageMap[channel.Language], strings.Split(languages, ",")) { + continue + } + var channelURL string if quality != "" { channelURL = fmt.Sprintf("%s/live/%s/%s.m3u8", hostURL, quality, channel.ID) @@ -458,7 +464,8 @@ func FaviconHandler(c *fiber.Ctx) error { func PlaylistHandler(c *fiber.Ctx) error { quality := c.Query("q") isSplitCategory := c.Query("c") - return c.Redirect("/channels?type=m3u&q="+quality+"&c="+isSplitCategory, fiber.StatusMovedPermanently) + languages := c.Query("l") + return c.Redirect("/channels?type=m3u&q="+quality+"&c="+isSplitCategory+"&l="+languages, fiber.StatusMovedPermanently) } // ImageHandler loads image from JioTV server