aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlost+skunk <[email protected]>2024-06-30 14:39:11 +0300
committerlost+skunk <[email protected]>2024-06-30 14:39:11 +0300
commit949bef2c5d5ee53a5d6158e16921c698f8a6e266 (patch)
tree5d6fb17999bfd41ed98e6caa1453a3874afe9867
parentefa4b86a67d67ce9ff1ff19391dbf73f13daece6 (diff)
downloaddevianter-949bef2c5d5ee53a5d6158e16921c698f8a6e266.tar.gz
devianter-949bef2c5d5ee53a5d6158e16921c698f8a6e266.tar.bz2
devianter-949bef2c5d5ee53a5d6158e16921c698f8a6e266.zip
по мелочи
-rw-r--r--README.md2
-rw-r--r--comments.go51
-rw-r--r--misc.go16
3 files changed, 36 insertions, 33 deletions
diff --git a/README.md b/README.md
index 8f70404..1c2e10f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Devianter
-[![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page)
+[![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page) [![Go Reference](https://pkg.go.dev/badge/git.macaw.me/skunky/devianter.svg)](https://pkg.go.dev/git.macaw.me/skunky/devianter) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
A DeviantART API library for Go.
diff --git a/comments.go b/comments.go
index 47a0136..928de44 100644
--- a/comments.go
+++ b/comments.go
@@ -2,48 +2,45 @@ package devianter
import (
"encoding/json"
+ "net/url"
"strconv"
- "strings"
)
+type Thread struct {
+ Replies, Likes int
+ ID int `json:"commentId"`
+ Parent int `json:"parentId"`
+
+ Posted time
+ Author bool `json:"isAuthorHighlited"`
+
+ Desctiption string
+ Comment string
+
+ TextContent Text
+
+ User struct {
+ Username string
+ Banned bool `json:"isBanned"`
+ }
+}
+
type Comments struct {
Cursor string
PrevOffset int
HasMore, HasLess bool
Total int
- Thread []struct {
- Replies, Likes int
- ID int `json:"commentId"`
- Parent int `json:"parentId"`
-
- Posted time
- Author bool `json:"isAuthorHighlited"`
-
- Desctiption string
- Comment string
-
- TextContent Text
-
- User struct {
- Username string
- Banned bool `json:"isBanned"`
- }
- }
+ Thread []Thread
}
-// функция для обработки комментариев поста, пользователя, группы и многого другого
-func CommentsFunc(
- postid string,
- cursor string,
- page int,
- typ int, // 1 - комментарии поста; 4 - комментарии на стене группы или пользователя
-) (cmmts Comments) {
+// 1 - комментарии поста; 4 - комментарии на стене группы или пользователя
+func CommentsFunc(postid string, cursor string, page int, typ int) (cmmts Comments) {
for x := 0; x <= page; x++ {
ujson(
"dashared/comments/thread?typeid="+strconv.Itoa(typ)+
"&itemid="+postid+"&maxdepth=1000&order=newest"+
- "&limit=50&cursor="+strings.ReplaceAll(cursor, "+", `%2B`),
+ "&limit=50&cursor="+url.QueryEscape(cursor),
&cmmts,
)
diff --git a/misc.go b/misc.go
index 6584479..400ac8b 100644
--- a/misc.go
+++ b/misc.go
@@ -7,6 +7,7 @@ import (
"log"
"math"
"net/http"
+ u "net/url"
"strconv"
"strings"
)
@@ -131,10 +132,11 @@ func DailyDeviationsFunc(page int) (dd DailyDeviations) {
/* SEARCH */
type Search struct {
- Total int `json:"estTotal"`
- Pages int // only for 'a' and 'g' scope.
- HasMore bool
- Results []Deviation `json:"deviations,results"`
+ Total int `json:"estTotal"`
+ Pages int // only for 'a' and 'g' scope.
+ HasMore bool
+ Results []Deviation `json:"deviations"`
+ ResultsGalleryTemp []Deviation `json:"results"`
}
func SearchFunc(query string, page int, scope rune, user ...string) (ss Search, e error) {
@@ -162,7 +164,7 @@ func SearchFunc(query string, page int, scope rune, user ...string) (ss Search,
log.Fatalln("Invalid type.\n- 'a' -- all;\n- 't' -- tag;\n- 'g' - gallery.")
}
- url.WriteString(query)
+ url.WriteString(u.QueryEscape(query))
if scope != 'g' { // если область поиска не равна поиску по группам, то активируется этот код
url.WriteString("&page=")
} else { // иначе вместо страницы будет оффсет и страница умножится на 50
@@ -173,6 +175,10 @@ func SearchFunc(query string, page int, scope rune, user ...string) (ss Search,
ujson(url.String(), &ss)
+ if scope == 'g' {
+ ss.Results = ss.ResultsGalleryTemp
+ }
+
// расчёт, сколько всего страниц по запросу. без токена 417 страниц - максимум
totalfloat := int(math.Round(float64(ss.Total / 25)))
for x := 0; x < totalfloat; x++ {