Skip to content

Commit

Permalink
change RP library
Browse files Browse the repository at this point in the history
Will allow for a proper reconnecting after Discord connection was lost and other sweetnesses
  • Loading branch information
Arno500 committed Feb 28, 2024
1 parent 4fa78b0 commit c970c29
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 180 deletions.
38 changes: 16 additions & 22 deletions discord/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,32 @@ import (
"time"

"github.com/Arno500/go-plex-client"
discord "github.com/hugolgst/rich-go/client"
discordRP "github.com/fawni/rp"
rpc "github.com/fawni/rp/rpc"
i18npkg "github.com/nicksnyder/go-i18n/v2/i18n"
"gitlab.com/Arno500/plex-richpresence/i18n"
"gitlab.com/Arno500/plex-richpresence/settings"
"gitlab.com/Arno500/plex-richpresence/types"
)

var currentPlayState types.PlayState
var discord *rpc.Client

// InitDiscordClient prepares Discord's RPC API to allow Rich Presence
func InitDiscordClient() {
if currentPlayState.DiscordConnected {
return
}
err := discord.Login("803556010307616788")
if err != nil {
log.Println(err)
return
if (discord == nil) {
discordInstance, err := discordRP.NewClient("803556010307616788")
if err != nil {
log.Println(err)
return
}
discord = discordInstance
}
currentPlayState.DiscordConnected = true
}

// LogoutDiscordClient logout from Discord
func LogoutDiscordClient() {
if currentPlayState.DiscordConnected {
currentPlayState.DiscordConnected = false
discord.Logout()
}
discord.Logout()
}

func getThumbnailLink(thumbKey string, plexInstance *plex.Plex) string {
Expand Down Expand Up @@ -76,13 +74,10 @@ func getThumbnailLink(thumbKey string, plexInstance *plex.Plex) string {
// SetRichPresence allows to send Rich Presence informations to Plex from a session info
func SetRichPresence(session types.PlexStableSession) {
InitDiscordClient()
if !currentPlayState.DiscordConnected {
return
}
now := time.Now()
currentPlayState.Alteration.Item = false
currentPlayState.Alteration.Time = false
activityInfos := discord.Activity{
activityInfos := rpc.Activity{
LargeImage: "plex",
LargeText: "Plex",
}
Expand Down Expand Up @@ -120,7 +115,7 @@ func SetRichPresence(session types.PlexStableSession) {
currentPlayState.Alteration.Time = true
currentPlayState.LastCalculatedTime = calculatedStartTime
}
activityInfos.Timestamps = &discord.Timestamps{
activityInfos.Timestamps = &rpc.Timestamps{
Start: &calculatedStartTime,
}
} else if settings.StoredSettings.TimeMode == "remaining" {
Expand All @@ -132,7 +127,7 @@ func SetRichPresence(session types.PlexStableSession) {
currentPlayState.Alteration.Time = true
currentPlayState.LastCalculatedTime = calculatedEndTime
}
activityInfos.Timestamps = &discord.Timestamps{
activityInfos.Timestamps = &rpc.Timestamps{
Start: &calculatedEndTime,
End: &calculatedEndTime,
}
Expand Down Expand Up @@ -178,7 +173,7 @@ func SetRichPresence(session types.PlexStableSession) {
activityInfos.State = session.Media.GrandparentTitle
}
activityInfos.LargeImage = getThumbnailLink(session.Media.ParentThumbnail, session.PlexInstance)
activityInfos.Buttons = append(activityInfos.Buttons, &discord.Button{
activityInfos.Buttons = append(activityInfos.Buttons, &rpc.Button{
Label: i18n.Localizer.MustLocalize(&i18npkg.LocalizeConfig{
DefaultMessage: &i18npkg.Message{
ID: "TrackDetails",
Expand All @@ -203,10 +198,9 @@ func SetRichPresence(session types.PlexStableSession) {
activityInfos.State = session.Media.Title
activityInfos.SmallText = "Preroll"
}
err := discord.SetActivity(activityInfos)
err := discord.SetActivity(&activityInfos)
if err != nil {
log.Printf("An error occured when setting the activity in Discord: %v", err)
currentPlayState.DiscordConnected = false
} else {
log.Printf("Discord activity set")
}
Expand Down
12 changes: 1 addition & 11 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ require (
github.com/aws/aws-sdk-go v1.50.23
github.com/cubiest/jibberjabber v1.0.1
github.com/emersion/go-autostart v0.0.0-20210130080809-00ed301c8e9a
github.com/fawni/rp v0.3.1
github.com/gen2brain/beeep v0.0.0-20240112042604-c7bb2cd88fea
github.com/google/uuid v1.6.0
github.com/hashicorp/go-version v1.6.0
github.com/hugolgst/rich-go v0.0.0-20230917173849-4a4fb1d3c362
github.com/nekr0z/systray v1.1.1-0.20210610115307-891b38719d73
github.com/nicksnyder/go-i18n/v2 v2.4.0
github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0
Expand All @@ -19,16 +19,8 @@ require (
)

require (
github.com/BurntSushi/toml v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/koffeinsource/go-klogger v0.1.1 // indirect
github.com/nxadm/tail v1.4.11 // indirect
go.opentelemetry.io/otel/metric v1.23.1 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/protobuf v1.32.0 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

require (
Expand All @@ -53,13 +45,11 @@ require (
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect
go.opentelemetry.io/otel v1.23.1 // indirect
go.opentelemetry.io/otel/trace v1.23.1 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/sys v0.17.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)

// replace github.com/Arno500/go-plex-client => C:\Users\arnod\go\src\github.com\Arno500\go-plex-client
Loading

0 comments on commit c970c29

Please sign in to comment.