vivaplusdl/vivaweb.go

83 lines
1.9 KiB
Go

package main
import (
"fmt"
"github.com/playwright-community/playwright-go"
"log"
)
const BASE_URL = "https://vivaplus.tv/"
const SIGN_IN_URL = BASE_URL + "supporters/sign_in"
type WebClient struct {
pw *playwright.Playwright
browser playwright.Browser
//browser *browser.Browser
//csrfToken string
//cookies *cookiejar.Jar
}
func NewWebClient(options *playwright.RunOptions) *WebClient {
pw, err := playwright.Run(options)
if err != nil {
log.Fatalf("error running playwright: %w", pw)
}
browser, err := pw.Firefox.Launch()
if err != nil {
log.Fatalf("error running firefox: %w", pw)
}
return &WebClient{
pw: pw,
browser: browser,
}
}
func (w *WebClient) VivaLogin(username, password string) error {
page, err := w.browser.NewPage()
if err != nil {
return fmt.Errorf("error creating page: %w", err)
}
_, err = page.Goto(SIGN_IN_URL)
if err != nil {
return fmt.Errorf("error navigating to sign-in page: %w", err)
}
err = page.GetByTestId("SupporterLogin.EmailInput").Fill(username)
if err != nil {
return fmt.Errorf("error filling in email: %w", err)
}
err = page.GetByTestId("SupporterLogin.PasswordInput").Fill(password)
if err != nil {
return fmt.Errorf("error filling in email: %w", err)
}
err = page.GetByTestId("SupporterLogin.SubmitButton").Click()
return nil
}
func (w *WebClient) VivaFindAllVideos() error {
log.Printf("Loading list of all videos...")
page, err := w.browser.NewPage()
if err != nil {
return fmt.Errorf("error creating page: %w", err)
}
_, err = page.Goto("https://vivaplus.tv/supporters/videos/all?order=asc")
if err != nil {
return fmt.Errorf("error opening page: %w", err)
}
count, err := page.GetByTestId("VideoCatalog.Video").Count()
//count, err := el.Count()
println(count, err)
//attr, err := el.GetAttribute("busy")
//println(attr, err)
//err = el.ScrollIntoViewIfNeeded()
//println(err)
//attr, err = el.GetAttribute("busy")
//println(attr, err)
return nil
}