node build fixed
This commit is contained in:
64
seanime-2.9.10/internal/onlinestream/sources/streamtape.go
Normal file
64
seanime-2.9.10/internal/onlinestream/sources/streamtape.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package onlinestream_sources
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"seanime/internal/util"
|
||||
"strings"
|
||||
|
||||
hibikeonlinestream "seanime/internal/extension/hibike/onlinestream"
|
||||
)
|
||||
|
||||
type (
|
||||
Streamtape struct {
|
||||
Client *http.Client
|
||||
}
|
||||
)
|
||||
|
||||
func NewStreamtape() *Streamtape {
|
||||
return &Streamtape{
|
||||
Client: &http.Client{},
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Streamtape) Extract(uri string) (vs []*hibikeonlinestream.VideoSource, err error) {
|
||||
defer util.HandlePanicInModuleThen("onlinestream/sources/streamtape/Extract", func() {
|
||||
err = ErrVideoSourceExtraction
|
||||
})
|
||||
|
||||
var ret []*hibikeonlinestream.VideoSource
|
||||
|
||||
resp, err := s.Client.Get(uri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
re := regexp.MustCompile(`robotlink'\).innerHTML = (.*)'`)
|
||||
match := re.FindStringSubmatch(string(body))
|
||||
if len(match) == 0 {
|
||||
return nil, errors.New("could not find robotlink")
|
||||
}
|
||||
|
||||
fhsh := strings.Split(match[1], "+ ('")
|
||||
fh := fhsh[0]
|
||||
sh := fhsh[1][3:]
|
||||
|
||||
fh = strings.ReplaceAll(fh, "'", "")
|
||||
|
||||
url := "https:" + fh + sh
|
||||
|
||||
ret = append(ret, &hibikeonlinestream.VideoSource{
|
||||
URL: url,
|
||||
Type: map[bool]hibikeonlinestream.VideoSourceType{true: hibikeonlinestream.VideoSourceM3U8, false: hibikeonlinestream.VideoSourceMP4}[strings.Contains(url, ".m3u8")],
|
||||
Quality: QualityAuto,
|
||||
})
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
Reference in New Issue
Block a user