asdklf
This commit is contained in:
parent
a0f10e2dd1
commit
338685398e
4 changed files with 164 additions and 69 deletions
|
@ -6,7 +6,6 @@ import (
|
||||||
|
|
||||||
func createDb(db *sql.DB) error {
|
func createDb(db *sql.DB) error {
|
||||||
var exists bool
|
var exists bool
|
||||||
// rows := db.QueryRow("SELECT EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name='seventv_ids') AND EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name='seventv_ids');")
|
|
||||||
err := db.QueryRow(`SELECT EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name='seventv_ids') AND EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name='seventv_ids');`).Scan(&exists)
|
err := db.QueryRow(`SELECT EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name='seventv_ids') AND EXISTS (SELECT 1 FROM sqlite_schema WHERE type='table' AND name='seventv_ids');`).Scan(&exists)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -34,7 +34,7 @@ func (s *Gql) getUserID(username string) (string, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", logger.Error().GetCtx().Err()
|
return "", logger.Error().GetCtx().Err()
|
||||||
}
|
}
|
||||||
logger.Trace().Msg(string(data))
|
// logger.Trace().Msg(string(data))
|
||||||
|
|
||||||
request, err := http.NewRequest("POST", "https://gql.twitch.tv/gql", bytes.NewBuffer(data))
|
request, err := http.NewRequest("POST", "https://gql.twitch.tv/gql", bytes.NewBuffer(data))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -52,6 +52,9 @@ func (s *Gql) getUserID(username string) (string, error) {
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
|
|
||||||
body, err := io.ReadAll(res.Body)
|
body, err := io.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error().Msg("Failed to get user ID from Twitch GQL: " + err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
return string(body), nil
|
return string(body), nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,9 @@ import (
|
||||||
// }
|
// }
|
||||||
|
|
||||||
type _Bttv struct {
|
type _Bttv struct {
|
||||||
Badges []struct {
|
Name string `json:"name"`
|
||||||
Name string `json:"name"`
|
Url map[string]string `json:"url"`
|
||||||
Url map[string]string `json:"url"`
|
Users []string `json:"users"`
|
||||||
Users []string `json:"users"`
|
|
||||||
} `json:"badges"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -51,6 +49,18 @@ type defaultFormat struct {
|
||||||
Users []string `json:"users"`
|
Users []string `json:"users"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type _Homies struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
// Name string `json:"name"`
|
||||||
|
// Url struct {
|
||||||
|
// Image1 string `json:"1"`
|
||||||
|
// Image2 string `json:"2"`
|
||||||
|
// Image4 string `json:"4"`
|
||||||
|
// } `json:"url"`
|
||||||
|
// Users []string `json:"users"`
|
||||||
|
defaultFormat
|
||||||
|
}
|
||||||
|
|
||||||
type _FrankerFz struct {
|
type _FrankerFz struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Color string `json:"color"`
|
Color string `json:"color"`
|
||||||
|
@ -94,16 +104,17 @@ type _FrankerFzAp struct {
|
||||||
|
|
||||||
type Format struct {
|
type Format struct {
|
||||||
wg sync.WaitGroup
|
wg sync.WaitGroup
|
||||||
SevenTv SevenTvBadges `json:"seventv"`
|
SevenTv *[]SevenTvBadges `json:"seventv"`
|
||||||
Chatterino []defaultFormat `json:"chatterino"`
|
Chatterino []defaultFormat `json:"chatterino"`
|
||||||
Ffz []_FrankerFz `json:"frankerfacez"`
|
Ffz []_FrankerFz `json:"frankerfacez"`
|
||||||
FfzAp []_FrankerFzAp `json:"frankerfacez_ap"`
|
FfzAp []_FrankerFzAp `json:"frankerfacez_ap"`
|
||||||
Bttv _Bttv `json:"betterttv"`
|
Bttv []defaultFormat `json:"betterttv"`
|
||||||
DankChat []defaultFormat `json:"dankchat"`
|
DankChat []defaultFormat `json:"dankchat"`
|
||||||
Homies []defaultFormat `json:"homies"`
|
Homies []_Homies `json:"homies"`
|
||||||
PurpleTv []defaultFormat `json:"purpletv"`
|
PurpleTv []defaultFormat `json:"purpletv"`
|
||||||
Chatty []defaultFormat `json:"chatty"`
|
Chatty []defaultFormat `json:"chatty"`
|
||||||
Chatsen []defaultFormat `json:"chatsen"`
|
Chatsen []defaultFormat `json:"chatsen"`
|
||||||
|
Twitch []defaultFormat `json:"twitch"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
|
@ -282,51 +293,68 @@ func formatHomiesBadges(format *Format) {
|
||||||
data.getBadges()
|
data.getBadges()
|
||||||
data.getBadgesTwo()
|
data.getBadgesTwo()
|
||||||
|
|
||||||
|
// var mergedBadges []Homies
|
||||||
|
|
||||||
|
// for i := range data.Badges.Badges {
|
||||||
|
// mergedBadges[data.Badges.Badges[i].Tooltip] = &badges1.Badges[i]
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Iterate through the second set of badges
|
||||||
|
// for _, badge := range badges2.Badges {
|
||||||
|
// // Check if a badge with the same tooltip exists in the map
|
||||||
|
// if existingBadge, ok := badgeMap[badge.Tooltip]; ok {
|
||||||
|
// // Combine users if the existing badge has users
|
||||||
|
// if badge.Users != nil {
|
||||||
|
// existingBadge.Users = append(existingBadge.Users, badge.Users...)
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// // Add new badge to the map and the badges1.Badges slice
|
||||||
|
// badgeMap[badge.Tooltip] = &badge
|
||||||
|
// badges1.Badges = append(badges1.Badges, badge)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
for _, badge := range data.Badges.Badges {
|
for _, badge := range data.Badges.Badges {
|
||||||
format.Homies = append(format.Homies, struct {
|
format.Homies = append(format.Homies, struct {
|
||||||
Name string `json:"name"`
|
ID string `json:"id"`
|
||||||
Url struct {
|
defaultFormat
|
||||||
Image1 string `json:"1"`
|
|
||||||
Image2 string `json:"2"`
|
|
||||||
Image4 string `json:"4"`
|
|
||||||
} `json:"url"`
|
|
||||||
Users []string `json:"users"`
|
|
||||||
}{
|
}{
|
||||||
Name: badge.Tooltip,
|
ID: badge.ID,
|
||||||
Url: struct {
|
defaultFormat: defaultFormat{
|
||||||
Image1 string `json:"1"`
|
Name: badge.Tooltip,
|
||||||
Image2 string `json:"2"`
|
Url: struct {
|
||||||
Image4 string `json:"4"`
|
Image1 string `json:"1"`
|
||||||
}{
|
Image2 string `json:"2"`
|
||||||
Image1: badge.Image1,
|
Image4 string `json:"4"`
|
||||||
Image2: badge.Image2,
|
}{
|
||||||
Image4: badge.Image3,
|
Image1: badge.Image1,
|
||||||
|
Image2: badge.Image2,
|
||||||
|
Image4: badge.Image3,
|
||||||
|
},
|
||||||
|
Users: badge.Users,
|
||||||
},
|
},
|
||||||
Users: badge.Users,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, badge := range data.BadgesTwo.Badges {
|
for _, badge := range data.BadgesTwo.Badges {
|
||||||
format.Homies = append(format.Homies, struct {
|
format.Homies = append(format.Homies, struct {
|
||||||
Name string `json:"name"`
|
ID string `json:"id"`
|
||||||
Url struct {
|
defaultFormat
|
||||||
Image1 string `json:"1"`
|
|
||||||
Image2 string `json:"2"`
|
|
||||||
Image4 string `json:"4"`
|
|
||||||
} `json:"url"`
|
|
||||||
Users []string `json:"users"`
|
|
||||||
}{
|
}{
|
||||||
Name: badge.Tooltip,
|
// ID: badge.ID,
|
||||||
Url: struct {
|
defaultFormat: defaultFormat{
|
||||||
Image1 string `json:"1"`
|
Name: badge.Tooltip,
|
||||||
Image2 string `json:"2"`
|
Url: struct {
|
||||||
Image4 string `json:"4"`
|
Image1 string `json:"1"`
|
||||||
}{
|
Image2 string `json:"2"`
|
||||||
Image1: badge.Image1,
|
Image4 string `json:"4"`
|
||||||
Image2: badge.Image2,
|
}{
|
||||||
Image4: badge.Image3,
|
Image1: badge.Image1,
|
||||||
|
Image2: badge.Image2,
|
||||||
|
Image4: badge.Image3,
|
||||||
|
},
|
||||||
|
Users: badge.Users,
|
||||||
},
|
},
|
||||||
Users: badge.Users,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -452,6 +480,38 @@ func formatChatsen(format *Format) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func formatTwitch(format *Format) {
|
||||||
|
// defer format.wg.Done()
|
||||||
|
data := &Twitch{}
|
||||||
|
data.getBadges()
|
||||||
|
|
||||||
|
for _, badge := range *(data) {
|
||||||
|
for _, version := range badge.Versions {
|
||||||
|
format.Twitch = append(format.Twitch, struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Url struct {
|
||||||
|
Image1 string `json:"1"`
|
||||||
|
Image2 string `json:"2"`
|
||||||
|
Image4 string `json:"4"`
|
||||||
|
} `json:"url"`
|
||||||
|
Users []string `json:"users"`
|
||||||
|
}{
|
||||||
|
Name: version.Title,
|
||||||
|
Url: struct {
|
||||||
|
Image1 string `json:"1"`
|
||||||
|
Image2 string `json:"2"`
|
||||||
|
Image4 string `json:"4"`
|
||||||
|
}{
|
||||||
|
Image1: version.ImageURL1X,
|
||||||
|
Image2: version.ImageURL2X,
|
||||||
|
Image4: version.ImageURL4X,
|
||||||
|
},
|
||||||
|
Users: []string{},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// func formatSevenTvBadges() string {
|
// func formatSevenTvBadges() string {
|
||||||
// data := &SevenTv{}
|
// data := &SevenTv{}
|
||||||
// data.getBadges()
|
// data.getBadges()
|
||||||
|
@ -467,7 +527,7 @@ func formatSevenTvBadges(format *Format) {
|
||||||
data := &SevenTv{}
|
data := &SevenTv{}
|
||||||
data.getBadges()
|
data.getBadges()
|
||||||
|
|
||||||
format.SevenTv = data.Badges
|
format.SevenTv = &data.Badges.Data.Cosmetics.Badges
|
||||||
|
|
||||||
// badges, err := json.Marshal(data.Badges.Data.Cosmetics)
|
// badges, err := json.Marshal(data.Badges.Data.Cosmetics)
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
|
@ -502,16 +562,17 @@ func formatAllBadges() string {
|
||||||
format := &Format{}
|
format := &Format{}
|
||||||
// format.wg.Add(7)
|
// format.wg.Add(7)
|
||||||
|
|
||||||
formatSevenTvBadges(format)
|
// formatSevenTvBadges(format)
|
||||||
// formatChatterino(format)
|
// formatChatterino(format)
|
||||||
// formatFfz(format)
|
// formatFfz(format)
|
||||||
// formatFfzAp(format)
|
// formatFfzAp(format)
|
||||||
// formatDankChat(format)
|
// formatDankChat(format)
|
||||||
// formatChatsen(format)
|
// formatChatsen(format)
|
||||||
// go formatBttv(format)
|
// go formatBttv(format)
|
||||||
// formatHomiesBadges(format)
|
formatHomiesBadges(format)
|
||||||
// formatPurpleTv(format)
|
// formatPurpleTv(format)
|
||||||
// formatChatty(format)
|
// formatChatty(format)
|
||||||
|
// formatTwitch(format)
|
||||||
|
|
||||||
// format.wg.Wait()
|
// format.wg.Wait()
|
||||||
|
|
||||||
|
|
|
@ -27,19 +27,12 @@ type Chatterino struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type SevenTvBadges struct {
|
type SevenTvBadges struct {
|
||||||
Data struct {
|
ID string `json:"id"`
|
||||||
Cosmetics struct {
|
Kind string `json:"kind"`
|
||||||
Badges []struct {
|
Name string `json:"name"`
|
||||||
ID string `json:"id"`
|
Tooltip string `json:"tooltip"`
|
||||||
Kind string `json:"kind"`
|
Tag string `json:"tag"`
|
||||||
Name string `json:"name"`
|
Typename string `json:"__typename"`
|
||||||
Tooltip string `json:"tooltip"`
|
|
||||||
Tag string `json:"tag"`
|
|
||||||
Typename string `json:"__typename"`
|
|
||||||
} `json:"badges"`
|
|
||||||
Typename string `json:"__typename"`
|
|
||||||
} `json:"cosmetics"`
|
|
||||||
} `json:"data"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type SevenTv struct {
|
type SevenTv struct {
|
||||||
|
@ -62,7 +55,14 @@ type SevenTv struct {
|
||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
}
|
}
|
||||||
// 7tv Badges
|
// 7tv Badges
|
||||||
Badges SevenTvBadges `json:"sevenTvBadges"`
|
Badges struct {
|
||||||
|
Data struct {
|
||||||
|
Cosmetics struct {
|
||||||
|
Badges []SevenTvBadges `json:"badges"`
|
||||||
|
Typename string `json:"__typename"`
|
||||||
|
} `json:"cosmetics"`
|
||||||
|
} `json:"data"`
|
||||||
|
} `json:"sevenTvBadges"`
|
||||||
// 7tv Paints
|
// 7tv Paints
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Paints struct {
|
Paints struct {
|
||||||
|
@ -212,6 +212,29 @@ type Chatsen struct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Twitch
|
||||||
|
type ClickAction string
|
||||||
|
|
||||||
|
const (
|
||||||
|
SubscribeToChannel ClickAction = "subscribe_to_channel"
|
||||||
|
Turbo ClickAction = "turbo"
|
||||||
|
VisitURL ClickAction = "visit_url"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Twitch []struct {
|
||||||
|
SetID string `json:"set_id"`
|
||||||
|
Versions []struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
ImageURL1X string `json:"image_url_1x"`
|
||||||
|
ImageURL2X string `json:"image_url_2x"`
|
||||||
|
ImageURL4X string `json:"image_url_4x"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
ClickAction *ClickAction `json:"click_action"`
|
||||||
|
ClickURL *string `json:"click_url"`
|
||||||
|
} `json:"versions"`
|
||||||
|
}
|
||||||
|
|
||||||
func doGetRequest(url string) []byte {
|
func doGetRequest(url string) []byte {
|
||||||
request, err := http.NewRequest("GET", url, nil)
|
request, err := http.NewRequest("GET", url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -277,7 +300,7 @@ func (s *SevenTv) getBadges() *SevenTv {
|
||||||
}
|
}
|
||||||
|
|
||||||
res := doPostRequest("https://7tv.io/v3/gql", data)
|
res := doPostRequest("https://7tv.io/v3/gql", data)
|
||||||
logger.Trace().Msg(string(res))
|
// logger.Trace().Msg(string(res))
|
||||||
|
|
||||||
err = json.Unmarshal(res, &s.Badges)
|
err = json.Unmarshal(res, &s.Badges)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -477,3 +500,12 @@ func (s *Chatsen) getBadges() *Chatsen {
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Twitch) getBadges() *Twitch {
|
||||||
|
res := doGetRequest("https://api.ivr.fi/v2/twitch/badges/global")
|
||||||
|
err := json.Unmarshal(res, &s)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error().Msg(err.Error())
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue