Compare commits

...

7 Commits

Author SHA1 Message Date
loweel 2ea8bf202b Stripping HTML . 2023-07-15 02:38:55 +02:00
loweel 6978287809 Clean FS 2023-07-15 02:16:58 +02:00
loweel 1b2fa17294 Updated Readme 2023-07-15 02:15:22 +02:00
loweel 5644a4fb3c Better paging. 2023-07-15 02:04:50 +02:00
loweel a50d6c91ea Filtering corrupted xml 2023-07-15 01:06:56 +02:00
loweel fedc958926 Better fix 2023-07-15 00:37:54 +02:00
loweel 34caf24f6c Fix issue with UpdateDate 2023-07-15 00:25:03 +02:00
10 changed files with 81 additions and 40 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
*.sh
zorg.conf
zorg
feeds.conf
.vscode/*

View File

@ -12,47 +12,18 @@ go build
```
in order to use it, you need app credentials for your specific pod, which you obtain when you register your app.
In case your pod makes it too complicate, you can just use the following go :
```
package main
import (
"context"
"fmt"
"log"
"github.com/mattn/go-mastodon"
)
func main() {
app, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
Server: "https://yourpodhere.put",
ClientName: "client-name",
Scopes: "read write follow",
Website: "whereyour application has a website",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("client-id : %s\n", app.ClientID)
fmt.Printf("client-secret: %s\n", app.ClientSecret)
}
```
just change the values to match your pod, and it will print a new ClientID and ClientSecret.
Once you have both, you can just feed the zorg configuration file, which is a JSON, and change his name as zorg.conf
Just leave "default" on your ClientID and secret.
```
{
"ZorgServer":"https://example-pleroma.net",
"ZorgClientID": "aqwfgqubvqerb348hü13vhnrqvqerg1ü3ohrgvqervq",
"ZorgClientSecret": "qergerinqieorjhgqrijhg+3higqirgqirjgqerjgqq",
"ZorgServer": "https://example-pleroma.net",
"ZorgClientID": "default",
"ZorgClientSecret": "default",
"ZorgUname": "johndoe",
"ZorgPass" : "lalalalalalalala",
"ZorgInterval": 7200

BIN
createtoken/createtoken Executable file

Binary file not shown.

23
createtoken/gettoken.go Normal file
View File

@ -0,0 +1,23 @@
package main
import (
"context"
"fmt"
"log"
"github.com/mattn/go-mastodon"
)
func main() {
app, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
Server: "https://boseburo.ddns.net",
ClientName: "zorg",
Scopes: "read write follow",
Website: "https://git.keinpfusch.net/loweel/zorg.git",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("client-id : %s\n", app.ClientID)
fmt.Printf("client-secret: %s\n", app.ClientSecret)
}

25
env.go
View File

@ -1,11 +1,15 @@
package main
import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"time"
"github.com/mattn/go-mastodon"
)
// ZorgConfig is the configuration of Zorg.
@ -40,6 +44,27 @@ func init() {
Zint = time.Duration(time.Duration(ZorgConfig.ZorgInterval) * time.Second)
ZorgCreateToken()
log.Println("Inizialized ZORG")
}
func ZorgCreateToken() {
app, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
Server: ZorgConfig.ZorgServer,
ClientName: "Zorg",
Scopes: "read write follow",
Website: ZorgConfig.ZorgServer,
})
if err != nil {
log.Fatal(err)
}
ZorgConfig.ZorgClientID = app.ClientID
ZorgConfig.ZorgClientSecret = app.ClientSecret
fmt.Printf("Zorg new client-id : %s\n", ZorgConfig.ZorgClientID)
fmt.Printf("Zorg new client-secret: %s\n", ZorgConfig.ZorgClientSecret)
}

29
feed.go
View File

@ -7,6 +7,7 @@ import (
"os"
"time"
strip "github.com/grokify/html-strip-tags-go"
"github.com/mmcdole/gofeed"
)
@ -26,6 +27,7 @@ func forwardLastFeed(url string) {
}
var b *gofeed.Item
var postAge time.Time
if len(feed.Items) > 0 {
b = feed.Items[0]
@ -34,17 +36,32 @@ func forwardLastFeed(url string) {
return
}
if time.Since(*b.PublishedParsed) < Zint {
postOnMastodon(b.Link, "["+feed.Title+"] "+b.Title)
log.Println("New content from: ", feed.Title, b.Title)
if b.PublishedParsed != nil {
postAge = *b.PublishedParsed
} else if b.UpdatedParsed != nil {
log.Println("Ops, no Published in the feed. Using Update Date")
postAge = *b.UpdatedParsed
} else {
log.Println("No new content from: ", feed.Title)
log.Println("No Published date or update date. This feed is crap, giving up")
postAge = time.Now().Add(Zint + (1 * time.Hour))
}
log.Println("Last Post Age: ", postAge)
if time.Since(postAge) < Zint {
TheTitle := fmt.Sprintf("[News from %s ]", strip.StripTags(feed.Title))
TheBody := fmt.Sprintf("%s \n\n%s \n\n%s", strip.StripTags(b.Author.Name), strip.StripTags(b.Description), b.Link)
postOnMastodon(TheBody, TheTitle)
log.Println("New content from: ", feed.Title, b.Title, feed.Description)
} else {
log.Println("No new content from: ", feed.Title, feed.Description)
}
}
//but we need to iterate on feeds....
// but we need to iterate on feeds....
func feedDaemon() {
ticker := time.NewTicker(Zint)

1
go.mod
View File

@ -3,6 +3,7 @@ module zorg
go 1.13
require (
github.com/grokify/html-strip-tags-go v0.0.1
github.com/mattn/go-mastodon v0.0.4
github.com/mmcdole/gofeed v1.0.0
)

2
go.sum
View File

@ -8,6 +8,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/grokify/html-strip-tags-go v0.0.1 h1:0fThFwLbW7P/kOiTBs03FsJSV9RM2M/Q/MOnCQxKMo0=
github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=

View File

@ -3,6 +3,7 @@ package main
import (
"os"
"os/signal"
"syscall"
)
func main() {
@ -10,7 +11,7 @@ func main() {
// Just a nice way to wait until the Operating system sends a kill signal.
// select{} was just horrible.
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, os.Kill)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
<-c
os.Exit(0)