增加huya、douyu的m3u列表实时获取

pull/37/head
肥羊 3 years ago
parent 2817f1e029
commit de471f33ed
  1. 48
      Golang/list/douyuyqk.go
  2. 43
      Golang/list/huyayqk.go
  3. 63
      Golang/main.go

@ -0,0 +1,48 @@
// Package list
// @Time:2023/06/02 10:00
// @File:mian.go
// @SoftWare:Goland
// @Author:feiyang
// @Contact:TG@feiyangdigital
package list
import (
"io"
"net/http"
)
type DouYuYqk struct {
}
type DouYuResponse struct {
Data struct {
Pgcnt int `json:"pgcnt"`
Rl []struct {
Av string `json:"av"`
C2name string `json:"c2name"`
Nn string `json:"nn"`
Rid int `json:"rid"`
} `json:"rl"`
} `json:"data"`
}
func (dy *DouYuYqk) Douyuyqk(requestURL string) ([]byte, error) {
client := &http.Client{}
req, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
return nil, err
}
req.Header.Set("upgrade-insecure-requests", "1")
req.Header.Set("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36")
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return io.ReadAll(resp.Body)
}

@ -0,0 +1,43 @@
// Package list
// @Time:2023/06/02 10:00
// @File:mian.go
// @SoftWare:Goland
// @Author:feiyang
// @Contact:TG@feiyangdigital
package list
import (
"io"
"net/http"
)
type HuyaYqk struct {
}
type YaResponse struct {
ITotalPage int `json:"iTotalPage"`
IPageSize int `json:"iPageSize"`
VList []struct {
SAvatar180 string `json:"sAvatar180"`
SGameFullName string `json:"sGameFullName"`
SNick string `json:"sNick"`
LProfileRoom int `json:"lProfileRoom"`
} `json:"vList"`
}
func (hy *HuyaYqk) HuYaYqk(requestURL string) ([]byte, error) {
client := &http.Client{}
req, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
return nil, err
}
req.Header.Set("upgrade-insecure-requests", "1")
req.Header.Set("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36")
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return io.ReadAll(resp.Body)
}

@ -8,11 +8,15 @@
package main
import (
"Golang/list"
"Golang/liveurls"
"encoding/base64"
"encoding/json"
"fmt"
"github.com/forgoer/openssl"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
)
func duanyan(adurl string, realurl any) string {
@ -36,6 +40,65 @@ func setupRouter(adurl string) *gin.Engine {
c.Redirect(http.StatusMovedPermanently, duanyan(adurl, douyinobj.GetRealurl()))
})
r.GET("/huyayqk.m3u", func(c *gin.Context) {
yaobj := &list.HuyaYqk{}
res, _ := yaobj.HuYaYqk("https://live.cdn.huya.com/liveHttpUI/getLiveList?iGid=2135")
var result list.YaResponse
json.Unmarshal(res, &result)
pageCount := result.ITotalPage
pageSize := result.IPageSize
c.Writer.Header().Set("Content-Type", "application/octet-stream")
c.Writer.Header().Set("Content-Disposition", "attachment; filename=HuYaYqk.m3u")
fmt.Fprintln(c.Writer, "#EXTM3U")
fmt.Fprintln(c.Writer, "#EXTINF:-1 tvg-name=\"4K60PSDR-H264-AAC测试\" tvg-logo=\"https://cdn.jsdelivr.net/gh/youshandefeiyang/IPTV/logo/tg.jpg\" group-title=\"4K频道\",4K60PSDR-H264-AAC测试")
fmt.Fprintln(c.Writer, "http://159.75.85.63:5680/d/ad/h264/playad.m3u8")
fmt.Fprintln(c.Writer, "#EXTINF:-1 tvg-name=\"4K60PHLG-HEVC-EAC3测试\" tvg-logo=\"https://cdn.jsdelivr.net/gh/youshandefeiyang/IPTV/logo/tg.jpg\" group-title=\"4K频道\",4K60PHLG-HEVC-EAC3测试")
fmt.Fprintln(c.Writer, "http://159.75.85.63:5680/d/ad/playad.m3u8")
for i := 1; i <= pageCount; i++ {
apiRes, _ := yaobj.HuYaYqk(fmt.Sprintf("https://live.cdn.huya.com/liveHttpUI/getLiveList?iGid=2135&iPageNo=%d&iPageSize=%d", i, pageSize))
var res list.YaResponse
json.Unmarshal(apiRes, &res)
data := res.VList
for _, value := range data {
fmt.Fprintf(c.Writer, "#EXTINF:-1 tvg-logo=\"%s\" group-title=\"%s\", %s\n", value.SAvatar180, value.SGameFullName, value.SNick)
fmt.Fprintf(c.Writer, "https://www.goodiptv.club/huya/%v\n", value.LProfileRoom)
}
}
})
r.GET("/douyuyqk.m3u", func(c *gin.Context) {
yuobj := &list.DouYuYqk{}
resAPI, _ := yuobj.Douyuyqk("https://www.douyu.com/gapi/rkc/directory/mixList/2_208/list")
var result list.DouYuResponse
json.Unmarshal(resAPI, &result)
pageCount := result.Data.Pgcnt
c.Writer.Header().Set("Content-Type", "application/octet-stream")
c.Writer.Header().Set("Content-Disposition", "attachment; filename=Douyuyqk.m3u")
fmt.Fprintln(c.Writer, "#EXTM3U")
fmt.Fprintln(c.Writer, "#EXTINF:-1 tvg-name=\"4K60PSDR-H264-AAC测试\" tvg-logo=\"https://cdn.jsdelivr.net/gh/youshandefeiyang/IPTV/logo/tg.jpg\" group-title=\"4K频道\",4K60PSDR-H264-AAC测试")
fmt.Fprintln(c.Writer, "http://159.75.85.63:5680/d/ad/h264/playad.m3u8")
fmt.Fprintln(c.Writer, "#EXTINF:-1 tvg-name=\"4K60PHLG-HEVC-EAC3测试\" tvg-logo=\"https://cdn.jsdelivr.net/gh/youshandefeiyang/IPTV/logo/tg.jpg\" group-title=\"4K频道\",4K60PHLG-HEVC-EAC3测试")
fmt.Fprintln(c.Writer, "http://159.75.85.63:5680/d/ad/playad.m3u8")
for i := 1; i <= pageCount; i++ {
apiRes, _ := yuobj.Douyuyqk("https://www.douyu.com/gapi/rkc/directory/mixList/2_208/" + strconv.Itoa(i))
var res list.DouYuResponse
json.Unmarshal(apiRes, &res)
data := res.Data.Rl
for _, value := range data {
fmt.Fprintf(c.Writer, "#EXTINF:-1 tvg-logo=\"https://apic.douyucdn.cn/upload/%s_big.jpg\" group-title=\"%s\", %s\n", value.Av, value.C2name, value.Nn)
fmt.Fprintf(c.Writer, "https://www.goodiptv.club/douyu/%v\n", value.Rid)
}
}
})
r.GET("/:path/:rid", func(c *gin.Context) {
path := c.Param("path")
rid := c.Param("rid")

Loading…
Cancel
Save