отображение ошибок
This commit is contained in:
parent
5a8a0987a2
commit
c39399403e
3
TODO.md
3
TODO.md
@ -5,14 +5,13 @@
|
|||||||
* **Доделать парсинг описания**
|
* **Доделать парсинг описания**
|
||||||
* ~~Реализовать стрипы в ежедневных артах~~ ✔️
|
* ~~Реализовать стрипы в ежедневных артах~~ ✔️
|
||||||
* ~~Исправить баг с навигацией по страницам~~ ✔️
|
* ~~Исправить баг с навигацией по страницам~~ ✔️
|
||||||
* Сделать нормальное отображение ошибок
|
* ~~Сделать нормальное отображение ошибок~~ ✔️
|
||||||
* ~~Сделать единицы в конфиге более понятными~~ ✔️
|
* ~~Сделать единицы в конфиге более понятными~~ ✔️
|
||||||
* Добавить чекер инстанса на работоспособность
|
* Добавить чекер инстанса на работоспособность
|
||||||
* ~~Добавить просмотр понравившихся артов пользователю~~ ✔️
|
* ~~Добавить просмотр понравившихся артов пользователю~~ ✔️
|
||||||
* Добавить возможность включить темплейты в бинарник [P]
|
* Добавить возможность включить темплейты в бинарник [P]
|
||||||
* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️
|
* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️
|
||||||
* Написать Makefile и скрипт для автоматического развёртывания инстанса
|
* Написать Makefile и скрипт для автоматического развёртывания инстанса
|
||||||
* **Реализовать отображение контента, отличного от картинок (видео, аудио, etc)**
|
|
||||||
* Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться
|
* Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться
|
||||||
* ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️
|
* ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️
|
||||||
* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ ✔️
|
* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ ✔️
|
||||||
|
@ -58,8 +58,12 @@ func (a API) Random() {
|
|||||||
a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500)
|
a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
s, err := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a')
|
s, err, daErr := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a')
|
||||||
try(err)
|
try(err)
|
||||||
|
if daErr.RAW != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
deviation := &s.Results[rand.Intn(len(s.Results))]
|
deviation := &s.Results[rand.Intn(len(s.Results))]
|
||||||
|
|
||||||
if deviation.NSFW && !CFG.Nsfw {
|
if deviation.NSFW && !CFG.Nsfw {
|
||||||
|
@ -127,6 +127,7 @@ func InitCacheSystem() {
|
|||||||
try(os.RemoveAll(fileName))
|
try(os.RemoveAll(fileName))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize {
|
if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize {
|
||||||
try(os.RemoveAll(fileName))
|
try(os.RemoveAll(fileName))
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ func ExecuteConfig() {
|
|||||||
|
|
||||||
lifetimeParsed = duration * int64(num)
|
lifetimeParsed = duration * int64(num)
|
||||||
}
|
}
|
||||||
CFG.Cache.MaxSize /= 1024 ^ 2
|
CFG.Cache.MaxSize *= 1024 ^ 2
|
||||||
go InitCacheSystem()
|
go InitCacheSystem()
|
||||||
}
|
}
|
||||||
devianter.UserAgent = CFG.UserAgent
|
devianter.UserAgent = CFG.UserAgent
|
||||||
|
@ -9,7 +9,11 @@ import (
|
|||||||
"golang.org/x/net/html"
|
"golang.org/x/net/html"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s skunkyart) ParseComments(c devianter.Comments) string {
|
func (s skunkyart) ParseComments(c devianter.Comments, daError devianter.Error) string {
|
||||||
|
if daError.RAW != nil {
|
||||||
|
return "Failed to fetch comments :("
|
||||||
|
}
|
||||||
|
|
||||||
var cmmts strings.Builder
|
var cmmts strings.Builder
|
||||||
replied := make(map[int]string)
|
replied := make(map[int]string)
|
||||||
|
|
||||||
|
@ -64,13 +64,13 @@ func Router() {
|
|||||||
|
|
||||||
var skunky = skunkyart{Version: Release.Version}
|
var skunky = skunkyart{Version: Release.Version}
|
||||||
|
|
||||||
|
skunky.Args = r.URL.Query()
|
||||||
arg := skunky.Args.Get
|
arg := skunky.Args.Get
|
||||||
p, _ := strconv.Atoi(arg("p"))
|
p, _ := strconv.Atoi(arg("p"))
|
||||||
|
|
||||||
skunky.Endpoint = path[1]
|
skunky.Endpoint = path[1]
|
||||||
skunky.API.main = &skunky
|
skunky.API.main = &skunky
|
||||||
skunky.Writer = w
|
skunky.Writer = w
|
||||||
skunky.Args = r.URL.Query()
|
|
||||||
skunky.BasePath = CFG.URI
|
skunky.BasePath = CFG.URI
|
||||||
skunky.QueryRaw = arg("q")
|
skunky.QueryRaw = arg("q")
|
||||||
skunky.Query = u.QueryEscape(skunky.QueryRaw)
|
skunky.Query = u.QueryEscape(skunky.QueryRaw)
|
||||||
|
15
app/util.go
15
app/util.go
@ -139,6 +139,19 @@ func UrlBuilder(strs ...string) string {
|
|||||||
return str.String()
|
return str.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s skunkyart) Error(dAerr devianter.Error) {
|
||||||
|
s.Writer.WriteHeader(502)
|
||||||
|
|
||||||
|
var msg strings.Builder
|
||||||
|
msg.WriteString(`<html><link rel="stylesheet" href="`)
|
||||||
|
msg.WriteString(UrlBuilder("stylesheet"))
|
||||||
|
msg.WriteString(`" /><h3>DeviantArt error — '`)
|
||||||
|
msg.WriteString(dAerr.Error)
|
||||||
|
msg.WriteString("'</h3></html>")
|
||||||
|
|
||||||
|
wr(s.Writer, msg.String())
|
||||||
|
}
|
||||||
|
|
||||||
func (s skunkyart) ReturnHTTPError(status int) {
|
func (s skunkyart) ReturnHTTPError(status int) {
|
||||||
s.Writer.WriteHeader(status)
|
s.Writer.WriteHeader(status)
|
||||||
|
|
||||||
@ -203,7 +216,7 @@ func ParseMedia(media devianter.Media, thumb ...int) string {
|
|||||||
}
|
}
|
||||||
return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", filename)
|
return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", filename)
|
||||||
}
|
}
|
||||||
return mediaUrl
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConvertDeviantArtUrlToSkunkyArt(url string) (output string) {
|
func ConvertDeviantArtUrlToSkunkyArt(url string) (output string) {
|
||||||
|
@ -18,10 +18,15 @@ func (s skunkyart) GRUser() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var g devianter.Group
|
var g devianter.Group
|
||||||
|
var daError devianter.Error
|
||||||
g.Name = s.Query
|
g.Name = s.Query
|
||||||
var err error
|
var err error
|
||||||
s.Templates.GroupUser.GR, err = g.Get()
|
s.Templates.GroupUser.GR, err, daError = g.Get()
|
||||||
try(err)
|
try(err)
|
||||||
|
if daError.RAW != nil {
|
||||||
|
s.Error(daError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
group := &s.Templates.GroupUser
|
group := &s.Templates.GroupUser
|
||||||
|
|
||||||
@ -63,12 +68,7 @@ func (s skunkyart) GRUser() {
|
|||||||
group.About.Interests += interest.String()
|
group.About.Interests += interest.String()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
group.About.Comments = s.ParseComments(devianter.GetComments(
|
group.About.Comments = s.ParseComments(devianter.GetComments(strconv.Itoa(group.GR.Gruser.ID),"",s.Page,4))
|
||||||
strconv.Itoa(group.GR.Gruser.ID),
|
|
||||||
"",
|
|
||||||
s.Page,
|
|
||||||
4,
|
|
||||||
))
|
|
||||||
|
|
||||||
case "cover_deviation":
|
case "cover_deviation":
|
||||||
group.About.BGMeta = x.ModuleData.CoverDeviation.Deviation
|
group.About.BGMeta = x.ModuleData.CoverDeviation.Deviation
|
||||||
@ -98,12 +98,17 @@ func (s skunkyart) GRUser() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if s.Type == 'f' {
|
if s.Type == 'f' {
|
||||||
content = g.Favourites(s.Page, all, folderid)
|
content, daError = g.Favourites(s.Page, all, folderid)
|
||||||
} else {
|
} else {
|
||||||
content, err = g.Gallery(s.Page, folderid)
|
content, err, daError = g.Gallery(s.Page, folderid)
|
||||||
try(err)
|
try(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if daError.RAW != nil {
|
||||||
|
s.Error(daError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if folderid > 0 || (s.Type == 'f' && all) {
|
if folderid > 0 || (s.Type == 'f' && all) {
|
||||||
group.Gallery.List = s.DeviationList(content.Content.Results, true, DeviationList{
|
group.Gallery.List = s.DeviationList(content.Content.Results, true, DeviationList{
|
||||||
More: content.Content.HasMore,
|
More: content.Content.HasMore,
|
||||||
@ -172,19 +177,26 @@ func (s skunkyart) Deviation(author, postname string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err devianter.Error
|
||||||
post := &s.Templates.Deviation
|
post := &s.Templates.Deviation
|
||||||
|
|
||||||
id := id_search[len(id_search)-1]
|
id := id_search[len(id_search)-1]
|
||||||
post.Post = devianter.GetDeviation(id, author)
|
post.Post, err = devianter.GetDeviation(id, author)
|
||||||
|
if err.RAW != nil {
|
||||||
|
s.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if post.Post.Comments.Total <= 50 {
|
||||||
|
post.Post.Comments.Cursor = ""
|
||||||
|
}
|
||||||
|
|
||||||
if post.Post.Deviation.TextContent.Excerpt != "" {
|
if post.Post.Deviation.TextContent.Excerpt != "" {
|
||||||
post.Post.Description = ParseDescription(post.Post.Deviation.TextContent)
|
post.Post.Description = ParseDescription(post.Post.Deviation.TextContent)
|
||||||
} else {
|
} else {
|
||||||
post.Post.Description = ParseDescription(post.Post.Deviation.Extended.DescriptionText)
|
post.Post.Description = ParseDescription(post.Post.Deviation.Extended.DescriptionText)
|
||||||
}
|
}
|
||||||
// время публикации
|
|
||||||
post.StringTime = post.Post.Deviation.PublishedTime.UTC().String()
|
|
||||||
post.Post.IMG = ParseMedia(post.Post.Deviation.Media)
|
|
||||||
for _, x := range post.Post.Deviation.Extended.RelatedContent {
|
for _, x := range post.Post.Deviation.Extended.RelatedContent {
|
||||||
if len(x.Deviations) != 0 {
|
if len(x.Deviations) != 0 {
|
||||||
post.Related += s.DeviationList(x.Deviations, false)
|
post.Related += s.DeviationList(x.Deviations, false)
|
||||||
@ -203,17 +215,19 @@ func (s skunkyart) Deviation(author, postname string) {
|
|||||||
post.Tags += tag.String()
|
post.Tags += tag.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
if post.Post.Comments.Total <= 50 {
|
|
||||||
post.Post.Comments.Cursor = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1))
|
post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1))
|
||||||
|
post.StringTime = post.Post.Deviation.PublishedTime.UTC().String()
|
||||||
|
post.Post.IMG = ParseMedia(post.Post.Deviation.Media)
|
||||||
|
|
||||||
s.ExecuteTemplate("deviantion.htm", "html", &s)
|
s.ExecuteTemplate("deviantion.htm", "html", &s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s skunkyart) DD() {
|
func (s skunkyart) DD() {
|
||||||
dd := devianter.GetDailyDeviations(s.Page)
|
dd, err := devianter.GetDailyDeviations(s.Page)
|
||||||
|
if err.RAW != nil {
|
||||||
|
s.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
var strips strings.Builder
|
var strips strings.Builder
|
||||||
for _, x := range dd.Strips {
|
for _, x := range dd.Strips {
|
||||||
strips.WriteString(`<h3 class="`)
|
strips.WriteString(`<h3 class="`)
|
||||||
@ -243,12 +257,13 @@ func (s skunkyart) Search() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
var daError devianter.Error
|
||||||
ss := &s.Templates.Search
|
ss := &s.Templates.Search
|
||||||
switch s.Type {
|
switch s.Type {
|
||||||
case 'a', 't':
|
case 'a', 't':
|
||||||
ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type)
|
ss.Content, err, daError = devianter.PerformSearch(s.Query, s.Page, s.Type)
|
||||||
case 'g', 'f':
|
case 'g', 'f':
|
||||||
ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type, s.Args.Get("usr"))
|
ss.Content, err, daError = devianter.PerformSearch(s.Query, s.Page, s.Type, s.Args.Get("usr"))
|
||||||
case 'r': // скраппер, поскольку девиантартовцы зажопили гостевое API для поиска групп
|
case 'r': // скраппер, поскольку девиантартовцы зажопили гостевое API для поиска групп
|
||||||
var (
|
var (
|
||||||
usernames = make(map[int]string)
|
usernames = make(map[int]string)
|
||||||
@ -297,6 +312,10 @@ func (s skunkyart) Search() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
try(err)
|
try(err)
|
||||||
|
if daError.RAW != nil {
|
||||||
|
s.Error(daError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if s.Type != 'r' {
|
if s.Type != 'r' {
|
||||||
ss.List = s.DeviationList(ss.Content.Results, false, DeviationList{
|
ss.List = s.DeviationList(ss.Content.Results, false, DeviationList{
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"enabled": true,
|
"enabled": true,
|
||||||
"path": "cache",
|
"path": "cache",
|
||||||
"lifetime": null,
|
"lifetime": null,
|
||||||
"max-size": 1024,
|
"max-size": 200,
|
||||||
"update-interval": 5
|
"update-interval": 5
|
||||||
},
|
},
|
||||||
"static-path": "static",
|
"static-path": "static",
|
||||||
|
3
go.mod
3
go.mod
@ -2,8 +2,7 @@ module skunkyart
|
|||||||
|
|
||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
replace git.macaw.me/skunky/devianter v0.2.5 => /home/skunk/projects/devianter
|
|
||||||
require (
|
require (
|
||||||
git.macaw.me/skunky/devianter v0.2.5
|
git.macaw.me/skunky/devianter v0.2.6-0.20240904171839-b3c99749f133
|
||||||
golang.org/x/net v0.27.0
|
golang.org/x/net v0.27.0
|
||||||
)
|
)
|
||||||
|
4
go.sum
4
go.sum
@ -1,4 +1,4 @@
|
|||||||
git.macaw.me/skunky/devianter v0.2.5 h1:aAc6CG/ghvG130Ob7gGUdK4IV3MSeCD5t3QIJjto1M0=
|
git.macaw.me/skunky/devianter v0.2.6-0.20240904171839-b3c99749f133 h1:ziutYUyDmdbsptR8Lj4lNmZUxfgwGsNbHM1mO9ATph8=
|
||||||
git.macaw.me/skunky/devianter v0.2.5/go.mod h1:ZLn527xBlnpXrUB1B8z/MhyeiWVK4nPWjyfnhWOE8Is=
|
git.macaw.me/skunky/devianter v0.2.6-0.20240904171839-b3c99749f133/go.mod h1:ZLn527xBlnpXrUB1B8z/MhyeiWVK4nPWjyfnhWOE8Is=
|
||||||
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
|
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
|
||||||
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
||||||
|
Loading…
Reference in New Issue
Block a user