SkunkyArt/user/about.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)
}
}