krz/devianter
A DeviantArt guest API library for Go.
clone: git clone https://gitbay.org/krz/devianter.git
v0.3.1: comments.go · raw
1package devianter
2
3import (
4 "encoding/json"
5 "net/url"
6 "strconv"
7)
8
9type Thread struct {
10 Replies, Likes int
11 ID int `json:"commentId"`
12 Parent int `json:"parentId"`
13
14 Posted timeStamp
15 Author bool `json:"isAuthorHighlited"`
16
17 Desctiption string
18 Comment string
19
20 TextContent Text
21
22 User struct {
23 Username string
24 Banned bool `json:"isBanned"`
25 }
26}
27
28type Comments struct {
29 Cursor string
30 PrevOffset int
31 HasMore, HasLess bool
32
33 Total int
34 Thread []Thread
35}
36
37// 1 - комментарии поста; 4 - комментарии на стене группы или пользователя
38func GetComments(postid string, cursor string, page int, typ int) (cmmts Comments, err Error) {
39 for x := 0; x <= page; x++ {
40 err = ujson(
41 "dashared/comments/thread?typeid="+strconv.Itoa(typ)+
42 "&itemid="+postid+"&maxdepth=1000&order=newest"+
43 "&limit=50&cursor="+url.QueryEscape(cursor),
44 &cmmts,
45 )
46
47 cursor = cmmts.Cursor
48
49 // парсинг json внутри json
50 for i := 0; i < len(cmmts.Thread); i++ {
51 m, l := cmmts.Thread[i].TextContent.Html.Markup, len(cmmts.Thread[i].TextContent.Html.Markup)
52 cmmts.Thread[i].Comment = m
53
54 // если начало строки {, а конец }, то срабатывает этот иф
55 if m[0] == '{' && m[l-1] == '}' {
56 var content struct {
57 Blocks []struct {
58 Text string
59 }
60 }
61
62 e := json.Unmarshal([]byte(m), &content)
63 try(e)
64
65 for _, a := range content.Blocks {
66 cmmts.Thread[i].Comment = a.Text
67 }
68 }
69 }
70 }
71
72 return
73}