-
Notifications
You must be signed in to change notification settings - Fork 26
/
TibiaNewslistV3.go
79 lines (65 loc) · 2.04 KB
/
TibiaNewslistV3.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package main
import (
"log"
"net/url"
"strings"
"github.com/PuerkitoBio/goquery"
)
// Child of JSONData
type NewsItem struct {
ID int `json:"id"`
Date string `json:"date"`
News string `json:"news"`
Category string `json:"category"`
Type string `json:"type"`
TibiaURL string `json:"url"`
ApiURL string `json:"url_api,omitempty"`
}
//
// The base
type NewsListResponse struct {
News []NewsItem `json:"news"`
Information Information `json:"information"`
}
func TibiaNewslistV3Impl(days int, BoxContentHTML string) NewsListResponse {
// Declaring vars for later use..
var NewsListData []NewsItem
// Loading HTML data into ReaderHTML for goquery with NewReader
ReaderHTML, err := goquery.NewDocumentFromReader(strings.NewReader(BoxContentHTML))
if err != nil {
log.Fatal(err)
}
ReaderHTML.Find(".Odd,.Even").Each(func(index int, s *goquery.Selection) {
var OneNews NewsItem
// getting category by image src
CategoryImg, _ := s.Find("img").Attr("src")
OneNews.Category = TibiadataGetNewsCategory(CategoryImg)
// getting type from headline
NewsType := s.Nodes[0].FirstChild.NextSibling.FirstChild.NextSibling.NextSibling.FirstChild.Data
OneNews.Type = TibiadataGetNewsType(TibiaDataSanitizeNbspSpaceString(NewsType))
// getting date from headline
OneNews.Date = TibiadataDateV3(s.Nodes[0].FirstChild.NextSibling.FirstChild.Data)
OneNews.News = s.Find("a").Text()
// getting remaining things as URLs
NewsURL, _ := s.Find("a").Attr("href")
p, _ := url.Parse(NewsURL)
NewsID := p.Query().Get("id")
NewsSplit := strings.Split(NewsURL, NewsID)
OneNews.ID = TibiadataStringToIntegerV3(NewsID)
OneNews.TibiaURL = NewsSplit[0] + NewsID
if TibiadataHost != "" {
OneNews.ApiURL = "https://" + TibiadataHost + "/v3/news/id/" + NewsID
}
// add to NewsListData for response
NewsListData = append(NewsListData, OneNews)
})
//
// Build the data-blob
return NewsListResponse{
NewsListData,
Information{
APIVersion: TibiadataAPIversion,
Timestamp: TibiadataDatetimeV3(""),
},
}
}