urls export support
authorSergey Matveev <stargrave@stargrave.org>
Sun, 3 Jan 2021 12:14:12 +0000 (15:14 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 3 Jan 2021 12:14:12 +0000 (15:14 +0300)
README
main.go
opml.go
xbel.go

diff --git a/README b/README
index b612add56c56122e59431604b6cdecc520ff872c..d786a0492fd3ea101d203ef136fbe227aff3657e 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-linksexp -- Texinfo/XBEL/OPML autogeneration from recfile bookmark.
+linksexp -- Texinfo/XBEL/OPML/urls autogeneration from recfile bookmark.
 
 Given recfile (https://www.gnu.org/software/recutils/) bookmark file,
 this program can generate (export links):
@@ -6,3 +6,4 @@ this program can generate (export links):
 * either part of Texinfo source code output
 * or XBEL (http://xbel.sourceforge.net/, https://en.wikipedia.org/wiki/XBEL)
 * or OPML (http://dev.opml.org/, https://en.wikipedia.org/wiki/OPML)
+* or "urls" file for newsboat (https://newsboat.org/)
diff --git a/main.go b/main.go
index 0657c0a12783583a30ffd98c156a0d2b1247790a..9fb4e203d1c5b5786d87a26b509370b4fd9a645b 100644 (file)
--- a/main.go
+++ b/main.go
@@ -1,5 +1,5 @@
 /*
-linksexp -- Texinfo/XBEL/OPML autogeneration from recfile bookmark
+linksexp -- Texinfo/XBEL/OPML/urls autogeneration from recfile bookmark
 Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
@@ -40,9 +40,32 @@ func (a ByTitle) Less(i, j int) bool {
 func main() {
        doXBEL := flag.Bool("xbel", false, "Make XBEL")
        doOPML := flag.Bool("opml", false, "Make OPML")
+       doURLS := flag.Bool("urls", false, "Make newsboat urls")
        flag.Parse()
 
        r := recfile.NewReader(os.Stdin)
+
+       if *doURLS {
+               for {
+                       m, err := r.NextMapWithSlice()
+                       if err == io.EOF {
+                               break
+                       }
+                       if err != nil {
+                               panic(err)
+                       }
+                       if m["%rec"] != nil {
+                               continue
+                       }
+                       sort.Strings(m["Category"])
+                       cats := strings.Join(m["Category"], " ")
+                       for _, f := range m["Feed"] {
+                               fmt.Println(f, cats)
+                       }
+               }
+               os.Exit(0)
+       }
+
        if *doOPML {
                data := make([]map[string][]string, 0)
                for {
diff --git a/opml.go b/opml.go
index 498ca56e0a0d7bd95bce9186d33941d922dc6d3b..6a17baafa52b375eeea14d962829bb518e4e1da2 100644 (file)
--- a/opml.go
+++ b/opml.go
@@ -1,5 +1,5 @@
 /*
-linksexp -- Texinfo/XBEL/OPML autogeneration from recfile bookmark
+linksexp -- Texinfo/XBEL/OPML/urls autogeneration from recfile bookmark
 Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
diff --git a/xbel.go b/xbel.go
index 6db0db2593c5ade5a7693d365a7a1f7e8fbd4a83..591bb391d3ace3532b4632c1c9ea3f80be00634b 100644 (file)
--- a/xbel.go
+++ b/xbel.go
@@ -1,5 +1,5 @@
 /*
-linksexp -- Texinfo/XBEL/OPML autogeneration from recfile bookmark
+linksexp -- Texinfo/XBEL/OPML/urls autogeneration from recfile bookmark
 Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify