improve skipping tags

Amolith created

Change summary

main.go | 52 +++++++++++++++++++++++++++++++++++-----------------
1 file changed, 35 insertions(+), 17 deletions(-)

Detailed changes

main.go 🔗

@@ -48,31 +48,42 @@ func main() {
 	feed, _ := fp.ParseURL(*flagFeed)
 
 	skippedTags := strings.Split(*flagTagsSkip, ",")
-	skippedTagsMaps := make(map[string]int)
+	skippedTagsMap := make(map[string]int)
 	for i := range skippedTags {
-		skippedTagsMaps[skippedTags[i]] = 0
+		skippedTagsMap[skippedTags[i]] = 0
 	}
-	var i int
-	tags := strings.Split(feed.Items[i].Categories[0], "/")
-	for i, tag := range tags {
-		if _, ok := skippedTagsMaps[tag]; ok {
-			i++
-			continue
+
+	i := 0
+	if feed.Items[i].Categories != nil {
+		for i = range feed.Items {
+			if feed.Items[i].Categories == nil {
+				feed.Items[i].Categories = []string{feed.Title}
+				break
+			}
+			c := false
+			tags := strings.Split(feed.Items[i].Categories[0], "/")
+			for _, tag := range tags {
+				if _, ok := skippedTagsMap[tag]; ok {
+					c = true
+					break
+				}
+			}
+			if c {
+				continue
+			}
+			break
 		}
-		break
+	} else {
+		feed.Items[i].Categories = []string{feed.Title}
 	}
 
-	post := post{
-		Title: feed.Items[i].Title,
-		Link:  feed.Items[i].Link,
-	}
-
-	if feed.Items[i].Image != nil {
-		post.Image = feed.Items[i].Image.URL
-	}
+	post := post{}
 
+	tags := strings.Split(feed.Items[i].Categories[0], "/")
 	for i, tag := range tags {
 		tag = "#" + strings.ReplaceAll(tag, " ", "")
+		tag = strings.ReplaceAll(tag, ".", "")
+		tag = strings.ReplaceAll(tag, "-", "")
 		if i == 0 {
 			post.Tags = tag
 			continue
@@ -80,6 +91,13 @@ func main() {
 		post.Tags += " " + tag
 	}
 
+	post.Title = feed.Items[i].Title
+	post.Link = feed.Items[i].Link
+
+	if feed.Items[i].Image != nil {
+		post.Image = feed.Items[i].Image.URL
+	}
+
 	description, _ := htmlToPlaintext(feed.Items[i].Description)
 	description = strings.ReplaceAll(description, "\n\n", " ")
 	description = strings.ReplaceAll(description, "\n", " ")