diff --git a/.gitignore b/.gitignore index 2d0b7a0..998b080 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ _build dist .task TASKS_NOTES.md +config.test.json diff --git a/fixers/fixers.go b/fixers/fixers.go index 4b8e58a..eff1418 100644 --- a/fixers/fixers.go +++ b/fixers/fixers.go @@ -12,9 +12,15 @@ var fixers = map[string]fixerFunc{ // Fix fixes title and body depending on site parsed. func Fix(domain string, feedItem *gofeed.Item) (string, string) { fixer, found := fixers[domain] - if !found { - return feedItem.Title, feedItem.Description + if found { + return fixer(feedItem) } - return fixer(feedItem) + // We should check WHAT IS LONGER - description or content. + bodyData := feedItem.Description + if len(feedItem.Content) > len(feedItem.Description) { + bodyData = feedItem.Content + } + + return feedItem.Title, bodyData } diff --git a/fixers/github_com.go b/fixers/github_com.go index 7090f94..bf82a40 100644 --- a/fixers/github_com.go +++ b/fixers/github_com.go @@ -1,21 +1,9 @@ package fixers import ( - "log/slog" - "github.com/mmcdole/gofeed" - "github.com/prodigeris/html2text" ) func githubFixer(item *gofeed.Item) (string, string) { - plainTextBody, err := html2text.FromString(item.Content, html2text.Options{ - PrettyTables: true, - }) - if err != nil { - slog.Error("Failed to de-HTMLify github body!", "error", err.Error()) - - return item.Title, item.Content - } - - return item.Title, plainTextBody + return item.Title, item.Content } diff --git a/fixers/opennet_ru.go b/fixers/opennet_ru.go index 7aaf45c..2d33d54 100644 --- a/fixers/opennet_ru.go +++ b/fixers/opennet_ru.go @@ -1,26 +1,15 @@ package fixers import ( - "log/slog" "strings" "github.com/mmcdole/gofeed" - "github.com/prodigeris/html2text" ) func opennetFixer(item *gofeed.Item) (string, string) { - oldBody, err := html2text.FromString(item.Description, html2text.Options{ - PrettyTables: true, - }) - if err != nil { - slog.Error("Failed to de-HTMLify opennet body!", "error", err.Error()) - - return item.Title, item.Description - } - newBody := &strings.Builder{} - for line := range strings.Lines(oldBody) { + for line := range strings.Lines(item.Description) { if strings.HasPrefix(line, "Источник") { continue } diff --git a/outputs/nntp/nntp.go b/outputs/nntp/nntp.go index c45157e..8b82d21 100644 --- a/outputs/nntp/nntp.go +++ b/outputs/nntp/nntp.go @@ -9,6 +9,7 @@ import ( "strings" "time" + "github.com/prodigeris/html2text" "go.dev.pztrn.name/rsser/configuration" "go.dev.pztrn.name/rsser/outputs" ) @@ -110,7 +111,15 @@ func (c *nntp) Do(dest, feedName, url, title, body string) error { "Content-Transfer-Encoding": "7bit", } - body = "URL: " + url + "\n\n" + body + // NNTP/Usenet do not want HTML things. + plainTextBody, err := html2text.FromString(body, html2text.Options{ + PrettyTables: true, + }) + if err != nil { + return fmt.Errorf("failed to de-HTMLify body: %s", err) + } + + body = "URL: " + url + "\n\n" + plainTextBody if err := c.postArticle(headers, body); err != nil { return fmt.Errorf("Do: %w", err)