2024-06-05 11:32:40 +00:00
|
|
|
package devianter
|
|
|
|
|
|
|
|
import (
|
2024-07-29 22:20:00 +00:00
|
|
|
"errors"
|
2024-06-05 11:32:40 +00:00
|
|
|
"strconv"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
// структура группы или пользователя
|
2024-06-13 21:05:21 +00:00
|
|
|
type GRuser struct {
|
2024-06-05 11:32:40 +00:00
|
|
|
ErrorDescription string
|
|
|
|
Owner struct {
|
|
|
|
Group bool `json:"isGroup"`
|
|
|
|
Username string
|
|
|
|
}
|
|
|
|
Gruser struct {
|
|
|
|
ID int `json:"gruserId"`
|
|
|
|
Page struct {
|
|
|
|
Modules []struct {
|
|
|
|
Name string
|
|
|
|
ModuleData struct {
|
2024-07-04 08:27:56 +00:00
|
|
|
GroupAbout GroupAbout
|
|
|
|
GroupAdmins GroupAdmins
|
2024-06-27 11:52:33 +00:00
|
|
|
users
|
2024-07-04 08:27:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Extra struct {
|
|
|
|
Tag string `json:"gruserTagline"`
|
|
|
|
Stats struct {
|
|
|
|
Deviations, Watchers, Watching, Pageviews, CommentsMade, Favourites, Friends int
|
|
|
|
FeedComments int `json:"commentsReceivedProfile"`
|
|
|
|
}
|
|
|
|
} `json:"pageExtraData"`
|
|
|
|
}
|
2024-06-05 11:32:40 +00:00
|
|
|
|
2024-07-04 08:27:56 +00:00
|
|
|
type Gallery struct {
|
|
|
|
Gruser struct {
|
|
|
|
ID int `json:"gruserId"`
|
|
|
|
Page struct {
|
|
|
|
Modules []struct {
|
|
|
|
Name string
|
|
|
|
ModuleData struct {
|
2024-06-05 11:32:40 +00:00
|
|
|
// группы
|
|
|
|
Folders struct {
|
2024-07-04 08:27:56 +00:00
|
|
|
HasMore bool
|
2024-06-05 11:32:40 +00:00
|
|
|
Results []struct {
|
|
|
|
FolderId int
|
2024-07-13 18:40:17 +00:00
|
|
|
Size int
|
2024-06-05 11:32:40 +00:00
|
|
|
Name string
|
2024-07-13 18:40:17 +00:00
|
|
|
Thumb Deviation
|
2024-06-05 11:32:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// галерея
|
2024-06-27 11:52:33 +00:00
|
|
|
Folder struct {
|
2024-07-04 08:27:56 +00:00
|
|
|
HasMore bool
|
2024-06-27 11:52:33 +00:00
|
|
|
Username string
|
|
|
|
Pages int `json:"totalPageCount"`
|
|
|
|
Deviations []Deviation
|
|
|
|
} `json:"folderDeviations"`
|
2024-06-05 11:32:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-07-04 08:27:56 +00:00
|
|
|
HasMore bool
|
|
|
|
Results []Deviation
|
2024-06-05 11:32:40 +00:00
|
|
|
}
|
|
|
|
|
2024-06-13 21:05:21 +00:00
|
|
|
type Group struct {
|
|
|
|
Name string // обязательно заполнить
|
2024-07-04 08:27:56 +00:00
|
|
|
Content Gallery
|
2024-06-13 21:05:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// подходит как группа, так и пользователь
|
2024-07-29 22:20:00 +00:00
|
|
|
func (s Group) GetGroup() (g GRuser, err error) {
|
|
|
|
if s.Name == "" {
|
|
|
|
return g, errors.New("missing Name field")
|
|
|
|
}
|
2024-06-13 21:05:21 +00:00
|
|
|
ujson("dauserprofile/init/about?username="+s.Name, &g)
|
2024-06-05 11:32:40 +00:00
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// гарелея пользователя или группы
|
2024-07-29 22:20:00 +00:00
|
|
|
func (s Group) GetGallery(page int, folderid ...int) (g Group, err error) {
|
|
|
|
if s.Name == "" {
|
|
|
|
return g, errors.New("missing Name field")
|
|
|
|
}
|
|
|
|
|
2024-06-05 11:32:40 +00:00
|
|
|
var url strings.Builder
|
2024-07-04 08:27:56 +00:00
|
|
|
if folderid[0] > 0 {
|
|
|
|
page--
|
|
|
|
url.WriteString("dashared/gallection/contents?username=")
|
|
|
|
url.WriteString(s.Name)
|
|
|
|
url.WriteString("&folderid=")
|
|
|
|
url.WriteString(strconv.Itoa(folderid[0]))
|
|
|
|
url.WriteString("&offset=")
|
|
|
|
url.WriteString(strconv.Itoa(page * 50))
|
|
|
|
url.WriteString("&type=gallery&")
|
|
|
|
} else {
|
|
|
|
url.WriteString("dauserprofile/init/gallery?username=")
|
|
|
|
url.WriteString(s.Name)
|
|
|
|
url.WriteString("&page=")
|
|
|
|
url.WriteString(strconv.Itoa(page))
|
|
|
|
url.WriteString("&deviations_")
|
|
|
|
}
|
|
|
|
url.WriteString("limit=50")
|
|
|
|
url.WriteString("&with_subfolders=false")
|
2024-06-05 11:32:40 +00:00
|
|
|
|
2024-07-04 08:27:56 +00:00
|
|
|
ujson(url.String(), &g.Content)
|
2024-06-05 11:32:40 +00:00
|
|
|
return
|
|
|
|
}
|
2024-07-29 22:20:00 +00:00
|
|
|
|
|
|
|
type GroupAbout struct {
|
|
|
|
FoundatedAt timeStamp `json:"foundationTs"`
|
|
|
|
Description Text
|
|
|
|
}
|
|
|
|
type GroupAdmins struct {
|
|
|
|
Results []struct {
|
|
|
|
TypeId int
|
|
|
|
User struct {
|
|
|
|
Username string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type About struct {
|
|
|
|
Country, Website, WebsiteLabel, Gender string
|
|
|
|
RegDate int64 `json:"deviantFor"`
|
|
|
|
Description Text `json:"textContent"`
|
|
|
|
|
|
|
|
SocialLinks []struct {
|
|
|
|
Value string
|
|
|
|
}
|
|
|
|
Interests []struct {
|
|
|
|
Label, Value string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type users struct {
|
|
|
|
About About
|
|
|
|
CoverDeviation struct {
|
|
|
|
Deviation Deviation `json:"coverDeviation"`
|
|
|
|
}
|
|
|
|
}
|