user favs

This commit is contained in:
lost+skunk 2024-08-14 19:18:40 +03:00
parent 42ea2980f9
commit 4487cdcbe9
3 changed files with 48 additions and 16 deletions

View File

@ -104,7 +104,7 @@ func UrlFromMedia(m Media, thumb ...int) string {
for _, t := range m.Types { for _, t := range m.Types {
if t.T == "fullview" { if t.T == "fullview" {
url.WriteString(m.BaseUri) url.WriteString(m.BaseUri)
if m.BaseUri[len(m.BaseUri)-3:] != "gif" && t.W*t.H < 33177600 { if l := len(m.BaseUri); l != 0 && (m.BaseUri[l-3:] != "gif" && t.W*t.H < 33177600) {
if len(thumb) != 0 { if len(thumb) != 0 {
subtractWidthHeight(thumb[0], &t.W, &t.H) subtractWidthHeight(thumb[0], &t.W, &t.H)
} }

24
misc.go
View File

@ -88,17 +88,23 @@ func PerformSearch(query string, page int, scope rune, user ...string) (ss Searc
buildurl.WriteString("dabrowse/search/all?q=") buildurl.WriteString("dabrowse/search/all?q=")
case 't': // поиск артов по тегам case 't': // поиск артов по тегам
buildurl.WriteString("dabrowse/networkbar/tag/deviations?tag=") buildurl.WriteString("dabrowse/networkbar/tag/deviations?tag=")
case 'g': // поиск артов пользователя или группы case 'g', 'f': // поиск артов пользователя или группы
if user != nil { if user == nil {
buildurl.WriteString("dashared/gallection/search?username=")
buildurl.WriteString(user[0])
buildurl.WriteString("&type=gallery&order=most-recent&init=true&limit=50&q=")
} else {
e = errors.New("missing username (last argument)") e = errors.New("missing username (last argument)")
return return
} }
buildurl.WriteString("dashared/gallection/search?username=")
buildurl.WriteString(user[0])
buildurl.WriteString("&type=")
if scope == 'g' {
buildurl.WriteString("gallery")
} else {
buildurl.WriteString("collection")
}
buildurl.WriteString("&order=most-recent&init=true&limit=50&q=")
default: default:
log.Fatalln("Invalid type.\n- 'a' -- all;\n- 't' -- tag;\n- 'g' - gallery.") log.Fatalln("Invalid type.\n- 'a' -- all;\n- 't' -- tag;\n- 'g' - gallery\n- 'f' - folders.")
} }
buildurl.WriteString(url.QueryEscape(query)) buildurl.WriteString(url.QueryEscape(query))
@ -112,11 +118,11 @@ func PerformSearch(query string, page int, scope rune, user ...string) (ss Searc
ujson(buildurl.String(), &ss) ujson(buildurl.String(), &ss)
if scope == 'g' { if ss.Results == nil {
ss.Results = ss.ResultsGalleryTemp ss.Results = ss.ResultsGalleryTemp
} }
// расчёт, сколько всего страниц по запросу. без токена 417 страниц - максимум // расчёт, сколько всего страниц по запросу. без токена, 417 страниц - максимум
totalfloat := int(math.Round(float64(ss.Total / 25))) totalfloat := int(math.Round(float64(ss.Total / 25)))
for x := 0; x < totalfloat; x++ { for x := 0; x < totalfloat; x++ {
if x <= 417 { if x <= 417 {

View File

@ -46,10 +46,11 @@ type Gallery struct {
Folders struct { Folders struct {
HasMore bool HasMore bool
Results []struct { Results []struct {
FolderId int Deviations int `json:"totalItemCount"`
Size int FolderId int
Name string Size int
Thumb Deviation Name string
Thumb Deviation
} }
} }
@ -74,7 +75,7 @@ type Group struct {
} }
// подходит как группа, так и пользователь // подходит как группа, так и пользователь
func (s Group) GetGroup() (g GRuser, err error) { func (s Group) Get() (g GRuser, err error) {
if s.Name == "" { if s.Name == "" {
return g, errors.New("missing Name field") return g, errors.New("missing Name field")
} }
@ -83,8 +84,33 @@ func (s Group) GetGroup() (g GRuser, err error) {
return return
} }
func (s Group) Favourites(page int, all bool, folderid ...int) (g Group) {
var url strings.Builder
if fid := folderid[0]; fid > 0 || all {
url.WriteString("dashared/gallection/contents")
if all {
url.WriteString("?all_folder=true")
} else {
url.WriteString("?folderid=")
url.WriteString(strconv.Itoa(fid))
}
url.WriteString("&type=collection&")
} else {
url.WriteString("dauserprofile/init/favourites?deviations_")
}
url.WriteString("limit=50&username=")
url.WriteString(s.Name)
url.WriteString("&with_subfolders=true&offset=")
url.WriteString(strconv.Itoa(page * 50))
ujson(url.String(), &g.Content)
return
}
// гарелея пользователя или группы // гарелея пользователя или группы
func (s Group) GetGallery(page int, folderid ...int) (g Group, err error) { func (s Group) Gallery(page int, folderid ...int) (g Group, err error) {
if s.Name == "" { if s.Name == "" {
return g, errors.New("missing Name field") return g, errors.New("missing Name field")
} }