devianter/comments.go
2024-06-04 01:00:34 +03:00

80 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package devianter
import (
"encoding/json"
"strconv"
"strings"
)
type comments struct {
Cursor string
PrevOffset int
HasMore, HasLess bool
Total int
Thread []struct {
CommentId, ParentId, Replies, Likes int
Posted time
IsAuthorHighlited bool
Desctiption string
// упрощение структуры с комментами
Comment string
TextContent struct {
Html struct {
Markup string
}
}
User struct {
Username string
IsBanned bool
}
}
}
// функция для обработки комментариев поста, пользователя, группы и многого другого
func Comments(
postid string,
cursor string,
page int,
typ int, // 1 - комментарии поста; 4 - комментарии на стене группы или пользователя
) (cmmts comments) {
for x := 0; x <= page; x++ {
ujson(
"dashared/comments/thread?typeid="+strconv.Itoa(typ)+
"&itemid="+postid+"&maxdepth=1000&order=newest"+
"&limit=50&cursor="+strings.ReplaceAll(cursor, "+", `%2B`),
&cmmts,
)
cursor = cmmts.Cursor
// парсинг json внутри json
for i := 0; i < len(cmmts.Thread); i++ {
m, l := cmmts.Thread[i].TextContent.Html.Markup, len(cmmts.Thread[i].TextContent.Html.Markup)
cmmts.Thread[i].Comment = m
// если начало строки {, а конец }, то срабатывает этот иф
if m[0] == 123 && m[l-1] == 125 {
var content struct {
Blocks []struct {
Text string
}
}
e := json.Unmarshal([]byte(m), &content)
err(e)
for _, a := range content.Blocks {
cmmts.Thread[i].Comment = a.Text
}
}
}
}
return
}