Ramblings

This commit is contained in:
vxclutch
2026-05-25 16:11:20 -04:00
parent bfb79d8d64
commit 682f08ab84
6 changed files with 102 additions and 11 deletions

View File

@@ -1,7 +1,11 @@
#!/bin/sh
news=true
quote=true
ramblings=true
# Section toggels
news=true # enables the news section
quote=true # enables the quotes section
ramblings=false #enables the ramblings section
# set the path where wire looks for ramblings, this is mostly for server use.
ramblings_path=${XDG_DOCUMENTS_DIR}/wire/
article_path="https://rss.nytimes.com/services/xml/rss/nyt/US.xml"

View File

@@ -18,14 +18,15 @@ var wrapper string
type Config struct {
News bool `json:"news"`
Quotes bool `json:"quote"`
Ramblings bool `json:"ramblings"`
Ramble bool `json:"ramblings"`
Ramblings_Path string `json:"ramblings_path"`
Articles_Path string `json:"article_path"`
}
func NewConfig() (c Config) {
c.News = true
c.Quotes = true
c.Ramblings = true
c.Ramble = true
ramblingsDir := os.Getenv("XDG_DOCUMENTS_DIR")
if ramblingsDir == "" {
ramblingsDir = filepath.Join(os.Getenv("HOME"), "Documents")

View File

@@ -1,3 +1,3 @@
#!/bin/sh
. $1
printf '{"news":%s,"quote":%s,"ramblings":%s,"ramblings_path":"%s"}\n' "$news" "$quote" "$ramblings" "$ramblings_path"
printf '{"news":%s,"quote":%s,"ramblings":%s,"ramblings_path":"%s","article_path":"%s"}\n' "$news" "$quote" "$ramblings" "$ramblings_path" "$article_path"

View File

@@ -0,0 +1,74 @@
package ramblings
import (
"html/template"
"log"
"net/http"
"os"
"path/filepath"
"strings"
"golang.org/x/text/cases"
"golang.org/x/text/language"
)
type Ramblings []Rambles
type Rambles struct {
Title string
Link string
Content template.HTML
}
type RamblingsParser struct {
path string
}
func NewParser(path string) *RamblingsParser {
rp := RamblingsParser{
path: path,
}
return &rp
}
func (rp *RamblingsParser) GetRamblings() (rs Ramblings) {
entries, err := os.ReadDir(rp.path)
if err != nil {
log.Fatal(err)
}
for _, ent := range entries {
if ent.IsDir() {
continue
}
title := ent.Name()
title = strings.ReplaceAll(title, "_", " ")
title = strings.ReplaceAll(title, "-", " ")
ext := filepath.Ext(ent.Name())
title = strings.TrimSuffix(title ,ext)
caser := cases.Title(language.AmericanEnglish)
title = caser.String(title)
fp := filepath.Join(rp.path, ent.Name())
contents, err := os.ReadFile(fp)
if err != nil {
log.Fatal(err)
}
rs = append(rs, Rambles{
Title: title,
Link: template.HTMLEscapeString(ent.Name()),
Content: template.HTML(string(contents)),
})
}
return
}
func NewHandler(ramble Rambles) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(ramble.Content))
}
}

16
main.go
View File

@@ -10,6 +10,7 @@ import (
"wire/internal/api"
"wire/internal/articles"
"wire/internal/config"
"wire/internal/ramblings"
)
//go:embed version
@@ -20,7 +21,7 @@ var verboseFlag = flag.Bool("verbose", false, "Enable verbose logging")
type Data struct {
Version string
Quote template.HTML
Ramblings string
Ramblings ramblings.Ramblings
Articles articles.Articles
Config config.Config
}
@@ -42,22 +43,29 @@ func main() {
cfg.ReadConfig()
data.Config = cfg
ap := articles.NewParser("https://rss.nytimes.com/services/xml/rss/nyt/US.xml")
ap := articles.NewParser(cfg.Articles_Path)
data.Articles = ap.GetArticles()
rp := ramblings.NewParser(cfg.Ramblings_Path)
data.Ramblings = rp.GetRamblings()
for _, ramble := range rp.GetRamblings() {
http.HandleFunc("/" + ramble.Link, ramblings.NewHandler(ramble))
}
quote, err := api.FetchJSON[[]Quote]("https://zenquotes.io/api/today")
if err != nil {
log.Fatal(err)
}
data.Quote = template.HTML(quote[0].H)
http.HandleFunc("/", newsHandler)
http.HandleFunc("/", mainHandler)
fmt.Println("wire: starting server at http://127.0.0.1:1337")
log.Fatal(http.ListenAndServe("127.0.0.1:1337", nil))
}
func newsHandler(w http.ResponseWriter, r *http.Request) {
func mainHandler(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("templates/main.html"))
tmpl.ExecuteTemplate(w, "main.html", data)

View File

@@ -23,7 +23,11 @@
{{if .Config.Ramble}}
<h2>Schizo Ramblings</h2>
{{.Ramblings}}
<ul>
{{range .Ramblings}}
<li><a href="{{.Link}}">{{.Title}}</a></li>
{{end}}
</ul>
{{end}}
<body>