From de471f33edec03f0c79d7f5fbfc2ba61428124a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E7=BE=8A?= Date: Fri, 2 Jun 2023 11:00:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0huya=E3=80=81douyu=E7=9A=84m3?= =?UTF-8?q?u=E5=88=97=E8=A1=A8=E5=AE=9E=E6=97=B6=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Golang/list/douyuyqk.go | 48 +++++++++++++++++++++++++++++++ Golang/list/huyayqk.go | 43 ++++++++++++++++++++++++++++ Golang/main.go | 63 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 Golang/list/douyuyqk.go create mode 100644 Golang/list/huyayqk.go diff --git a/Golang/list/douyuyqk.go b/Golang/list/douyuyqk.go new file mode 100644 index 0000000..d7386ff --- /dev/null +++ b/Golang/list/douyuyqk.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) +} diff --git a/Golang/list/huyayqk.go b/Golang/list/huyayqk.go new file mode 100644 index 0000000..f952763 --- /dev/null +++ b/Golang/list/huyayqk.go @@ -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) +} diff --git a/Golang/main.go b/Golang/main.go index 38b6c67..24966c3 100644 --- a/Golang/main.go +++ b/Golang/main.go @@ -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")