111 lines
2.9 KiB
Go
111 lines
2.9 KiB
Go
package user
|
|
|
|
import (
|
|
"encoding/json"
|
|
"skunkyart/post"
|
|
"skunkyart/util"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type Tmp struct {
|
|
Watchers, Posts, Watching, Pageviews, CMMRCPF, CM, Fav, Friends int
|
|
Name, Description, Bg, Bgname, Country, RegDate, Gender, Site, SiteTitle, Social, Interests, Status, Comments string
|
|
}
|
|
|
|
func about(name *string, page int, output chan string) {
|
|
ums := time.Now().Unix()
|
|
uid := make([]string, 1)
|
|
|
|
{
|
|
var tmp Tmp
|
|
var j util.AB
|
|
|
|
// парсинг
|
|
rawjson := util.Puppy("dauserprofile/init/about?username=" + *name)
|
|
e := rerror(&rawjson)
|
|
if e != "" {
|
|
output <- e
|
|
}
|
|
json.Unmarshal([]byte(rawjson), &j)
|
|
|
|
// ошибки
|
|
uid[0] = strconv.Itoa(j.Gruser.GruserId)
|
|
for _, a := range j.Gruser.Page.Modules {
|
|
if a.ModuleData.About.Country != "" {
|
|
tmp.Country = a.ModuleData.About.Country
|
|
}
|
|
|
|
switch a.Name {
|
|
case "about":
|
|
var j struct {
|
|
Blocks []struct {
|
|
Text string
|
|
// InlineStyleRanges []struct {
|
|
// Offset, Length int
|
|
// Style string
|
|
// EntityMap struct {
|
|
|
|
// }
|
|
// }
|
|
}
|
|
}
|
|
|
|
json.Unmarshal([]byte(a.ModuleData.About.TextContent.Html.Markup), &j)
|
|
|
|
for _, a := range j.Blocks {
|
|
tmp.Description += a.Text + "<p>"
|
|
}
|
|
case "cover_deviation":
|
|
tmp.Bg = util.Images(a.ModuleData.CoverDeviation.CoverDeviation, a.ModuleData.CoverDeviation.CoverDeviation.Media, true)
|
|
tmp.Bgname = a.ModuleData.CoverDeviation.CoverDeviation.Title
|
|
}
|
|
|
|
if a.ModuleData.About.DeviantFor > 0 {
|
|
tmp.RegDate = time.Unix(ums-a.ModuleData.About.DeviantFor, 0).UTC().String()
|
|
}
|
|
|
|
switch a.ModuleData.About.Gender {
|
|
case "female":
|
|
tmp.Gender = "♀️"
|
|
case "male":
|
|
tmp.Gender = "♂️"
|
|
}
|
|
|
|
if a.ModuleData.About.Website != "" {
|
|
tmp.Site = a.ModuleData.About.Website
|
|
if a.ModuleData.About.WebsiteLabel != "" {
|
|
tmp.SiteTitle = a.ModuleData.About.WebsiteLabel
|
|
} else {
|
|
tmp.SiteTitle = a.ModuleData.About.Website
|
|
}
|
|
}
|
|
|
|
for _, a := range a.ModuleData.About.SocialLinks {
|
|
tmp.Social += "<a href=\"" + a.Value + "\" target=\"_blank\">" + a.Value + "</a><p>"
|
|
}
|
|
|
|
for _, a := range a.ModuleData.About.Interests {
|
|
tmp.Interests += "<b>" + a.Label + "</b>: " + a.Value + "<p>"
|
|
}
|
|
|
|
if a.ModuleData.About.Tagline != "" {
|
|
tmp.Status = a.ModuleData.About.Tagline
|
|
}
|
|
|
|
// говно
|
|
tmp.Watchers = j.PageExtraData.Stats.Watchers
|
|
tmp.Posts = j.PageExtraData.Stats.Deviations
|
|
tmp.Watching = j.PageExtraData.Stats.Watching
|
|
tmp.CMMRCPF = j.PageExtraData.Stats.CommentsReceivedProfile
|
|
tmp.CM = j.PageExtraData.Stats.CommentsMade
|
|
tmp.Fav = j.PageExtraData.Stats.Favourites
|
|
tmp.Friends = j.PageExtraData.Stats.Friends
|
|
tmp.Name = j.Owner.Username
|
|
tmp.Comments = *post.GetComments("user/"+tmp.Name, "", page+1, 4, uid)
|
|
}
|
|
|
|
output <- util.TmpExec("templates/user/info.htm", &tmp)
|
|
}
|
|
}
|