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 }