Skip to content

Commit

Permalink
修复战绩查询功能
Browse files Browse the repository at this point in the history
  • Loading branch information
KomeiDiSanXian committed Jan 3, 2024
1 parent b599886 commit 0adf6f5
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 37 deletions.
70 changes: 43 additions & 27 deletions bfhelper/internal/bf1/player/player.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"sort"
"strings"
"sync"
Expand All @@ -26,39 +27,54 @@ type Cheater struct {

// GetStats 获取战绩信息
func GetStats(id string) (*Stat, error) {
data, err := netreq.Request{URL: "https://battlefieldtracker.com/api/appStats?platform=3&name=" + id}.GetRespBodyJSON()
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ForceAttemptHTTP2 = false
transport.TLSClientConfig.NextProtos = []string{"http/1.1"}
res, err := netreq.Request{
URL: "https://api.tracker.gg/api/v2/bf1/standard/profile/origin/" + id,
Header: map[string]string{
"Host": "api.tracker.gg",
"User-Agent": "Tracker Network App / 3.22.9",
"Accept": "application/json; charset=utf-8",
"x-app-version": "3.22.9",
},
Transport: transport,
}.GetRespBodyJSON()
if res == nil {
return nil, errors.New("empty response")
}
if err != nil {
return nil, err
}
if !data.IsObject() {
if res.Get("errors").Exists() {
return nil, errors.New("invalid id")
}

data := res.Get("data.segments.0")
stat := &Stat{
SPM: data.Get("stats.2.value").Str,
TotalKD: data.Get("stats.4.value").Str,
WinPercent: data.Get("stats.5.value").Str,
KillsPerGame: data.Get("stats.6.value").Str,
Kills: data.Get("stats.7.value").Str,
Deaths: data.Get("stats.9.value").Str,
KPM: data.Get("stats.10.value").Str,
Losses: data.Get("stats.11.value").Str,
Wins: data.Get("stats.12.value").Str,
InfantryKills: data.Get("stats.13.value").Str,
InfantryKPM: data.Get("stats.14.value").Str,
InfantryKD: data.Get("stats.15.value").Str,
VehicleKills: data.Get("stats.16.value").Str,
VehicleKPM: data.Get("stats.17.value").Str,
Rank: data.Get("stats.18.value").Str,
Skill: data.Get("stats.19.value").Str,
TimePlayed: data.Get("stats.20.displayValue").Str,
MVP: data.Get("stats.26.value").Str,
Accuracy: data.Get("stats.27.value").Str,
DogtagsTaken: data.Get("stats.31.value").Str,
Headshots: data.Get("stats.32.value").Str,
HighestKillStreak: data.Get("stats.35.value").Str,
LongestHeadshot: data.Get("stats.37.value").Str,
Revives: data.Get("stats.41.value").Str,
CarriersKills: data.Get("stats.54.value").Str,
SPM: data.Get("stats.scorePerMinute.displayValue").Str,
TotalKD: data.Get("stats.kdRatio.displayValue").Str,
WinPercent: data.Get("stats.winPercentage.displayValue").Str,
KillsPerGame: data.Get("stats.killsPerRound.displayValue").Str,
Kills: data.Get("stats.kills.displayValue").Str,
Deaths: data.Get("stats.deaths.displayValue").Str,
KPM: data.Get("stats.killsPerMinute.displayValue").Str,
Losses: data.Get("stats.losses.displayValue").Str,
Wins: data.Get("stats.wins.displayValue").Str,
InfantryKills: data.Get("stats.infantryKills.displayValue").Str,
InfantryKPM: data.Get("stats.infantryKillsPerMinute.displayValue").Str,
InfantryKD: data.Get("stats.infantryKdRatio.displayValue").Str,
VehicleKills: data.Get("stats.vehicleKills.displayValue").Str,
VehicleKPM: data.Get("stats.vehicleKillsPerMinute.displayValue").Str,
Rank: data.Get("stats.rank.displayValue").Str,
TimePlayed: data.Get("stats.timePlayed.displayValue").Str,
MVP: data.Get("stats.mvp.displayValue").Str,
Accuracy: data.Get("stats.shotsAccuracy.displayValue").Str,
DogtagsTaken: data.Get("stats.dogtagsTaken.displayValue").Str,
Headshots: data.Get("stats.headshots.displayValue").Str,
HighestKillStreak: data.Get("stats.killStreak.displayValue").Str,
LongestHeadshot: data.Get("stats.longestHeadshot.displayValue").Str,
Revives: data.Get("stats.revive.displayValue").Str,
}
return stat, err
}
Expand Down
2 changes: 0 additions & 2 deletions bfhelper/internal/bf1/player/structs.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ type Stat struct {
VehicleKills string
VehicleKPM string
Rank string
Skill string
TimePlayed string
MVP string
Accuracy string
Expand All @@ -68,7 +67,6 @@ type Stat struct {
HighestKillStreak string
LongestHeadshot string
Revives string
CarriersKills string
}

// Weapons 武器
Expand Down
4 changes: 1 addition & 3 deletions bfhelper/internal/service/player.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,6 @@ func (s *Service) GetPlayerStats(ctx context.Context) error {
// TODO: 修改为卡片发送, 部分数据不准确,等待更改
txt := "id:" + id + "\n" +
"等级:" + stat.Rank + "\n" +
"技巧值:" + stat.Skill + "\n" +
"游玩时长:" + stat.TimePlayed + "\n" +
"总kd:" + stat.TotalKD + "(" + stat.Kills + "/" + stat.Deaths + ")" + "\n" +
"总kpm:" + stat.KPM + "\n" +
Expand All @@ -267,8 +266,7 @@ func (s *Service) GetPlayerStats(ctx context.Context) error {
"最高连杀:" + stat.HighestKillStreak + "\n" +
"最远爆头:" + stat.LongestHeadshot + "\n" +
"MVP数:" + stat.MVP + "\n" +
"作为神医拉起了 " + stat.Revives + " 人" + "\n" +
"开棺材车创死了 " + stat.CarriersKills + " 人"
"作为神医拉起了 " + stat.Revives + " 人"

span.AddEvent("success")
span.SetStatus(codes.Ok, "")
Expand Down
12 changes: 7 additions & 5 deletions bfhelper/pkg/netreq/netreq.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,17 @@ import (

// Request 请求结构体
type Request struct {
Method string
URL string
Header map[string]string
Body io.Reader
Method string
URL string
Header map[string]string
Body io.Reader
Transport http.RoundTripper
}

func (r Request) client() *http.Client {
return &http.Client{
Timeout: time.Minute,
Timeout: time.Minute,
Transport: r.Transport,
}
}

Expand Down

0 comments on commit 0adf6f5

Please sign in to comment.