commit 2033e803e9fad5b8326c2776b57bc331bee3e382
parent fdaf393b96d0a90d8d5ca40b6a0f5054573fb32b
Author: Andrew Laack <andrew@laack.co>
Date: Mon, 4 May 2026 20:50:09 -0500
Fixed link parsing; insert into table in one transaction.
Diffstat:
| M | main.go | | | 45 | ++++++++++++++++++++++++--------------------- |
1 file changed, 24 insertions(+), 21 deletions(-)
diff --git a/main.go b/main.go
@@ -11,8 +11,16 @@ import (
_ "github.com/mattn/go-sqlite3"
)
-func index(url string) (string, []string) {
- resp, err := gemini.Fetch(url)
+func index(currentUrl string) (string, []string) {
+
+ u, err := url.Parse(currentUrl)
+ baseUrl := fmt.Sprintf("%s://%s", u.Scheme, u.Host)
+
+ if err != nil {
+ panic(err)
+ }
+
+ resp, err := gemini.Fetch(currentUrl)
if err != nil {
panic(err)
@@ -58,10 +66,11 @@ func index(url string) (string, []string) {
indexOfSpace = len(item)
}
if strings.Compare(item[:9], "gemini://") == 0 {
- geminiLinks = append(geminiLinks, item)
+ geminiLinks = append(geminiLinks, item[0:indexOfSpace])
}
if strings.Contains(item, "://") == false {
- geminiLinks = append(geminiLinks, item)
+ // relative link
+ geminiLinks = append(geminiLinks, baseUrl + item[0:indexOfSpace])
}
}
@@ -92,36 +101,30 @@ func main() {
panic(err)
}
+
currentUrl := "gemini://tlgs.one/known-hosts"
body, forwardGeminiLinks := index(currentUrl)
- fmt.Println("\n=== Body ===\n")
- fmt.Println(body)
- fmt.Println("\n=== Body ===\n")
-
- fmt.Println("\n=== Links ===\n")
- for index, link := range forwardGeminiLinks {
- fmt.Printf("%d: %s\n", index, link)
- }
- fmt.Println("\n=== Links ===\n")
-
err = os.WriteFile("outputs/" + url.PathEscape(currentUrl), []byte(body), 0644)
if err != nil {
panic(err)
}
- f, err := os.OpenFile("outputs/links.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
- if err != nil {
- panic(err)
- }
+ insertLinkQuery := "INSERT INTO link (source, destination) VALUES (?, ?)"
- defer f.Close()
+ tx, _ := db.Begin()
- for _, link := range forwardGeminiLinks {
- if _, err = f.WriteString(link + "\n"); err != nil {
+ for index, link := range forwardGeminiLinks {
+
+ _, err := tx.Exec(insertLinkQuery, currentUrl, link)
+ fmt.Printf("Inserting link %d into table\n", index)
+
+ if err != nil {
panic(err)
}
+
}
+ tx.Commit()
}