add more image urls
This commit is contained in:
parent
0b97f282e2
commit
3a076998f9
5 changed files with 74 additions and 75 deletions
|
@ -6,7 +6,6 @@ import (
|
|||
"log/slog"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type GogStruct struct {
|
||||
|
@ -67,7 +66,7 @@ func (e GogStruct) Load() error {
|
|||
return
|
||||
case tt == html.StartTagToken:
|
||||
t := bodyStore.Token()
|
||||
if t.Data != "a" {
|
||||
if t.Data != "a" { // only <a> tag
|
||||
continue
|
||||
}
|
||||
for _, a := range t.Attr {
|
||||
|
@ -105,44 +104,60 @@ func (e GogStruct) Load() error {
|
|||
}
|
||||
bodyGame := html.NewTokenizer(resGame.Body)
|
||||
|
||||
func() {
|
||||
for {
|
||||
tt := bodyGame.Next()
|
||||
|
||||
switch {
|
||||
case tt == html.ErrorToken:
|
||||
// file end or error
|
||||
return
|
||||
case tt == html.StartTagToken:
|
||||
t := bodyGame.Token()
|
||||
if t.Data != "h1" {
|
||||
continue
|
||||
}
|
||||
for _, a := range t.Attr {
|
||||
if !(a.Key == "class" && a.Val == "productcard-basics__title") {
|
||||
continue
|
||||
}
|
||||
if tt = bodyGame.Next(); tt != html.TextToken {
|
||||
continue
|
||||
}
|
||||
id := fmt.Sprintf("%v%v", e.idPrefix, appID)
|
||||
title := strings.TrimSpace(bodyGame.Token().Data)
|
||||
url := fmt.Sprintf("%v%v", e.baseUrl, appID)
|
||||
|
||||
e.deals[id] = Deal{
|
||||
Id: id,
|
||||
Title: title,
|
||||
Url: url,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
title, image := gogParseMeta(bodyGame)
|
||||
url := fmt.Sprintf("%v%v", e.baseUrl, appID)
|
||||
id := fmt.Sprintf("%v%v", e.idPrefix, appID)
|
||||
e.deals[id] = Deal{
|
||||
Id: id,
|
||||
Title: title,
|
||||
Url: url,
|
||||
Image: image,
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func gogParseMeta(htmlBody *html.Tokenizer) (string, string) {
|
||||
var title, image string
|
||||
func() {
|
||||
for {
|
||||
tt := htmlBody.Next()
|
||||
|
||||
switch {
|
||||
case tt == html.ErrorToken:
|
||||
// file end or error
|
||||
return
|
||||
case tt == html.StartTagToken:
|
||||
t := htmlBody.Token()
|
||||
if t.Data != "meta" {
|
||||
continue
|
||||
}
|
||||
for _, a := range t.Attr {
|
||||
if a.Key == "property" && a.Val == "og:title" {
|
||||
for _, c := range t.Attr {
|
||||
if c.Key == "content" {
|
||||
title = c.Val
|
||||
}
|
||||
}
|
||||
}
|
||||
if a.Key == "property" && a.Val == "og:image" {
|
||||
for _, c := range t.Attr {
|
||||
if c.Key == "content" {
|
||||
image = c.Val
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if title != "" && image != "" {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
return title, image
|
||||
}
|
||||
|
||||
func (e GogStruct) Get() []Deal {
|
||||
var deals []Deal
|
||||
for _, deal := range e.deals {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue