Library to listen Plex Webhook Events and execute actions.
Plex Webhooks require a Plex Pass subscription
Use the library in your own app to register your actions.
go get github.com/acamilleri/go-plexhooks
You can check a real world example with myplexhooks repository.
Example:
package main
import (
"net"
"github.com/sirupsen/logrus"
"github.com/acamilleri/go-plexhooks"
"github.com/acamilleri/go-plexhooks/plex"
)
type MyActionOnMediaPlay struct{}
func (a *MyActionOnMediaPlay) Name() string {
return "MyActionOnMediaPlay"
}
func (a *MyActionOnMediaPlay) Execute(event plex.Event) error {
fmt.Printf("I'm print a message when i received a MediaPlay event")
return nil
}
func main() {
listenAddr, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:8080")
if err != nil {
panic(err)
}
actions := plexhooks.NewActions()
actions.Add(plex.MediaPlay, &MyActionOnMediaPlay{})
app := plexhooks.New(plexhooks.Definition{
ListenAddr: listenAddr,
Actions: actions,
Logger: plexhooks.LoggerDefinition{
Level: logrus.InfoLevel,
Formatter: &logrus.JSONFormatter{},
},
})
err := app.Run()
if err != nil {
panic(err)
}
}
The Run function running a metrics handler to have some metrics about the events handler and actions executed.
Metrics are expose at /metrics
path in Prometheus format.
You can find all metrics available here
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.