Feature: handle search models
This commit is contained in:
parent
7f1e7b3616
commit
a5fbfee28e
|
@ -29,6 +29,7 @@ const (
|
||||||
ArtworkRankingURL = "https://www.pixiv.net/ranking.php?format=json&mode=%s&content=%s&p=%s"
|
ArtworkRankingURL = "https://www.pixiv.net/ranking.php?format=json&mode=%s&content=%s&p=%s"
|
||||||
SearchTagURL = "https://www.pixiv.net/ajax/search/tags/%s"
|
SearchTagURL = "https://www.pixiv.net/ajax/search/tags/%s"
|
||||||
SearchArtworksURL = "https://www.pixiv.net/ajax/search/artworks/%s?order=%s&mode=%s&p=%s&type=%s"
|
SearchArtworksURL = "https://www.pixiv.net/ajax/search/artworks/%s?order=%s&mode=%s&p=%s&type=%s"
|
||||||
|
SearchTopURL = "https://www.pixiv.net/ajax/search/top/%s"
|
||||||
UserInformationURL = "https://www.pixiv.net/ajax/user/%s?full=1"
|
UserInformationURL = "https://www.pixiv.net/ajax/user/%s?full=1"
|
||||||
UserArtworksURL = "https://www.pixiv.net/ajax/user/%s/profile/all"
|
UserArtworksURL = "https://www.pixiv.net/ajax/user/%s/profile/all"
|
||||||
UserArtworksFullURL = "https://www.pixiv.net/ajax/user/%s/profile/illusts?work_category=illustManga&is_first_page=0&lang=en%s"
|
UserArtworksFullURL = "https://www.pixiv.net/ajax/user/%s/profile/illusts?work_category=illustManga&is_first_page=0&lang=en%s"
|
||||||
|
@ -436,3 +437,34 @@ func (p *PixivClient) GetTagData(name string) (models.TagDetail, error) {
|
||||||
|
|
||||||
return tag, nil
|
return tag, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PixivClient) GetSearchTop(name string) (*models.SearchResult, error) {
|
||||||
|
var pr models.PixivResponse
|
||||||
|
var resultRaw struct {
|
||||||
|
*models.SearchResult
|
||||||
|
ArtworksRaw json.RawMessage `json:"illustManga"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var artworks models.SearchArtworks
|
||||||
|
var result *models.SearchResult
|
||||||
|
|
||||||
|
url := fmt.Sprintf(SearchTopURL, name)
|
||||||
|
|
||||||
|
s, err := p.TextRequest(url)
|
||||||
|
|
||||||
|
err = json.Unmarshal([]byte(s), &pr)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal([]byte(pr.Body), &resultRaw)
|
||||||
|
|
||||||
|
result = resultRaw.SearchResult
|
||||||
|
|
||||||
|
err = json.Unmarshal([]byte(resultRaw.ArtworksRaw), &artworks)
|
||||||
|
|
||||||
|
result.Artworks = artworks
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
|
@ -148,3 +148,19 @@ type TagDetail struct {
|
||||||
AlternativeName string `json:"word"`
|
AlternativeName string `json:"word"`
|
||||||
Metadata map[string]string `json:"pixpedia"`
|
Metadata map[string]string `json:"pixpedia"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PopularArtworks struct {
|
||||||
|
Permanent []IllustShort `json:"permanent"`
|
||||||
|
Recent []IllustShort `json:"recent"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SearchArtworks struct {
|
||||||
|
Artworks []IllustShort `json:"data"`
|
||||||
|
Total int `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SearchResult struct {
|
||||||
|
Artworks SearchArtworks
|
||||||
|
Popular PopularArtworks `json:"popular"`
|
||||||
|
RelatedTags []string `json:"relatedTags"`
|
||||||
|
}
|
||||||
|
|
|
@ -2,19 +2,21 @@
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="tag-header">
|
<div class="tag-header">
|
||||||
{{ with .Tag }}
|
<img
|
||||||
<img class="tag-thumbnail" src="{{ .Metadata.image }}" alt="{{ .Name }}" />
|
class="tag-thumbnail"
|
||||||
|
src="{{ .Tag.Metadata.image }}"
|
||||||
|
alt="{{ .Tag.Name }}"
|
||||||
|
/>
|
||||||
|
|
||||||
<div class="tag-details">
|
<div class="tag-details">
|
||||||
<b class="main-tag">#{{ .Name }}</b>
|
<b class="main-tag">#{{ .Tag.Name }}</b>
|
||||||
<span class="translated-tag">{{ .Metadata.tag }}</span>
|
<span class="translated-tag">{{ .Tag.Metadata.tag }}</span>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<span><b>69420</b> works</span>
|
<span><b>{{ .Data.Artworks.Total }}</b> works</span>
|
||||||
|
|
||||||
<p class="tag-description">{{ .Metadata.abstract }}</p>
|
<p class="tag-description">{{ .Tag.Metadata.abstract }}</p>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Switchers here -->
|
<!-- Switchers here -->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -113,8 +113,9 @@ func tag_page(c *gin.Context) {
|
||||||
name := c.Param("name")
|
name := c.Param("name")
|
||||||
|
|
||||||
tag, _ := PC.GetTagData(name)
|
tag, _ := PC.GetTagData(name)
|
||||||
|
result, _ := PC.GetSearchTop(name)
|
||||||
|
|
||||||
c.HTML(http.StatusOK, "tag.html", gin.H{"Tag": tag})
|
c.HTML(http.StatusOK, "tag.html", gin.H{"Tag": tag, "Data": result})
|
||||||
}
|
}
|
||||||
|
|
||||||
func search(c *gin.Context) {
|
func search(c *gin.Context) {
|
||||||
|
|
Loading…
Reference in a new issue