Skip to content

Commit 3f3aef1

Browse files
authored
shrink of TibiaFansitesV3.go (#8)
- using for loop to scan two sections
1 parent e24217d commit 3f3aef1

File tree

1 file changed

+112
-197
lines changed

1 file changed

+112
-197
lines changed

src/TibiaFansitesV3.go

Lines changed: 112 additions & 197 deletions
Original file line numberDiff line numberDiff line change
@@ -68,215 +68,130 @@ func TibiaFansitesV3(c *gin.Context) {
6868
}
6969

7070
// Creating empty PromotedFansitesData and SupportedFansitesData var
71-
var PromotedFansitesData []Fansite
72-
var SupportedFansitesData []Fansite
73-
74-
// Running query over each tr in fansitesinnertable
75-
ReaderHTML.Find("#promotedfansitesinnertable tr").First().NextAll().Each(func(index int, s *goquery.Selection) {
76-
// #promotedfansitesinnertable
77-
// #supportedfansitesinnertable
78-
79-
// Storing HTML into FansiteTrHTML
80-
FansiteTrHTML, err := s.Html()
81-
if err != nil {
82-
log.Fatal(err)
83-
}
84-
85-
// Removing line breaks
86-
FansiteTrHTML = TibiadataHTMLRemoveLinebreaksV3(FansiteTrHTML)
87-
88-
// Regex to get data for fansites
89-
regex1 := regexp.MustCompile(`<td><a href="(.*)" target.*img .*src="(.*)" alt="(.*)"\/><\/a>.*<a href=".*">(.*)<\/a><\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*<ul><li>(.*)<\/li><\/ul><\/td><td.*top;">(.*)<\/td>`)
90-
subma1 := regex1.FindAllStringSubmatch(FansiteTrHTML, -1)
91-
92-
if len(subma1) > 0 {
93-
94-
// ContentType
95-
ContentTypeData := ContentType{}
96-
var imgRE1 = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
97-
imgs1 := imgRE1.FindAllStringSubmatch(subma1[0][5], -1)
98-
out := make([]string, len(imgs1))
99-
for i := range out {
100-
if strings.Contains(imgs1[i][1], "Statistics") {
101-
ContentTypeData.Statistics = true
102-
} else if strings.Contains(imgs1[i][1], "ArticlesNews") {
103-
ContentTypeData.Texts = true
104-
} else if strings.Contains(imgs1[i][1], "Tools") {
105-
ContentTypeData.Tools = true
106-
} else if strings.Contains(imgs1[i][1], "Wiki") {
107-
ContentTypeData.Wiki = true
108-
}
71+
var PromotedFansitesData, SupportedFansitesData []Fansite
72+
73+
// list of different fansite types
74+
FansiteTypes := []string{"promoted", "supported"}
75+
// running over the FansiteTypes array
76+
for _, FansiteType := range FansiteTypes {
77+
78+
// Running query over each tr in <FansiteType>fansitesinnertable
79+
ReaderHTML.Find("#" + FansiteType + "fansitesinnertable tr").First().NextAll().Each(func(index int, s *goquery.Selection) {
80+
// #promotedfansitesinnertable
81+
// #supportedfansitesinnertable
82+
83+
// Storing HTML into FansiteTrHTML
84+
FansiteTrHTML, err := s.Html()
85+
if err != nil {
86+
log.Fatal(err)
10987
}
11088

111-
// SocialMedia
112-
SocialMediaData := SocialMedia{}
113-
var imgRE2 = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
114-
imgs2 := imgRE2.FindAllStringSubmatch(subma1[0][6], -1)
115-
out2 := make([]string, len(imgs2))
116-
for i := range out2 {
117-
if strings.Contains(imgs2[i][1], "Discord") {
118-
SocialMediaData.Discord = true
119-
} else if strings.Contains(imgs2[i][1], "Facebook") {
120-
SocialMediaData.Facebook = true
121-
} else if strings.Contains(imgs2[i][1], "Instagram") {
122-
SocialMediaData.Instagram = true
123-
} else if strings.Contains(imgs2[i][1], "Reddit") {
124-
SocialMediaData.Reddit = true
125-
} else if strings.Contains(imgs2[i][1], "Twitch") {
126-
SocialMediaData.Twitch = true
127-
} else if strings.Contains(imgs2[i][1], "Twitter") {
128-
SocialMediaData.Twitter = true
129-
} else if strings.Contains(imgs2[i][1], "Youtube") {
130-
SocialMediaData.Youtube = true
89+
// Removing line breaks
90+
FansiteTrHTML = TibiadataHTMLRemoveLinebreaksV3(FansiteTrHTML)
91+
92+
// Regex to get data for fansites
93+
regex1 := regexp.MustCompile(`<td><a href="(.*)" target.*img .*src="(.*)" alt="(.*)"\/><\/a>.*<a href=".*">(.*)<\/a><\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*<ul><li>(.*)<\/li><\/ul><\/td><td.*top;">(.*)<\/td>`)
94+
subma1 := regex1.FindAllStringSubmatch(FansiteTrHTML, -1)
95+
96+
if len(subma1) > 0 {
97+
98+
// ContentType
99+
ContentTypeData := ContentType{}
100+
var imgRE1 = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
101+
imgs1 := imgRE1.FindAllStringSubmatch(subma1[0][5], -1)
102+
out := make([]string, len(imgs1))
103+
for i := range out {
104+
if strings.Contains(imgs1[i][1], "Statistics") {
105+
ContentTypeData.Statistics = true
106+
} else if strings.Contains(imgs1[i][1], "ArticlesNews") {
107+
ContentTypeData.Texts = true
108+
} else if strings.Contains(imgs1[i][1], "Tools") {
109+
ContentTypeData.Tools = true
110+
} else if strings.Contains(imgs1[i][1], "Wiki") {
111+
ContentTypeData.Wiki = true
112+
}
131113
}
132-
}
133-
134-
// Languages
135-
re := regexp.MustCompile("iti__flag.iti__(..)")
136-
found := re.FindAllString(subma1[0][7], -1)
137-
FansiteLanguagesData := make([]string, len(found))
138-
for i := range FansiteLanguagesData {
139-
FansiteLanguagesData[i] = strings.ReplaceAll(found[i], "iti__flag iti__", "")
140-
}
141-
142-
// Specials
143-
subma1[0][8] = html.UnescapeString(subma1[0][8])
144-
FansiteSpecialsData := strings.Split(subma1[0][8], "</li><li>")
145-
146-
// FansiteItem & FansiteItemURL
147-
var FansiteItemData bool
148-
var FansiteItemURLData string
149-
regex2 := regexp.MustCompile(`.*src="(.*)" alt=".*`)
150-
subma1item := regex2.FindAllStringSubmatch(subma1[0][9], -1)
151-
if len(subma1item) > 0 {
152-
FansiteItemData = true
153-
FansiteItemURLData = subma1item[0][1]
154-
} else {
155-
FansiteItemData = false
156-
FansiteItemURLData = ""
157-
}
158-
159-
PromotedFansitesData = append(PromotedFansitesData, Fansite{
160-
Name: subma1[0][3],
161-
LogoURL: subma1[0][2],
162-
Homepage: subma1[0][1],
163-
Contact: subma1[0][4],
164-
ContentType: ContentTypeData,
165-
SocialMedia: SocialMediaData,
166-
Languages: FansiteLanguagesData,
167-
Specials: FansiteSpecialsData,
168-
FansiteItem: FansiteItemData,
169-
FansiteItemURL: FansiteItemURLData,
170-
})
171-
}
172114

173-
})
174-
175-
// Running query over each tr in fansitesinnertable
176-
ReaderHTML.Find("#supportedfansitesinnertable tr").First().NextAll().Each(func(index int, s *goquery.Selection) {
177-
// #promotedfansitesinnertable
178-
// #supportedfansitesinnertable
179-
180-
// Storing HTML into FansiteTrHTML
181-
FansiteTrHTML, err := s.Html()
182-
if err != nil {
183-
log.Fatal(err)
184-
}
185-
186-
// Removing line breaks
187-
FansiteTrHTML = TibiadataHTMLRemoveLinebreaksV3(FansiteTrHTML)
188-
189-
// Regex to get data for fansites
190-
regex1 := regexp.MustCompile(`<td><a href="(.*)" target.*img .*src="(.*)" alt="(.*)"\/><\/a>.*<a href=".*">(.*)<\/a><\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*<ul><li>(.*)<\/li><\/ul><\/td><td.*top;">(.*)<\/td>`)
191-
subma1 := regex1.FindAllStringSubmatch(FansiteTrHTML, -1)
192-
193-
if len(subma1) > 0 {
194-
195-
// ContentType
196-
ContentTypeData := ContentType{}
197-
var imgRE1 = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
198-
imgs1 := imgRE1.FindAllStringSubmatch(subma1[0][5], -1)
199-
out := make([]string, len(imgs1))
200-
for i := range out {
201-
if strings.Contains(imgs1[i][1], "Statistics") {
202-
ContentTypeData.Statistics = true
203-
} else if strings.Contains(imgs1[i][1], "ArticlesNews") {
204-
ContentTypeData.Texts = true
205-
} else if strings.Contains(imgs1[i][1], "Tools") {
206-
ContentTypeData.Tools = true
207-
} else if strings.Contains(imgs1[i][1], "Wiki") {
208-
ContentTypeData.Wiki = true
115+
// SocialMedia
116+
SocialMediaData := SocialMedia{}
117+
var imgRE2 = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
118+
imgs2 := imgRE2.FindAllStringSubmatch(subma1[0][6], -1)
119+
out2 := make([]string, len(imgs2))
120+
for i := range out2 {
121+
if strings.Contains(imgs2[i][1], "Discord") {
122+
SocialMediaData.Discord = true
123+
} else if strings.Contains(imgs2[i][1], "Facebook") {
124+
SocialMediaData.Facebook = true
125+
} else if strings.Contains(imgs2[i][1], "Instagram") {
126+
SocialMediaData.Instagram = true
127+
} else if strings.Contains(imgs2[i][1], "Reddit") {
128+
SocialMediaData.Reddit = true
129+
} else if strings.Contains(imgs2[i][1], "Twitch") {
130+
SocialMediaData.Twitch = true
131+
} else if strings.Contains(imgs2[i][1], "Twitter") {
132+
SocialMediaData.Twitter = true
133+
} else if strings.Contains(imgs2[i][1], "Youtube") {
134+
SocialMediaData.Youtube = true
135+
}
209136
}
210-
}
211137

212-
// SocialMedia
213-
SocialMediaData := SocialMedia{}
214-
var imgRE2 = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
215-
imgs2 := imgRE2.FindAllStringSubmatch(subma1[0][6], -1)
216-
out2 := make([]string, len(imgs2))
217-
for i := range out2 {
218-
if strings.Contains(imgs2[i][1], "Discord") {
219-
SocialMediaData.Discord = true
220-
} else if strings.Contains(imgs2[i][1], "Facebook") {
221-
SocialMediaData.Facebook = true
222-
} else if strings.Contains(imgs2[i][1], "Instagram") {
223-
SocialMediaData.Instagram = true
224-
} else if strings.Contains(imgs2[i][1], "Reddit") {
225-
SocialMediaData.Reddit = true
226-
} else if strings.Contains(imgs2[i][1], "Twitch") {
227-
SocialMediaData.Twitch = true
228-
} else if strings.Contains(imgs2[i][1], "Twitter") {
229-
SocialMediaData.Twitter = true
230-
} else if strings.Contains(imgs2[i][1], "Youtube") {
231-
SocialMediaData.Youtube = true
138+
// Languages
139+
re := regexp.MustCompile("iti__flag.iti__(..)")
140+
found := re.FindAllString(subma1[0][7], -1)
141+
FansiteLanguagesData := make([]string, len(found))
142+
for i := range FansiteLanguagesData {
143+
FansiteLanguagesData[i] = strings.ReplaceAll(found[i], "iti__flag iti__", "")
232144
}
233-
}
234-
235-
// Languages
236-
re := regexp.MustCompile("iti__flag.iti__(..)")
237-
found := re.FindAllString(subma1[0][7], -1)
238-
FansiteLanguagesData := make([]string, len(found))
239-
for i := range FansiteLanguagesData {
240-
FansiteLanguagesData[i] = strings.ReplaceAll(found[i], "iti__flag iti__", "")
241-
}
242145

243-
// Specials
244-
subma1[0][8] = html.UnescapeString(subma1[0][8])
245-
FansiteSpecialsData := strings.Split(subma1[0][8], "</li><li>")
146+
// Specials
147+
subma1[0][8] = html.UnescapeString(subma1[0][8])
148+
FansiteSpecialsData := strings.Split(subma1[0][8], "</li><li>")
149+
150+
// FansiteItem & FansiteItemURL
151+
var FansiteItemData bool
152+
var FansiteItemURLData string
153+
regex2 := regexp.MustCompile(`.*src="(.*)" alt=".*`)
154+
subma1item := regex2.FindAllStringSubmatch(subma1[0][9], -1)
155+
if len(subma1item) > 0 {
156+
FansiteItemData = true
157+
FansiteItemURLData = subma1item[0][1]
158+
} else {
159+
FansiteItemData = false
160+
FansiteItemURLData = ""
161+
}
246162

247-
// FansiteItem & FansiteItemURL
248-
var FansiteItemData bool
249-
var FansiteItemURLData string
250-
regex2 := regexp.MustCompile(`.*src="(.*)" alt=".*`)
251-
subma1item := regex2.FindAllStringSubmatch(subma1[0][9], -1)
252-
if len(subma1item) > 0 {
253-
FansiteItemData = true
254-
FansiteItemURLData = subma1item[0][1]
255-
} else {
256-
FansiteItemData = false
257-
FansiteItemURLData = ""
163+
if FansiteType == "promoted" {
164+
PromotedFansitesData = append(PromotedFansitesData, Fansite{
165+
Name: subma1[0][3],
166+
LogoURL: subma1[0][2],
167+
Homepage: subma1[0][1],
168+
Contact: subma1[0][4],
169+
ContentType: ContentTypeData,
170+
SocialMedia: SocialMediaData,
171+
Languages: FansiteLanguagesData,
172+
Specials: FansiteSpecialsData,
173+
FansiteItem: FansiteItemData,
174+
FansiteItemURL: FansiteItemURLData,
175+
})
176+
} else if FansiteType == "supported" {
177+
SupportedFansitesData = append(SupportedFansitesData, Fansite{
178+
Name: subma1[0][3],
179+
LogoURL: subma1[0][2],
180+
Homepage: subma1[0][1],
181+
Contact: subma1[0][4],
182+
ContentType: ContentTypeData,
183+
SocialMedia: SocialMediaData,
184+
Languages: FansiteLanguagesData,
185+
Specials: FansiteSpecialsData,
186+
FansiteItem: FansiteItemData,
187+
FansiteItemURL: FansiteItemURLData,
188+
})
189+
}
258190
}
259191

260-
SupportedFansitesData = append(SupportedFansitesData, Fansite{
261-
Name: subma1[0][3],
262-
LogoURL: subma1[0][2],
263-
Homepage: subma1[0][1],
264-
Contact: subma1[0][4],
265-
ContentType: ContentTypeData,
266-
SocialMedia: SocialMediaData,
267-
Languages: FansiteLanguagesData,
268-
Specials: FansiteSpecialsData,
269-
FansiteItem: FansiteItemData,
270-
FansiteItemURL: FansiteItemURLData,
271-
})
272-
}
273-
274-
})
192+
})
275193

276-
// Printing the PromotedFansitesData data to log
277-
// log.Println(PromotedFansitesData)
278-
// Printing the SupportedFansitesData data to log
279-
// log.Println(SupportedFansitesData)
194+
}
280195

281196
//
282197
// Build the data-blob

0 commit comments

Comments
 (0)