Update to snappy v0.5.2
This commit is contained in:
parent
0309c953bd
commit
1880916418
|
@ -1 +1 @@
|
||||||
SN_AUTH_COOKIE=
|
SN_API_KEY=
|
2
db.go
2
db.go
|
@ -5,7 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/ekzyis/sn-goapi"
|
sn "github.com/ekzyis/snappy"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
7
go.mod
7
go.mod
|
@ -3,11 +3,6 @@ module git.ekzyis.com/ekzyis/unpaywall
|
||||||
go 1.21.0
|
go 1.21.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/ekzyis/sn-goapi v0.3.3
|
github.com/ekzyis/snappy v0.5.2
|
||||||
github.com/mattn/go-sqlite3 v1.14.17
|
github.com/mattn/go-sqlite3 v1.14.17
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/joho/godotenv v1.5.1 // indirect
|
|
||||||
github.com/namsral/flag v1.7.4-pre // indirect
|
|
||||||
)
|
|
||||||
|
|
10
go.sum
10
go.sum
|
@ -1,10 +1,4 @@
|
||||||
github.com/ekzyis/sn-goapi v0.3.2 h1:BGY2tOD9IZD40UXUpexysWoC+eLEoUs7JRo9FQ37S6M=
|
github.com/ekzyis/snappy v0.5.2 h1:3dZyj3Kz7fV3OStllq/koL6d5qNfBRK+4UB2L3RNmiQ=
|
||||||
github.com/ekzyis/sn-goapi v0.3.2/go.mod h1:FObbYr/NXgnXNWU+EwiWKoWQy+wAaRS6AoW3NgsJ/Oo=
|
github.com/ekzyis/snappy v0.5.2/go.mod h1:BxJwdGlCwUw0Q5pQzBr59weAIS6pkVdivBBaZkkWTSo=
|
||||||
github.com/ekzyis/sn-goapi v0.3.3 h1:5WHGLyYVPwZ12lQrRD40eM+gjWEpDdgdWTshwL8CDEE=
|
|
||||||
github.com/ekzyis/sn-goapi v0.3.3/go.mod h1:FObbYr/NXgnXNWU+EwiWKoWQy+wAaRS6AoW3NgsJ/Oo=
|
|
||||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
|
||||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
|
||||||
github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM=
|
github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM=
|
||||||
github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
||||||
github.com/namsral/flag v1.7.4-pre h1:b2ScHhoCUkbsq0d2C15Mv+VU8bl8hAXV8arnWiOHNZs=
|
|
||||||
github.com/namsral/flag v1.7.4-pre/go.mod h1:OXldTctbM6SWH1K899kPZcf65KxJiD7MsceFUpB5yDo=
|
|
||||||
|
|
81
main.go
81
main.go
|
@ -1,13 +1,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ekzyis/sn-goapi"
|
sn "github.com/ekzyis/snappy"
|
||||||
)
|
)
|
||||||
|
|
||||||
type NostrClient struct {
|
type NostrClient struct {
|
||||||
|
@ -57,41 +59,17 @@ func WaitUntilNext(d time.Duration) {
|
||||||
time.Sleep(dur)
|
time.Sleep(dur)
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckNotifications() {
|
|
||||||
var prevHasNewNotes bool
|
|
||||||
for {
|
|
||||||
log.Println("Checking notifications ...")
|
|
||||||
hasNewNotes, err := sn.CheckNotifications()
|
|
||||||
if err != nil {
|
|
||||||
SendToNostr(fmt.Sprint(err))
|
|
||||||
} else {
|
|
||||||
if !prevHasNewNotes && hasNewNotes {
|
|
||||||
// only send on "rising edge"
|
|
||||||
SendToNostr("new notifications")
|
|
||||||
log.Println("Forwarded notifications to monitoring")
|
|
||||||
} else if hasNewNotes {
|
|
||||||
log.Println("Notifications already forwarded")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prevHasNewNotes = hasNewNotes
|
|
||||||
WaitUntilNext(time.Hour)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func SessionKeepAlive() {
|
|
||||||
for {
|
|
||||||
log.Println("Refresh session using GET /api/auth/session ...")
|
|
||||||
sn.RefreshSession()
|
|
||||||
WaitUntilNext(time.Hour)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
go CheckNotifications()
|
loadEnv()
|
||||||
go SessionKeepAlive()
|
|
||||||
|
c := sn.NewClient(
|
||||||
|
sn.WithBaseUrl(os.Getenv("SN_BASE_URL")),
|
||||||
|
sn.WithApiKey(os.Getenv("SN_API_KEY")),
|
||||||
|
)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
log.Println("fetching items ...")
|
log.Println("fetching items ...")
|
||||||
r, err := sn.Items(&sn.ItemsQuery{Sort: "recent", Limit: 21})
|
r, err := c.Items(&sn.ItemsQuery{Sort: "recent", Limit: 21})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
SendToNostr(fmt.Sprint(err))
|
SendToNostr(fmt.Sprint(err))
|
||||||
|
@ -114,7 +92,7 @@ func main() {
|
||||||
comment = strings.TrimRight(comment, "| ")
|
comment = strings.TrimRight(comment, "| ")
|
||||||
comment += "\n\n_Nitter is a free and open source alternative Twitter front-end focused on privacy and performance. "
|
comment += "\n\n_Nitter is a free and open source alternative Twitter front-end focused on privacy and performance. "
|
||||||
comment += "Click [here](https://github.com/zedeus/nitter) for more information._"
|
comment += "Click [here](https://github.com/zedeus/nitter) for more information._"
|
||||||
cId, err := sn.CreateComment(item.Id, comment)
|
cId, err := c.CreateComment(item.Id, comment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
SendToNostr(fmt.Sprint(err))
|
SendToNostr(fmt.Sprint(err))
|
||||||
|
@ -137,7 +115,7 @@ func main() {
|
||||||
comment += fmt.Sprintf("[%s](%s) | ", client.Name, client.Url+noteId)
|
comment += fmt.Sprintf("[%s](%s) | ", client.Name, client.Url+noteId)
|
||||||
}
|
}
|
||||||
comment = strings.TrimRight(comment, "| ")
|
comment = strings.TrimRight(comment, "| ")
|
||||||
cId, err := sn.CreateComment(item.Id, comment)
|
cId, err := c.CreateComment(item.Id, comment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
SendToNostr(fmt.Sprint(err))
|
SendToNostr(fmt.Sprint(err))
|
||||||
|
@ -153,3 +131,36 @@ func main() {
|
||||||
WaitUntilNext(time.Minute)
|
WaitUntilNext(time.Minute)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func loadEnv() {
|
||||||
|
var (
|
||||||
|
f *os.File
|
||||||
|
s *bufio.Scanner
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
if f, err = os.Open(".env"); err != nil {
|
||||||
|
log.Fatalf("error opening .env: %v", err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
s = bufio.NewScanner(f)
|
||||||
|
s.Split(bufio.ScanLines)
|
||||||
|
for s.Scan() {
|
||||||
|
line := s.Text()
|
||||||
|
parts := strings.SplitN(line, "=", 2)
|
||||||
|
|
||||||
|
// Check if we have exactly 2 parts (key and value)
|
||||||
|
if len(parts) == 2 {
|
||||||
|
os.Setenv(parts[0], parts[1])
|
||||||
|
} else {
|
||||||
|
log.Fatalf(".env: invalid line: %s\n", line)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for errors during scanning
|
||||||
|
if err = s.Err(); err != nil {
|
||||||
|
fmt.Println("error scanning .env:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue