72 lines
1.3 KiB
Go
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))
|
|
}
|