Files
stream-api/main.go
2025-08-28 13:38:22 +02:00

72 lines
1.3 KiB
Go

package main
import (
"flag"
"fmt"
"strings"
"net/http"
"os"
"github.com/PuerkitoBio/goquery"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/log"
)
func handler(c fiber.Ctx) error {
url := fmt.Sprintf("https://www.werstreamt.es/filme-serien/?q=%v&action_results=suchen", c.Params("q"))
log.Info(url)
response, err := http.Get(url)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer response.Body.Close()
//body, err := io.ReadAll(response.Body)
doc, err := goquery.NewDocumentFromReader(response.Body)
if err != nil {
log.Fatal(err)
}
var providers strings.Builder
doc.Find(".provider").Each(func(i int, s *goquery.Selection) {
provider, _ := s.Attr("data-ext-provider-name")
log.Info("Found Provider: ", provider)
if s.Find(".fi-check").HasClass("fi-check") {
//fmt.Printf("Ist auf Netflix")
log.Info("Stream available")
if strings.Contains(providers.String(), provider) {
return
}
if providers.Len() != 0 {
providers.WriteString(",")
}
providers.WriteString(provider)
}
})
return c.JSON(fiber.Map{
"service": providers.String(),
})
}
func main() {
var port int
fmt.Printf("Starte")
flag.IntVar(&port, "p", 3000, "Provide a port number")
flag.Parse()
app := fiber.New()
app.Get("/api/v1/getStreamingProviders/:q", handler)
app.Listen(fmt.Sprint(":", port))
}