Skip to content

Commit

Permalink
fix highscore
Browse files Browse the repository at this point in the history
  • Loading branch information
alaingilbert committed Aug 19, 2022
1 parent a277d4e commit fa5c99e
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 61 deletions.
4 changes: 2 additions & 2 deletions pkg/extractor/extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ type Extractor interface {
ExtractGalaxyInfos(pageHTML []byte, botPlayerName string, botPlayerID, botPlayerRank int64) (ogame.SystemInfos, error)
ExtractGeologist(pageHTML []byte) bool
ExtractHiddenFields(pageHTML []byte) (fields url.Values)
ExtractHighscore(pageHTML []byte) (v6.Highscore, error)
ExtractHighscore(pageHTML []byte) (ogame.Highscore, error)
ExtractIPM(pageHTML []byte) (duration, max int64, token string)
ExtractIsInVacation(pageHTML []byte) bool
ExtractIsMobile(pageHTML []byte) bool
Expand Down Expand Up @@ -115,7 +115,7 @@ type Extractor interface {
ExtractFleetsFromEventListFromDoc(doc *goquery.Document) []ogame.Fleet
ExtractGeologistFromDoc(doc *goquery.Document) bool
ExtractHiddenFieldsFromDoc(doc *goquery.Document) url.Values
ExtractHighscoreFromDoc(doc *goquery.Document) (v6.Highscore, error)
ExtractHighscoreFromDoc(doc *goquery.Document) (ogame.Highscore, error)
ExtractIPMFromDoc(doc *goquery.Document) (duration, max int64, token string)
ExtractIsInVacationFromDoc(doc *goquery.Document) bool
ExtractIsMobileFromDoc(doc *goquery.Document) bool
Expand Down
50 changes: 2 additions & 48 deletions pkg/extractor/v6/extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import (
"bytes"
"errors"
"github.com/alaingilbert/ogame/pkg/ogame"
"github.com/alaingilbert/ogame/pkg/utils"
"net/url"
"strconv"
"time"

"github.com/PuerkitoBio/goquery"
Expand Down Expand Up @@ -807,57 +805,13 @@ func (e *Extractor) ExtractAuction(pageHTML []byte) (ogame.Auction, error) {
return extractAuctionFromDoc(doc)
}

// Highscore ...
type Highscore struct {
NbPage int64
CurrPage int64
Category int64 // 1:Player, 2:Alliance
Type int64 // 0:Total, 1:Economy, 2:Research, 3:Military, 4:Military Built, 5:Military Destroyed, 6:Military Lost, 7:Honor
Players []HighscorePlayer
}

// String ...
func (h Highscore) String() string {
return "" +
" NbPage: " + utils.FI64(h.NbPage) + "\n" +
"CurrPage: " + utils.FI64(h.CurrPage) + "\n" +
"Category: " + utils.FI64(h.Category) + "\n" +
" Type: " + utils.FI64(h.Type) + "\n" +
" Players: " + strconv.Itoa(len(h.Players)) + "\n"
}

// HighscorePlayer ...
type HighscorePlayer struct {
Position int64
ID int64
Name string
Score int64
AllianceID int64
HonourPoints int64
Homeworld ogame.Coordinate
Ships int64 // When getting military type
}

// String ...
func (h HighscorePlayer) String() string {
return "" +
" Position: " + utils.FI64(h.Position) + "\n" +
" ID: " + utils.FI64(h.ID) + "\n" +
" Name: " + h.Name + "\n" +
" Score: " + utils.FI64(h.Score) + "\n" +
" AllianceID: " + utils.FI64(h.AllianceID) + "\n" +
"HonourPoints: " + utils.FI64(h.HonourPoints) + "\n" +
" Homeworld: " + h.Homeworld.String() + "\n" +
" Ships: " + utils.FI64(h.Ships) + "\n"
}

// ExtractHighscore ...
func (e *Extractor) ExtractHighscore(pageHTML []byte) (Highscore, error) {
func (e *Extractor) ExtractHighscore(pageHTML []byte) (ogame.Highscore, error) {
panic("not implemented")
}

// ExtractHighscoreFromDoc ...
func (e *Extractor) ExtractHighscoreFromDoc(doc *goquery.Document) (Highscore, error) {
func (e *Extractor) ExtractHighscoreFromDoc(doc *goquery.Document) (ogame.Highscore, error) {
panic("not implemented")
}

Expand Down
5 changes: 2 additions & 3 deletions pkg/extractor/v71/extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"bytes"
"github.com/PuerkitoBio/goquery"
"github.com/alaingilbert/clockwork"
v6 "github.com/alaingilbert/ogame/pkg/extractor/v6"
"github.com/alaingilbert/ogame/pkg/extractor/v7"
"github.com/alaingilbert/ogame/pkg/ogame"
)
Expand Down Expand Up @@ -98,13 +97,13 @@ func (e *Extractor) ExtractProductionFromDoc(doc *goquery.Document) ([]ogame.Qua
}

// ExtractHighscore ...
func (e *Extractor) ExtractHighscore(pageHTML []byte) (v6.Highscore, error) {
func (e *Extractor) ExtractHighscore(pageHTML []byte) (ogame.Highscore, error) {
doc, _ := goquery.NewDocumentFromReader(bytes.NewReader(pageHTML))
return e.ExtractHighscoreFromDoc(doc)
}

// ExtractHighscoreFromDoc ...
func (e *Extractor) ExtractHighscoreFromDoc(doc *goquery.Document) (v6.Highscore, error) {
func (e *Extractor) ExtractHighscoreFromDoc(doc *goquery.Document) (ogame.Highscore, error) {
return extractHighscoreFromDocV71(doc)
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/extractor/v71/extracts.go
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,7 @@ func extractProductionFromDocV71(doc *goquery.Document) ([]ogame.Quantifiable, e
return res, nil
}

func extractHighscoreFromDocV71(doc *goquery.Document) (out v6.Highscore, err error) {
func extractHighscoreFromDocV71(doc *goquery.Document) (out ogame.Highscore, err error) {
s := doc.Selection
isFullPage := doc.Find("#stat_list_content").Size() == 1
if isFullPage {
Expand Down Expand Up @@ -773,7 +773,7 @@ func extractHighscoreFromDocV71(doc *goquery.Document) (out v6.Highscore, err er
out.NbPage = utils.MaxInt(int64(changeSiteSize)-1, 0)

s.Find("#ranks tbody tr").Each(func(i int, s *goquery.Selection) {
p := v6.HighscorePlayer{}
p := ogame.HighscorePlayer{}
p.Position = utils.DoParseI64(s.Find("td.position").Text())
p.ID = utils.DoParseI64(s.Find("td.sendmsg a").AttrOr("data-playerid", "0"))
p.Name = strings.TrimSpace(s.Find("span.playername").Text())
Expand Down
50 changes: 50 additions & 0 deletions pkg/ogame/highscore.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package ogame

import (
"github.com/alaingilbert/ogame/pkg/utils"
"strconv"
)

// Highscore ...
type Highscore struct {
NbPage int64
CurrPage int64
Category int64 // 1:Player, 2:Alliance
Type int64 // 0:Total, 1:Economy, 2:Research, 3:Military, 4:Military Built, 5:Military Destroyed, 6:Military Lost, 7:Honor
Players []HighscorePlayer
}

// String ...
func (h Highscore) String() string {
return "" +
" NbPage: " + utils.FI64(h.NbPage) + "\n" +
"CurrPage: " + utils.FI64(h.CurrPage) + "\n" +
"Category: " + utils.FI64(h.Category) + "\n" +
" Type: " + utils.FI64(h.Type) + "\n" +
" Players: " + strconv.Itoa(len(h.Players)) + "\n"
}

// HighscorePlayer ...
type HighscorePlayer struct {
Position int64
ID int64
Name string
Score int64
AllianceID int64
HonourPoints int64
Homeworld Coordinate
Ships int64 // When getting military type
}

// String ...
func (h HighscorePlayer) String() string {
return "" +
" Position: " + utils.FI64(h.Position) + "\n" +
" ID: " + utils.FI64(h.ID) + "\n" +
" Name: " + h.Name + "\n" +
" Score: " + utils.FI64(h.Score) + "\n" +
" AllianceID: " + utils.FI64(h.AllianceID) + "\n" +
"HonourPoints: " + utils.FI64(h.HonourPoints) + "\n" +
" Homeworld: " + h.Homeworld.String() + "\n" +
" Ships: " + utils.FI64(h.Ships) + "\n"
}
3 changes: 1 addition & 2 deletions pkg/wrapper/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package wrapper
import (
"crypto/tls"
"github.com/alaingilbert/ogame/pkg/extractor"
v6 "github.com/alaingilbert/ogame/pkg/extractor/v6"
"github.com/alaingilbert/ogame/pkg/ogame"
"github.com/alaingilbert/ogame/pkg/taskRunner"
"net/http"
Expand Down Expand Up @@ -87,7 +86,7 @@ type Prioritizable interface {
GetSlots() ogame.Slots
GetUserInfos() ogame.UserInfos
HeadersForPage(url string) (http.Header, error)
Highscore(category, typ, page int64) (v6.Highscore, error)
Highscore(category, typ, page int64) (ogame.Highscore, error)
IsUnderAttack() (bool, error)
Login() error
LoginWithBearerToken(token string) (bool, error)
Expand Down
4 changes: 2 additions & 2 deletions pkg/wrapper/ogame.go
Original file line number Diff line number Diff line change
Expand Up @@ -2283,7 +2283,7 @@ func (b *OGame) createUnion(fleet ogame.Fleet, unionUsers []string) (int64, erro
return res.UnionID, nil
}

func (b *OGame) highscore(category, typ, page int64) (out v6.Highscore, err error) {
func (b *OGame) highscore(category, typ, page int64) (out ogame.Highscore, err error) {
if category < 1 || category > 2 {
return out, errors.New("category must be in [1, 2] (1:player, 2:alliance)")
}
Expand Down Expand Up @@ -4702,7 +4702,7 @@ func (b *OGame) DoAuction(bid map[ogame.CelestialID]ogame.Resources) error {
}

// Highscore ...
func (b *OGame) Highscore(category, typ, page int64) (v6.Highscore, error) {
func (b *OGame) Highscore(category, typ, page int64) (ogame.Highscore, error) {
return b.WithPriority(taskRunner.Normal).Highscore(category, typ, page)
}

Expand Down
3 changes: 1 addition & 2 deletions pkg/wrapper/prioritize.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package wrapper

import (
"github.com/alaingilbert/ogame/pkg/extractor/v6"
"github.com/alaingilbert/ogame/pkg/ogame"
"net/http"
"net/url"
Expand Down Expand Up @@ -632,7 +631,7 @@ func (b *Prioritize) DoAuction(bid map[ogame.CelestialID]ogame.Resources) error
}

// Highscore ...
func (b *Prioritize) Highscore(category, typ, page int64) (v6.Highscore, error) {
func (b *Prioritize) Highscore(category, typ, page int64) (ogame.Highscore, error) {
b.begin("Highscore")
defer b.done()
return b.bot.highscore(category, typ, page)
Expand Down

0 comments on commit fa5c99e

Please sign in to comment.