Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e0a725deb | |||
| baf36dbaf8 | |||
| 64190a500d |
3
main.go
3
main.go
@@ -121,6 +121,8 @@ func main() {
|
|||||||
die.If(err)
|
die.If(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Infoln("nlink is starting")
|
||||||
|
|
||||||
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)
|
||||||
@@ -153,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 {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user