Update downloader.go, pixiv.go, and types.go

This commit is contained in:
Mirror 2021-02-22 22:19:27 +03:00
parent acf352d459
commit b3ca71d477
3 changed files with 23 additions and 19 deletions

View File

@ -20,13 +20,6 @@ type artwork struct {
files []artworkFile files []artworkFile
} }
func (a *artwork) tagsToString() (r string) {
for _, tag := range a.tags {
r = fmt.Sprintf("%s,%s", r, tag)
}
return
}
func getExtension(fullpath string) (ext string) { func getExtension(fullpath string) (ext string) {
parts := strings.Split(fullpath, ".") parts := strings.Split(fullpath, ".")
ext = parts[len(parts)-1] ext = parts[len(parts)-1]
@ -43,17 +36,6 @@ func (p *Pixiv) downloadIllust(i Illust) (err error) {
} }
var art artwork var art artwork
for _, tag := range i.Tags.Tags {
if len(tag.Translation.En) > 0 {
art.tags = append(art.tags, tag.Translation.En)
} else if len(tag.Romaji) > 0 {
art.tags = append(art.tags, tag.Romaji)
} else {
art.tags = append(art.tags, tag.Tag)
}
}
art.tags = append(art.tags, i.UserName)
art.tags = append(art.tags, fmt.Sprintf("pixiv_id_%s", i.UserID))
for pageNumber, page := range i.Pages { for pageNumber, page := range i.Pages {
directory := fmt.Sprintf("%s/%s_%s/", p.WorkDirectory, i.UserID, i.UserAccount) directory := fmt.Sprintf("%s/%s_%s/", p.WorkDirectory, i.UserID, i.UserAccount)
@ -80,7 +62,7 @@ func (p *Pixiv) downloadIllust(i Illust) (err error) {
return err return err
} }
if p.setxattr { if p.setxattr {
err = syscall.Setxattr(outfile.Name(), "user.xdg.tags", []byte(art.tagsToString()), 0) err = syscall.Setxattr(outfile.Name(), "user.xdg.tags", []byte(i.TagsString()), 0)
if err != nil { if err != nil {
return err return err
} }

View File

@ -102,6 +102,17 @@ func (p *Pixiv) GetIllust(illustID string) (r Illust, err error) {
page.Height = r.Height page.Height = r.Height
r.Pages = append(r.Pages, page) r.Pages = append(r.Pages, page)
} }
for _, tag := range r.Tags.Tags {
if len(tag.Translation.En) > 0 {
r.stringTags = append(r.stringTags, tag.Translation.En)
} else if len(tag.Romaji) > 0 {
r.stringTags = append(r.stringTags, tag.Romaji)
} else {
r.stringTags = append(r.stringTags, tag.Tag)
}
}
r.stringTags = append(r.stringTags, r.UserName)
r.stringTags = append(r.stringTags, fmt.Sprintf("pixiv_id_%s", r.UserID))
return return
} }

View File

@ -1,5 +1,7 @@
package pixiv package pixiv
import "fmt"
//Illust . //Illust .
type Illust struct { type Illust struct {
complited bool complited bool
@ -27,6 +29,7 @@ type Illust struct {
Tags []IllustTag `json:"tags"` Tags []IllustTag `json:"tags"`
Writable bool `json:"writable"` Writable bool `json:"writable"`
} `json:"tags,omitempty"` } `json:"tags,omitempty"`
stringTags []string
UserID string `json:"userId"` UserID string `json:"userId"`
UserName string `json:"userName"` UserName string `json:"userName"`
UserAccount string `json:"userAccount"` UserAccount string `json:"userAccount"`
@ -46,6 +49,14 @@ type Illust struct {
ProfileImageURL string `json:"profileImageUrl"` ProfileImageURL string `json:"profileImageUrl"`
} }
// TagsString returns tags in one string separated by "," character
func (i *Illust) TagsString() (r string) {
for _, tag := range i.stringTags {
r = fmt.Sprintf("%s,%s", r, tag)
}
return
}
//IllustTag . //IllustTag .
type IllustTag struct { type IllustTag struct {
Tag string `json:"tag"` Tag string `json:"tag"`