6 Commits

Author SHA1 Message Date
5e0a725deb Update link posts to support !nomad entries. 2023-08-29 14:14:40 -07:00
baf36dbaf8 even yet more logs 2023-08-29 13:23:38 -07:00
64190a500d yet more logs 2023-08-29 13:15:50 -07:00
dcbf937d38 even more additional logging 2023-08-29 13:08:56 -07:00
08c92ca74d additional logging 2023-08-29 13:00:05 -07:00
d0929f5b01 remove accidental exit 2023-08-29 12:29:11 -07:00
4 changed files with 60 additions and 15 deletions

3
.gitignore vendored
View File

@@ -1 +1,4 @@
nlink.conf nlink.conf
nlink.db
nlink
nlink.exe

20
main.go
View File

@@ -2,7 +2,6 @@ package main
import ( import (
"flag" "flag"
"os"
"path/filepath" "path/filepath"
"strings" "strings"
"time" "time"
@@ -122,16 +121,18 @@ func main() {
die.If(err) die.If(err)
} }
log.Debugln("config keys") log.Infoln("nlink is starting")
for _, k := range config.ListKeys() {
log.Debugf("key: %s", k)
}
log.Debugf("loading config file %s\n", configFile) log.Debugf("loading config file %s\n", configFile)
if err := config.LoadFile(configFile); err != nil { if err := config.LoadFile(configFile); err != nil {
log.Fatal(err) log.Fatal(err)
} }
log.Debugln("config keys")
for _, k := range config.ListKeys() {
log.Debugf("key: %s", k)
}
log.Infof("minio_bucket: %s", config.Get("minio_bucket")) log.Infof("minio_bucket: %s", config.Get("minio_bucket"))
if err := restoreDatabase(config.Get("local_database")); err != nil { if err := restoreDatabase(config.Get("local_database")); err != nil {
log.Fatal(err) log.Fatal(err)
@@ -154,6 +155,7 @@ func main() {
defer db.Close() defer db.Close()
feeds := splitFeeds() feeds := splitFeeds()
if markOnly { if markOnly {
log.Info("marking database") log.Info("marking database")
for _, feed := range feeds { for _, feed := range feeds {
@@ -165,15 +167,17 @@ func main() {
return return
} }
os.Exit(1)
log.Debugf("will look for new items every %s\n", interval) log.Debugf("will look for new items every %s\n", interval)
for { for {
log.Infoln("running fetch loop")
for _, feed := range feeds { for _, feed := range feeds {
log.Infoln("fetching items") log.Infof("fetching items for feed %s", feed)
if err := fetchItems(db, feed, markOnly); err != nil { if err := fetchItems(db, feed, markOnly); err != nil {
log.Info(err) log.Errln(err)
} }
} }
time.Sleep(interval) time.Sleep(interval)
} }
log.Infoln("exiting")
} }

View File

@@ -4,14 +4,22 @@ import (
"bytes" "bytes"
"errors" "errors"
"fmt" "fmt"
"net/url"
"path/filepath" "path/filepath"
"git.sr.ht/~thrrgilag/woodstock" "git.sr.ht/~thrrgilag/woodstock"
"git.wntrmute.dev/kyle/goutils/log"
"github.com/anaskhan96/soup" "github.com/anaskhan96/soup"
) )
func nomadLink(url Source) string { func nomadLink(src Source) string {
return fmt.Sprintf("[nomad.wntrmute.net](%s)", url.ID()) u, err := url.Parse(src.ID())
if err != nil {
log.Errf("nomadLink: %s", err)
return fmt.Sprintf("[%s](%s)", src.ID(), src.ID())
}
return fmt.Sprintf("[%s](%s)", u.Host, src.ID())
} }
type sel struct { type sel struct {
@@ -22,6 +30,23 @@ func selector(selectors ...string) sel {
return sel{selectors: selectors} return sel{selectors: selectors}
} }
type imageFinder func(soup.Root) (string, bool)
var imageFinders = []imageFinder{
func(root soup.Root) (string, bool) {
return find(
root, "src",
selector("div", "class", "entry-image"),
selector("img"))
},
func(root soup.Root) (string, bool) {
return find(
root, "src",
selector("div", "class", "gh-inner"),
selector("img"))
},
}
func find(root soup.Root, attr string, selectors ...sel) (string, bool) { func find(root soup.Root, attr string, selectors ...sel) (string, bool) {
result := root result := root
for _, selector := range selectors { for _, selector := range selectors {
@@ -65,10 +90,15 @@ func (p *Post) Fetch() error {
p.Body = body + " " + p.Body p.Body = body + " " + p.Body
} }
imageURL, hasImageURL := find( var imageURL string
root, "src", var hasImageURL bool
selector("div", "class", "entry-image"),
selector("img")) for _, finder := range imageFinders {
imageURL, hasImageURL = finder(root)
if hasImageURL {
break
}
}
if hasImageURL { if hasImageURL {
p.Image = NewURLSource(imageURL) p.Image = NewURLSource(imageURL)

View File

@@ -30,6 +30,7 @@ func connectMinio() (err error) {
} }
func restoreDatabase(path string) error { func restoreDatabase(path string) error {
log.Debugln("restoring database from minio")
if minioClient == nil { if minioClient == nil {
if err := connectMinio(); err != nil { if err := connectMinio(); err != nil {
return err return err
@@ -58,9 +59,14 @@ func restoreDatabase(path string) error {
defer dbFile.Close() defer dbFile.Close()
_, err = io.Copy(dbFile, obj) _, err = io.Copy(dbFile, obj)
if err != nil {
return err return err
} }
log.Debugln("database restored from minio")
return nil
}
func saveDatabase(path string) error { func saveDatabase(path string) error {
if minioClient == nil { if minioClient == nil {
if err := connectMinio(); err != nil { if err := connectMinio(); err != nil {
@@ -91,5 +97,7 @@ func saveDatabase(path string) error {
if err != nil { if err != nil {
return err return err
} }
log.Debugln("database saved to minio")
return nil return nil
} }