diff options
| author | lost+skunk <[email protected]> | 2024-06-04 00:50:30 +0300 |
|---|---|---|
| committer | lost+skunk <[email protected]> | 2024-06-04 01:00:34 +0300 |
| commit | 66ab740d7fec430d97f69ab0ed52ba0f01973d46 (patch) | |
| tree | 72a0d5b7696f0402bc15bd37b0a9000b6f96ad9c /comments.go | |
| parent | 3334c33e04f48ee30a54c514180dece5528d4b72 (diff) | |
| download | devianter-66ab740d7fec430d97f69ab0ed52ba0f01973d46.tar.gz devianter-66ab740d7fec430d97f69ab0ed52ba0f01973d46.tar.bz2 devianter-66ab740d7fec430d97f69ab0ed52ba0f01973d46.zip | |
First Commit!
Diffstat (limited to 'comments.go')
| -rw-r--r-- | comments.go | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/comments.go b/comments.go new file mode 100644 index 0000000..f6a86c6 --- /dev/null +++ b/comments.go @@ -0,0 +1,79 @@ +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 +} |
