Removed games integration
This commit is contained in:
parent
9368689019
commit
0a41069e4a
@ -6,7 +6,6 @@ import (
|
||||
"path"
|
||||
|
||||
"github.com/animenotifier/anilist"
|
||||
"github.com/animenotifier/osu"
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
@ -57,10 +56,6 @@ type APIKeysData struct {
|
||||
Secret string `json:"secret"`
|
||||
} `json:"anilist"`
|
||||
|
||||
Osu struct {
|
||||
Secret string `json:"secret"`
|
||||
} `json:"osu"`
|
||||
|
||||
PayPal struct {
|
||||
ID string `json:"id"`
|
||||
Secret string `json:"secret"`
|
||||
@ -111,9 +106,6 @@ func init() {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Set Osu API key
|
||||
osu.APIKey = APIKeys.Osu.Secret
|
||||
|
||||
// Set Anilist API keys
|
||||
anilist.APIKeyID = APIKeys.AniList.ID
|
||||
anilist.APIKeySecret = APIKeys.AniList.Secret
|
||||
|
@ -104,16 +104,6 @@ func (track *SoundTrack) Anime() []*Anime {
|
||||
return animeList
|
||||
}
|
||||
|
||||
// OsuBeatmaps returns all osu beatmap IDs of the sound track.
|
||||
func (track *SoundTrack) OsuBeatmaps() []string {
|
||||
return FilterIDTags(track.Tags, "osu-beatmap")
|
||||
}
|
||||
|
||||
// EtternaBeatmaps returns all Etterna song IDs of the sound track.
|
||||
func (track *SoundTrack) EtternaBeatmaps() []string {
|
||||
return FilterIDTags(track.Tags, "etterna")
|
||||
}
|
||||
|
||||
// MainAnime ...
|
||||
func (track *SoundTrack) MainAnime() *Anime {
|
||||
allAnime := track.Anime()
|
||||
|
71
arn/User.go
71
arn/User.go
@ -5,18 +5,14 @@ import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/aerogo/aero/event"
|
||||
"github.com/aerogo/http/client"
|
||||
"github.com/animenotifier/ffxiv"
|
||||
"github.com/animenotifier/notify.moe/arn/autocorrect"
|
||||
"github.com/animenotifier/notify.moe/arn/validate"
|
||||
"github.com/animenotifier/osu"
|
||||
"github.com/animenotifier/overwatch"
|
||||
gravatar "github.com/ungerik/go-gravatar"
|
||||
)
|
||||
|
||||
@ -514,70 +510,3 @@ func (user *User) TypeName() string {
|
||||
func (user *User) Self() Loggable {
|
||||
return user
|
||||
}
|
||||
|
||||
// RefreshOsuInfo refreshes a user's Osu information.
|
||||
func (user *User) RefreshOsuInfo() error {
|
||||
if user.Accounts.Osu.Nick == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
osu, err := osu.GetUser(user.Accounts.Osu.Nick)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
user.Accounts.Osu.PP, _ = strconv.ParseFloat(osu.PPRaw, 64)
|
||||
user.Accounts.Osu.Level, _ = strconv.ParseFloat(osu.Level, 64)
|
||||
user.Accounts.Osu.Accuracy, _ = strconv.ParseFloat(osu.Accuracy, 64)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RefreshFFXIVInfo refreshes a user's FFXIV information.
|
||||
func (user *User) RefreshFFXIVInfo() error {
|
||||
if user.Accounts.FinalFantasyXIV.Nick == "" || user.Accounts.FinalFantasyXIV.Server == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
characterID, err := ffxiv.GetCharacterID(user.Accounts.FinalFantasyXIV.Nick, user.Accounts.FinalFantasyXIV.Server)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
character, err := ffxiv.GetCharacter(characterID)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
user.Accounts.FinalFantasyXIV.Class = character.Class
|
||||
user.Accounts.FinalFantasyXIV.Level = character.Level
|
||||
user.Accounts.FinalFantasyXIV.ItemLevel = character.ItemLevel
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RefreshOverwatchInfo refreshes a user's Overwatch information.
|
||||
func (user *User) RefreshOverwatchInfo() error {
|
||||
if user.Accounts.Overwatch.BattleTag == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
stats, err := overwatch.GetPlayerStats(user.Accounts.Overwatch.BattleTag)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
skillRating, tier := stats.HighestSkillRating()
|
||||
|
||||
// Only show career highest skill rating
|
||||
if skillRating > user.Accounts.Overwatch.SkillRating {
|
||||
user.Accounts.Overwatch.SkillRating = skillRating
|
||||
user.Accounts.Overwatch.Tier = tier
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ import (
|
||||
"github.com/aerogo/aero"
|
||||
"github.com/aerogo/api"
|
||||
"github.com/aerogo/http/client"
|
||||
"github.com/akyoto/color"
|
||||
"github.com/animenotifier/notify.moe/arn/autocorrect"
|
||||
)
|
||||
|
||||
@ -127,54 +126,6 @@ func (user *User) Edit(ctx aero.Context, key string, value reflect.Value, newVal
|
||||
user.Accounts.Discord.Verified = false
|
||||
}
|
||||
|
||||
return true, nil
|
||||
|
||||
case "Accounts.Overwatch.BattleTag":
|
||||
newBattleTag := newValue.String()
|
||||
value.SetString(newBattleTag)
|
||||
|
||||
if newBattleTag == "" {
|
||||
user.Accounts.Overwatch.SkillRating = 0
|
||||
user.Accounts.Overwatch.Tier = ""
|
||||
} else {
|
||||
// Refresh Overwatch info if the battletag changed
|
||||
go func() {
|
||||
err := user.RefreshOverwatchInfo()
|
||||
|
||||
if err != nil {
|
||||
color.Red("Error refreshing Overwatch info of user '%s' with Overwatch battle tag '%s': %v", user.Nick, newBattleTag, err)
|
||||
return
|
||||
}
|
||||
|
||||
color.Green("Refreshed Overwatch info of user '%s' with Overwatch battle tag '%s': %v", user.Nick, newBattleTag, user.Accounts.Overwatch.SkillRating)
|
||||
user.Save()
|
||||
}()
|
||||
}
|
||||
|
||||
return true, nil
|
||||
|
||||
case "Accounts.FinalFantasyXIV.Nick", "Accounts.FinalFantasyXIV.Server":
|
||||
newValue := newValue.String()
|
||||
value.SetString(newValue)
|
||||
|
||||
if newValue == "" {
|
||||
user.Accounts.FinalFantasyXIV.Class = ""
|
||||
user.Accounts.FinalFantasyXIV.Level = 0
|
||||
user.Accounts.FinalFantasyXIV.ItemLevel = 0
|
||||
} else if user.Accounts.FinalFantasyXIV.Nick != "" && user.Accounts.FinalFantasyXIV.Server != "" {
|
||||
// Refresh FinalFantasyXIV info if the name or server changed
|
||||
go func() {
|
||||
err := user.RefreshFFXIVInfo()
|
||||
|
||||
if err != nil {
|
||||
color.Red("Error refreshing FinalFantasy XIV info of user '%s' with nick '%s' on server '%s': %v", user.Nick, user.Accounts.FinalFantasyXIV.Nick, user.Accounts.FinalFantasyXIV.Server, err)
|
||||
return
|
||||
}
|
||||
|
||||
user.Save()
|
||||
}()
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
@ -183,28 +134,6 @@ func (user *User) Edit(ctx aero.Context, key string, value reflect.Value, newVal
|
||||
newNick := newValue.String()
|
||||
newNick = autocorrect.AccountNick(newNick)
|
||||
value.SetString(newNick)
|
||||
|
||||
// Refresh osu info if the name changed
|
||||
if key == "Accounts.Osu.Nick" {
|
||||
if newNick == "" {
|
||||
user.Accounts.Osu.PP = 0
|
||||
user.Accounts.Osu.Level = 0
|
||||
user.Accounts.Osu.Accuracy = 0
|
||||
} else {
|
||||
go func() {
|
||||
err := user.RefreshOsuInfo()
|
||||
|
||||
if err != nil {
|
||||
color.Red("Error refreshing osu info of user '%s' with osu nick '%s': %v", user.Nick, newNick, err)
|
||||
return
|
||||
}
|
||||
|
||||
color.Green("Refreshed osu info of user '%s' with osu nick '%s': %v", user.Nick, newNick, user.Accounts.Osu.PP)
|
||||
user.Save()
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
|
@ -1,78 +1,5 @@
|
||||
package arn
|
||||
|
||||
// Register a list of gaming servers.
|
||||
func init() {
|
||||
DataLists["ffxiv-servers"] = []*Option{
|
||||
{"", ""},
|
||||
{"Adamantoise", "Adamantoise"},
|
||||
{"Aegis", "Aegis"},
|
||||
{"Alexander", "Alexander"},
|
||||
{"Anima", "Anima"},
|
||||
{"Asura", "Asura"},
|
||||
{"Atomos", "Atomos"},
|
||||
{"Bahamut", "Bahamut"},
|
||||
{"Balmung", "Balmung"},
|
||||
{"Behemoth", "Behemoth"},
|
||||
{"Belias", "Belias"},
|
||||
{"Brynhildr", "Brynhildr"},
|
||||
{"Cactuar", "Cactuar"},
|
||||
{"Carbuncle", "Carbuncle"},
|
||||
{"Cerberus", "Cerberus"},
|
||||
{"Chocobo", "Chocobo"},
|
||||
{"Coeurl", "Coeurl"},
|
||||
{"Diabolos", "Diabolos"},
|
||||
{"Durandal", "Durandal"},
|
||||
{"Excalibur", "Excalibur"},
|
||||
{"Exodus", "Exodus"},
|
||||
{"Faerie", "Faerie"},
|
||||
{"Famfrit", "Famfrit"},
|
||||
{"Fenrir", "Fenrir"},
|
||||
{"Garuda", "Garuda"},
|
||||
{"Gilgamesh", "Gilgamesh"},
|
||||
{"Goblin", "Goblin"},
|
||||
{"Gungnir", "Gungnir"},
|
||||
{"Hades", "Hades"},
|
||||
{"Hyperion", "Hyperion"},
|
||||
{"Ifrit", "Ifrit"},
|
||||
{"Ixion", "Ixion"},
|
||||
{"Jenova", "Jenova"},
|
||||
{"Kujata", "Kujata"},
|
||||
{"Lamia", "Lamia"},
|
||||
{"Leviathan", "Leviathan"},
|
||||
{"Lich", "Lich"},
|
||||
{"Louisoix", "Louisoix"},
|
||||
{"Malboro", "Malboro"},
|
||||
{"Mandragora", "Mandragora"},
|
||||
{"Masamune", "Masamune"},
|
||||
{"Mateus", "Mateus"},
|
||||
{"Midgardsormr", "Midgardsormr"},
|
||||
{"Moogle", "Moogle"},
|
||||
{"Odin", "Odin"},
|
||||
{"Omega", "Omega"},
|
||||
{"Pandaemonium", "Pandaemonium"},
|
||||
{"Phoenix", "Phoenix"},
|
||||
{"Ragnarok", "Ragnarok"},
|
||||
{"Ramuh", "Ramuh"},
|
||||
{"Ridill", "Ridill"},
|
||||
{"Sargatanas", "Sargatanas"},
|
||||
{"Shinryu", "Shinryu"},
|
||||
{"Shiva", "Shiva"},
|
||||
{"Siren", "Siren"},
|
||||
{"Tiamat", "Tiamat"},
|
||||
{"Titan", "Titan"},
|
||||
{"Tonberry", "Tonberry"},
|
||||
{"Typhon", "Typhon"},
|
||||
{"Ultima", "Ultima"},
|
||||
{"Ultros", "Ultros"},
|
||||
{"Unicorn", "Unicorn"},
|
||||
{"Valefor", "Valefor"},
|
||||
{"Yojimbo", "Yojimbo"},
|
||||
{"Zalera", "Zalera"},
|
||||
{"Zeromus", "Zeromus"},
|
||||
{"Zodiark", "Zodiark"},
|
||||
}
|
||||
}
|
||||
|
||||
// UserAccounts represents a user's accounts on external services.
|
||||
type UserAccounts struct {
|
||||
Facebook struct {
|
||||
@ -93,27 +20,6 @@ type UserAccounts struct {
|
||||
Verified bool `json:"verified"`
|
||||
} `json:"discord"`
|
||||
|
||||
Osu struct {
|
||||
Nick string `json:"nick" editable:"true"`
|
||||
PP float64 `json:"pp"`
|
||||
Accuracy float64 `json:"accuracy"`
|
||||
Level float64 `json:"level"`
|
||||
} `json:"osu"`
|
||||
|
||||
Overwatch struct {
|
||||
BattleTag string `json:"battleTag" editable:"true"`
|
||||
SkillRating int `json:"skillRating"`
|
||||
Tier string `json:"tier"`
|
||||
} `json:"overwatch"`
|
||||
|
||||
FinalFantasyXIV struct {
|
||||
Nick string `json:"nick" editable:"true"`
|
||||
Server string `json:"server" editable:"true" datalist:"ffxiv-servers"`
|
||||
Class string `json:"class"`
|
||||
Level int `json:"level"`
|
||||
ItemLevel int `json:"itemLevel"`
|
||||
} `json:"ffxiv"`
|
||||
|
||||
AniList struct {
|
||||
Nick string `json:"nick" editable:"true"`
|
||||
} `json:"anilist"`
|
||||
|
@ -31,9 +31,7 @@ In the past it was, but not anymore. We're growing bigger by establishing a data
|
||||
* Quotes
|
||||
* Companies
|
||||
* Detailed anime rating system
|
||||
* [twist.moe](https://twist.moe) integration
|
||||
* [anilist.co](https://anilist.co/), [myanimelist.net](https://myanimelist.net/) and [kitsu.io](https://kitsu.io/) import
|
||||
* [osu](https://osu.ppy.sh/) ranking view
|
||||
* [Gravatar](https://gravatar.com) support
|
||||
|
||||
## Can I follow the project on social media?
|
||||
@ -245,4 +243,4 @@ Sure, the setup to start contributing is not that hard. Try to get in contact wi
|
||||
|
||||
## Can I apply to be a data mod / editor?
|
||||
|
||||
Sure, just contact me on Discord if you want to help out with the database.
|
||||
Sure, just contact me on Discord if you want to help out with the database.
|
||||
|
3
go.mod
3
go.mod
@ -31,12 +31,9 @@ require (
|
||||
github.com/akyoto/stringutils v0.3.1
|
||||
github.com/akyoto/webpush-go v0.1.2
|
||||
github.com/animenotifier/anilist v0.2.6
|
||||
github.com/animenotifier/ffxiv v0.2.2
|
||||
github.com/animenotifier/japanese v0.2.5
|
||||
github.com/animenotifier/kitsu v0.2.4
|
||||
github.com/animenotifier/mal v0.2.5
|
||||
github.com/animenotifier/osu v0.1.2
|
||||
github.com/animenotifier/overwatch v0.1.3
|
||||
github.com/animenotifier/shoboi v0.2.4
|
||||
github.com/animenotifier/twist v0.2.6
|
||||
github.com/bwmarrin/discordgo v0.22.0
|
||||
|
6
go.sum
6
go.sum
@ -154,18 +154,12 @@ github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x0
|
||||
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
|
||||
github.com/animenotifier/anilist v0.2.6 h1:L1M7fcgy+gAShscnHucz+Jn3nM1hOQKWZxuyhLatBBo=
|
||||
github.com/animenotifier/anilist v0.2.6/go.mod h1:fzOQXacU6rHnVoLFZaercp26BwNZDWkB6MocbNst5mY=
|
||||
github.com/animenotifier/ffxiv v0.2.2 h1:pW0TRqgjqNbZ8K8UskGWiTP43GdLD6hlzdfmxGdjsDk=
|
||||
github.com/animenotifier/ffxiv v0.2.2/go.mod h1:JdnHHGD9W6QLdZWf38fw1jIqDRemr5dthlr5RKdmipE=
|
||||
github.com/animenotifier/japanese v0.2.5 h1:3crv70AzmrTiJCI6SG9rUeFS2T3FXdxKwvRjjUa/74g=
|
||||
github.com/animenotifier/japanese v0.2.5/go.mod h1:Xmhi5U+JbRuqmHzFB1zTMfA3SM35hKmzC0Z2J2q8SH0=
|
||||
github.com/animenotifier/kitsu v0.2.4 h1:YFVUR0EPSbSljjgEWtf4Hz72cCFgGyxOpjPc+64EsWA=
|
||||
github.com/animenotifier/kitsu v0.2.4/go.mod h1:9ymFP+JgXlIYJ+hvaZMut9M4jHXdteYG+7/dk4XggQY=
|
||||
github.com/animenotifier/mal v0.2.5 h1:/Op5CCSlvLUIcUo5NvmuuL76Cgv39hemT5k/VF8+4EA=
|
||||
github.com/animenotifier/mal v0.2.5/go.mod h1:M0KDAALEJ/hEqOxWNkdb4UuCZcnBc+jsYI/MEyh8KIQ=
|
||||
github.com/animenotifier/osu v0.1.2 h1:TJe5JzxCjZUGXfEkna+BlwK7twF92sD7UASIup/UaEQ=
|
||||
github.com/animenotifier/osu v0.1.2/go.mod h1:QzxS8BM8UQ/7IJgtIuMAUZMMtAO2wqv7TGq+pe7lGDs=
|
||||
github.com/animenotifier/overwatch v0.1.3 h1:m6owBEba2WRImY3dtj8Oo678+j29lnoRdctvBIXIvLw=
|
||||
github.com/animenotifier/overwatch v0.1.3/go.mod h1:Y5NI0Y4+c7vTCwTpqgldSqQqyA59Cx8uMNwsc3ZVqxk=
|
||||
github.com/animenotifier/shoboi v0.2.4 h1:eM9R/kQJgQzvcTSgxSFCpFyp8wqRxUXUk69cLd73gwM=
|
||||
github.com/animenotifier/shoboi v0.2.4/go.mod h1:bWC3/vIc8NR1mvflm/HEH79rIq+AZMoRnWqLN2NKtBM=
|
||||
github.com/animenotifier/twist v0.2.6 h1:CSrpScSwLTjR37kCFwAzIe84sA47fXaRHL3qGKCE9wQ=
|
||||
|
@ -1,33 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/akyoto/color"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
"github.com/animenotifier/notify.moe/arn/stringutils"
|
||||
)
|
||||
|
||||
var tickerFFXIV = time.NewTicker(1100 * time.Millisecond)
|
||||
|
||||
func ffxiv(user *arn.User) {
|
||||
fmt.Println("[FFXIV]", user.Nick, user.Accounts.FinalFantasyXIV.Nick, user.Accounts.FinalFantasyXIV.Server)
|
||||
|
||||
// Fetch new info
|
||||
err := user.RefreshFFXIVInfo()
|
||||
|
||||
if err != nil {
|
||||
color.Red(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Log it
|
||||
stringutils.PrettyPrint(user.Accounts.FinalFantasyXIV)
|
||||
|
||||
// Save in database
|
||||
user.Save()
|
||||
|
||||
// Wait for rate limiter
|
||||
<-tickerFFXIV.C
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/akyoto/color"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
"github.com/animenotifier/notify.moe/arn/stringutils"
|
||||
)
|
||||
|
||||
var tickerOsu = time.NewTicker(500 * time.Millisecond)
|
||||
|
||||
func osu(user *arn.User) {
|
||||
fmt.Println("[Osu]", user.Nick, user.Accounts.Osu.Nick)
|
||||
|
||||
// Fetch new info
|
||||
err := user.RefreshOsuInfo()
|
||||
|
||||
if err != nil {
|
||||
color.Red(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Log it
|
||||
stringutils.PrettyPrint(user.Accounts.Osu)
|
||||
|
||||
// Save in database
|
||||
user.Save()
|
||||
|
||||
// Wait for rate limiter
|
||||
<-tickerOsu.C
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/akyoto/color"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
"github.com/animenotifier/notify.moe/arn/stringutils"
|
||||
)
|
||||
|
||||
var tickerOW = time.NewTicker(1100 * time.Millisecond)
|
||||
|
||||
func overwatch(user *arn.User) {
|
||||
fmt.Println("[Overwatch]", user.Nick, user.Accounts.Overwatch.BattleTag)
|
||||
|
||||
// Fetch new info
|
||||
err := user.RefreshOverwatchInfo()
|
||||
|
||||
if err != nil {
|
||||
color.Red(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Log it
|
||||
stringutils.PrettyPrint(user.Accounts.Overwatch)
|
||||
|
||||
// Save in database
|
||||
user.Save()
|
||||
|
||||
// Wait for rate limiter
|
||||
<-tickerOW.C
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/akyoto/color"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
func main() {
|
||||
color.Yellow("Refreshing game information")
|
||||
|
||||
defer color.Green("Finished.")
|
||||
defer arn.Node.Close()
|
||||
|
||||
for user := range arn.StreamUsers() {
|
||||
if user.Accounts.Osu.Nick != "" {
|
||||
osu(user)
|
||||
}
|
||||
|
||||
if user.Accounts.Overwatch.BattleTag != "" {
|
||||
overwatch(user)
|
||||
}
|
||||
|
||||
if user.Accounts.FinalFantasyXIV.Nick != "" && user.Accounts.FinalFantasyXIV.Server != "" {
|
||||
ffxiv(user)
|
||||
}
|
||||
}
|
||||
}
|
@ -12,9 +12,6 @@ func Register(app *aero.Application) {
|
||||
page.Get(app, "/users", users.Active)
|
||||
page.Get(app, "/users/map", users.Map)
|
||||
page.Get(app, "/users/noavatar", users.ActiveNoAvatar)
|
||||
page.Get(app, "/users/games/osu", users.Osu)
|
||||
page.Get(app, "/users/games/overwatch", users.Overwatch)
|
||||
page.Get(app, "/users/games/ffxiv", users.FFXIV)
|
||||
page.Get(app, "/users/staff", users.Staff)
|
||||
page.Get(app, "/users/pro", users.Pro)
|
||||
page.Get(app, "/users/editors", users.Editors)
|
||||
|
@ -198,18 +198,6 @@ component ProfileTags(viewUser *arn.User, animeList *arn.AnimeList, user *arn.Us
|
||||
if viewUser.Website != ""
|
||||
a.profile-tag.tip.mountable.never-unmount.show-more(href=viewUser.WebsiteURL(), target="_blank", rel="noopener", aria-label=viewUser.WebsiteShortURL(), data-mountable-type="header")
|
||||
RawIcon("globe")
|
||||
|
||||
if viewUser.Accounts.Osu.Nick != "" && viewUser.Accounts.Osu.PP >= 100
|
||||
a.profile-tag.tip.mountable.never-unmount.show-more(href="https://osu.ppy.sh/u/" + viewUser.Accounts.Osu.Nick, aria-label=fmt.Sprintf("osu! | %.0f pp | Level %.0f | Accuracy: %.1f%%", viewUser.Accounts.Osu.PP, viewUser.Accounts.Osu.Level, viewUser.Accounts.Osu.Accuracy), target="_blank", rel="noopener", data-mountable-type="header")
|
||||
RawIcon("trophy")
|
||||
|
||||
if viewUser.Accounts.Overwatch.BattleTag != "" && viewUser.Accounts.Overwatch.SkillRating >= 1000
|
||||
a.profile-tag.tip.mountable.never-unmount.show-more(href="https://playoverwatch.com/en-us/career/pc/" + strings.Replace(viewUser.Accounts.Overwatch.BattleTag, "#", "-", 1), aria-label=fmt.Sprintf("Overwatch | %d SR | %s", viewUser.Accounts.Overwatch.SkillRating, stringutils.Capitalize(viewUser.Accounts.Overwatch.Tier)), target="_blank", rel="noopener", data-mountable-type="header")
|
||||
RawIcon("overwatch")
|
||||
|
||||
if viewUser.Accounts.FinalFantasyXIV.Nick != "" && viewUser.Accounts.FinalFantasyXIV.Class != ""
|
||||
.profile-tag.tip.mountable.never-unmount.show-more(aria-label=fmt.Sprintf("Final Fantasy XIV | %s | Level %d | IL %d", viewUser.Accounts.FinalFantasyXIV.Class, viewUser.Accounts.FinalFantasyXIV.Level, viewUser.Accounts.FinalFantasyXIV.ItemLevel), data-mountable-type="header")
|
||||
RawIcon("gamepad")
|
||||
|
||||
if viewUser.Accounts.Discord.Nick != "" && viewUser.Accounts.Discord.Verified
|
||||
a.profile-tag.tip.mountable.never-unmount.show-more(href="https://discord.gg/0kimAmMCeXGXuzNF", aria-label=fmt.Sprintf("Discord | %s", viewUser.Accounts.Discord.Nick), data-mountable-type="header")
|
||||
@ -231,4 +219,4 @@ component ProfileTags(viewUser *arn.User, animeList *arn.AnimeList, user *arn.Us
|
||||
|
||||
if user != nil && user.Role == "admin"
|
||||
a.profile-tag.tip.mountable.never-unmount.show-more(href="/api/user/" + viewUser.ID, aria-label="API", target="_blank", rel="noopener", data-mountable-type="header")
|
||||
RawIcon("search-plus")
|
||||
RawIcon("search-plus")
|
||||
|
@ -13,16 +13,6 @@ component SettingsAccounts(user *arn.User)
|
||||
InputText("Accounts.Kitsu.Nick", user.Accounts.Kitsu.Nick, "Kitsu", "Your username on kitsu.io", 30)
|
||||
InputText("Accounts.MyAnimeList.Nick", user.Accounts.MyAnimeList.Nick, "MyAnimeList", "Your username on myanimelist.net", 30)
|
||||
InputText("Accounts.Discord.Nick", user.Accounts.Discord.Nick, "Discord", "Your username on Discord", 30)
|
||||
|
||||
.widget.mountable(data-api="/api/user/" + user.ID)
|
||||
h3.widget-title
|
||||
Icon("gamepad")
|
||||
span Games
|
||||
|
||||
InputText("Accounts.FinalFantasyXIV.Nick", user.Accounts.FinalFantasyXIV.Nick, "Final Fantasy XIV", "Your character name on FFXIV", 30)
|
||||
InputSelection("Accounts.FinalFantasyXIV.Server", user.Accounts.FinalFantasyXIV.Server, "Final Fantasy XIV - World", "Your server/world on FFXIV", arn.DataLists["ffxiv-servers"])
|
||||
InputText("Accounts.Osu.Nick", user.Accounts.Osu.Nick, "Osu", "Your username on osu.ppy.sh", 30)
|
||||
InputText("Accounts.Overwatch.BattleTag", user.Accounts.Overwatch.BattleTag, "Overwatch", "Your battletag on Overwatch", 30)
|
||||
|
||||
.widget.mountable
|
||||
h3.widget-title
|
||||
@ -80,10 +70,3 @@ component SettingsAccounts(user *arn.User)
|
||||
a.button(href="/api/animelist/" + user.ID, target="_blank")
|
||||
Icon("upload")
|
||||
span Export anime list as JSON
|
||||
|
||||
.widget.mountable
|
||||
h3.widget-title
|
||||
Icon("refresh")
|
||||
span Sync
|
||||
|
||||
footer.footer Reserved for upcoming features.
|
@ -44,20 +44,7 @@ component SoundTrackPage(track *arn.SoundTrack, relatedTracks []*arn.SoundTrack,
|
||||
each relatedTrack in relatedTracks
|
||||
li
|
||||
a(href=relatedTrack.Link())= relatedTrack.TitleByUser(user)
|
||||
|
||||
//- TODO: This is quite ineffective, performance-wise
|
||||
if len(track.OsuBeatmaps()) > 0 || len(track.EtternaBeatmaps()) > 0
|
||||
.widget.mountable
|
||||
h3.widget-title Beatmaps
|
||||
ul.beatmaps
|
||||
for index, beatmap := range track.OsuBeatmaps()
|
||||
li
|
||||
a.beatmap(href="https://osu.ppy.sh/s/" + beatmap, target="_blank")= "Osu Beatmap #" + strconv.Itoa(index + 1)
|
||||
|
||||
for index, beatmap := range track.EtternaBeatmaps()
|
||||
li
|
||||
a.beatmap(href="https://etternaonline.com/song/view/" + beatmap, target="_blank")= "Etterna Beatmap #" + strconv.Itoa(index + 1)
|
||||
|
||||
|
||||
.widget.mountable
|
||||
h3.widget-title Tags
|
||||
|
||||
|
@ -1,8 +0,0 @@
|
||||
component FinalFantasyXIVRankingList(users []*arn.User, url string)
|
||||
h1.page-title Final Fantasy XIV ranking list
|
||||
UsersTabs(url)
|
||||
|
||||
.user-cards
|
||||
each user in users
|
||||
UserCard(user, fmt.Sprintf("%s (iLvl %d)", user.Accounts.FinalFantasyXIV.Class, user.Accounts.FinalFantasyXIV.ItemLevel))
|
||||
|
@ -1,8 +0,0 @@
|
||||
component OsuRankingList(users []*arn.User, url string)
|
||||
h1.page-title osu! ranking list
|
||||
UsersTabs(url)
|
||||
|
||||
.user-cards
|
||||
each user in users
|
||||
UserCard(user, fmt.Sprintf("%s pp (%.1f%%)", humanize.Comma(int64(user.Accounts.Osu.PP + 0.5)), user.Accounts.Osu.Accuracy))
|
||||
|
@ -1,8 +0,0 @@
|
||||
component OverwatchRankingList(users []*arn.User, url string)
|
||||
h1.page-title Overwatch ranking list
|
||||
UsersTabs(url)
|
||||
|
||||
.user-cards
|
||||
each user in users
|
||||
UserCard(user, fmt.Sprintf("%s (%d SR)", strings.Title(user.Accounts.Overwatch.Tier), user.Accounts.Overwatch.SkillRating))
|
||||
|
@ -86,48 +86,6 @@ func ActiveNoAvatar(ctx aero.Context) error {
|
||||
return ctx.HTML(components.Users(users, followCount, ctx.Path()))
|
||||
}
|
||||
|
||||
// Osu ...
|
||||
func Osu(ctx aero.Context) error {
|
||||
users := arn.FilterUsers(func(user *arn.User) bool {
|
||||
return user.HasAvatar() && user.HasNick() && user.IsActive() && user.Accounts.Osu.PP > 0
|
||||
})
|
||||
|
||||
// Sort by pp
|
||||
sort.Slice(users, func(i, j int) bool {
|
||||
return users[i].Accounts.Osu.PP > users[j].Accounts.Osu.PP
|
||||
})
|
||||
|
||||
return ctx.HTML(components.OsuRankingList(users, ctx.Path()))
|
||||
}
|
||||
|
||||
// Overwatch ...
|
||||
func Overwatch(ctx aero.Context) error {
|
||||
users := arn.FilterUsers(func(user *arn.User) bool {
|
||||
return user.HasAvatar() && user.HasNick() && user.IsActive() && user.Accounts.Overwatch.SkillRating > 0
|
||||
})
|
||||
|
||||
// Sort by Skill Ratings
|
||||
sort.Slice(users, func(i, j int) bool {
|
||||
return users[i].Accounts.Overwatch.SkillRating > users[j].Accounts.Overwatch.SkillRating
|
||||
})
|
||||
|
||||
return ctx.HTML(components.OverwatchRankingList(users, ctx.Path()))
|
||||
}
|
||||
|
||||
// FFXIV ...
|
||||
func FFXIV(ctx aero.Context) error {
|
||||
users := arn.FilterUsers(func(user *arn.User) bool {
|
||||
return user.HasAvatar() && user.HasNick() && user.IsActive() && user.Accounts.FinalFantasyXIV.ItemLevel > 0
|
||||
})
|
||||
|
||||
// Sort by item level
|
||||
sort.Slice(users, func(i, j int) bool {
|
||||
return users[i].Accounts.FinalFantasyXIV.ItemLevel > users[j].Accounts.FinalFantasyXIV.ItemLevel
|
||||
})
|
||||
|
||||
return ctx.HTML(components.FinalFantasyXIVRankingList(users, ctx.Path()))
|
||||
}
|
||||
|
||||
// ByCountry ...
|
||||
func ByCountry(ctx aero.Context) error {
|
||||
countryName := ctx.Get("country")
|
||||
|
@ -48,14 +48,7 @@ component StaffRecruitment
|
||||
component UsersTabs(url string)
|
||||
.tabs
|
||||
Tab("Active", "users", "/users")
|
||||
Tab("Games", "gamepad", "/users/games/osu")
|
||||
Tab("Editors", "pencil", "/users/editors")
|
||||
Tab("Supporters", "heart", "/users/pro")
|
||||
Tab("Staff", "user-secret", "/users/staff")
|
||||
//- Tab("Map", "map", "/users/map")
|
||||
|
||||
if strings.Contains(url, "/users/games")
|
||||
.tabs
|
||||
Tab("Osu", "gamepad", "/users/games/osu")
|
||||
Tab("Overwatch", "overwatch", "/users/games/overwatch")
|
||||
Tab("FFXIV", "gamepad", "/users/games/ffxiv")
|
Loading…
Reference in New Issue
Block a user