mirror of
https://github.com/idanoo/go-mastodon-stats
synced 2025-07-02 22:32:19 +00:00
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package gomastodonstats
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/mattn/go-mastodon"
|
|
)
|
|
|
|
func doTheRegisterThing() {
|
|
srv, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
|
|
Server: fmt.Sprintf("https://%s", MASTODON_INSTANCE_URL),
|
|
ClientName: MASTODON_CLIENT_NAME,
|
|
Scopes: "read write follow",
|
|
RedirectURIs: "urn:ietf:wg:oauth:2.0:oob",
|
|
Website: "https://github.com/mattn/go-mastodon",
|
|
})
|
|
if err != nil {
|
|
log.Fatal("Couldn't register the app. Error: %v\n\nExiting...\n", err)
|
|
}
|
|
|
|
log.Println(
|
|
"Pls open this link: %s\n\n" + srv.AuthURI +
|
|
"When completeAdd this to your config under MASTODON_TOKEN and rerun the app")
|
|
os.Exit(0)
|
|
}
|
|
|
|
func postToMastodon(metrics []metric) {
|
|
if MASTODON_INSTANCE_URL == "" {
|
|
log.Printf("Skipping posting to mastodon. Missing configuration")
|
|
return
|
|
}
|
|
|
|
c := mastodon.NewClient(&mastodon.Config{
|
|
Server: fmt.Sprintf("https://%s", MASTODON_INSTANCE_URL),
|
|
ClientID: MASTODON_CLIENT_ID,
|
|
ClientSecret: MASTODON_CLIENT_SECRET,
|
|
})
|
|
|
|
err := c.Authenticate(context.Background(), MASTODON_CLIENT_USERNAME, MASTODON_CLIENT_PASSWORD)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Build status
|
|
startOfDay := getStartofDay()
|
|
msg := fmt.Sprintf("User counts for %s :laserkiwi:\n\n", startOfDay.String())
|
|
for _, m := range metrics {
|
|
msg = msg + getPrintableString(m) + "\n"
|
|
}
|
|
msg = msg + "\n\n" + "#DailyStats"
|
|
|
|
toot := &mastodon.Toot{
|
|
Status: msg,
|
|
}
|
|
|
|
_, err = c.PostStatus(context.Background(), toot)
|
|
if err != nil {
|
|
log.Print(err)
|
|
}
|
|
}
|