package utils import ( "anonymousoverflow/src/types" "fmt" "html/template" "github.com/PuerkitoBio/goquery" ) func FindAndReturnComments(inHtml, domain string, postLayout *goquery.Selection) (comments []types.FilteredComment) { commentsComponent := postLayout.Find("div.js-post-comments-component") commentsList := commentsComponent.Find("div.comments") commentsList2 := commentsList.Find("ul.comments-list") allComments := commentsList2.Find("li.comment") allComments.Each(func(i int, s *goquery.Selection) { commentScoreParent := s.Find("div.comment-score") // find the first span within commentScoreParent commentScore := commentScoreParent.Find("span").First().Text() if commentScore == "" { commentScore = "0" } commentText := s.Find("div.comment-text") commentBody := commentText.Find("div.comment-body") commentCopy, err := commentBody.Find("span.comment-copy").Html() if err != nil { return } commentAuthorURL := fmt.Sprintf("https://%s", domain) commentAuthor := commentBody.Find("span.comment-user") if commentAuthor.Length() == 0 { commentAuthor = commentBody.Find("a.comment-user") if commentAuthor.Length() == 0 { return } commentAuthorURL += commentAuthor.AttrOr("href", "") } commentTimestamp := commentBody.Find("span.relativetime-clean").Text() newFilteredComment := types.FilteredComment{ Text: template.HTML(ProcessHTMLBody(commentCopy)), Timestamp: commentTimestamp, AuthorName: commentAuthor.Text(), AuthorURL: commentAuthorURL, Upvotes: commentScore, } comments = append(comments, newFilteredComment) }) return }