mirror of
https://codeberg.org/video-prize-ranch/rimgo.git
synced 2025-07-20 09:58:23 +00:00
Switch to scraping card view for more info
This commit is contained in:
parent
5dc95f4470
commit
b526efc7ad
@ -15,13 +15,15 @@ type SearchResult struct {
|
|||||||
Url string
|
Url string
|
||||||
ImageUrl string
|
ImageUrl string
|
||||||
Title string
|
Title string
|
||||||
|
User string
|
||||||
Points string
|
Points string
|
||||||
Views string
|
Views string
|
||||||
|
RelTime string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (client *Client) Search(query string) ([]SearchResult, error) {
|
func (client *Client) Search(query string) ([]SearchResult, error) {
|
||||||
query = url.QueryEscape(query)
|
query = url.QueryEscape(query)
|
||||||
req, err := http.NewRequest("GET", "https://imgur.com/search?q=" + query, nil)
|
req, err := http.NewRequest("GET", "https://imgur.com/search?qs=list&q=" + query, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []SearchResult{}, err
|
return []SearchResult{}, err
|
||||||
}
|
}
|
||||||
@ -42,23 +44,26 @@ func (client *Client) Search(query string) ([]SearchResult, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
results := []SearchResult{}
|
results := []SearchResult{}
|
||||||
doc.Find(".post").Each(func(i int, s *goquery.Selection) {
|
doc.Find(".post-list").Each(func(i int, s *goquery.Selection) {
|
||||||
url, _ := s.Find("a").Attr("href")
|
url, _ := s.Find("a").Attr("href")
|
||||||
imageUrl, _ := s.Find("img").Attr("src")
|
imageUrl, _ := s.Find("img").Attr("src")
|
||||||
|
|
||||||
views := s.Find(".post-info").Text()
|
postInfo := strings.Split(s.Find(".post-info").Text(), "·")
|
||||||
views = strings.Split(views, "·")[1]
|
points := strings.TrimSpace(postInfo[0])
|
||||||
views = strings.TrimSpace(views)
|
points = strings.TrimSuffix(points, " points")
|
||||||
|
views := strings.TrimSpace(postInfo[1])
|
||||||
views = strings.TrimSuffix(views, " views")
|
views = strings.TrimSuffix(views, " views")
|
||||||
|
|
||||||
result := SearchResult{
|
result := SearchResult{
|
||||||
Id: strings.Split(url, "/")[2],
|
Id: strings.Split(url, "/")[2],
|
||||||
Url: url,
|
Url: url,
|
||||||
ImageUrl: strings.ReplaceAll(imageUrl, "//i.imgur.com", ""),
|
ImageUrl: strings.ReplaceAll(imageUrl, "//i.imgur.com", ""),
|
||||||
Title: s.Find(".hover p").Text(),
|
Title: s.Find(".search-item-title a").Text(),
|
||||||
|
User: s.Find(".account").Text(),
|
||||||
Views: views,
|
Views: views,
|
||||||
|
Points: points,
|
||||||
|
RelTime: strings.TrimSpace(postInfo[2]),
|
||||||
}
|
}
|
||||||
result.Points = s.Find(".points-" + result.Id).Text()
|
|
||||||
|
|
||||||
results = append(results, result)
|
results = append(results, result)
|
||||||
})
|
})
|
||||||
|
2
main.go
2
main.go
@ -94,7 +94,7 @@ func main() {
|
|||||||
Expiration: 30 * time.Minute,
|
Expiration: 30 * time.Minute,
|
||||||
MaxBytes: 25000000,
|
MaxBytes: 25000000,
|
||||||
KeyGenerator: func(c *fiber.Ctx) string {
|
KeyGenerator: func(c *fiber.Ctx) string {
|
||||||
return c.Path() + c.Query("q") + c.Query("no_webp")
|
return c.OriginalURL()
|
||||||
},
|
},
|
||||||
CacheControl: true,
|
CacheControl: true,
|
||||||
StoreResponseHeaders: true,
|
StoreResponseHeaders: true,
|
||||||
|
@ -1,16 +1,26 @@
|
|||||||
<a href="{{Url}}">
|
<div class="bg-slate-600 rounded-lg">
|
||||||
<div class="bg-slate-600 rounded-lg">
|
<a href="{{Url}}">
|
||||||
<img src="{{ImageUrl}}?no_webp=1" loading="lazy" width="100%" height="100%">
|
<img src="{{ImageUrl}}?no_webp=1" loading="lazy" width="100%" height="100%">
|
||||||
<p class="m-2 text-ellipsis whitespace-nowrap overflow-hidden">{{Title}}</p>
|
</a>
|
||||||
<div class="flex gap-2 p-2">
|
<p class="m-2 text-ellipsis whitespace-nowrap overflow-hidden">
|
||||||
<div class="flex gap-1">
|
<a href="{{Url}}">{{Title}}</a><br />
|
||||||
<img class="invert icon" src="/static/icons/PhArrowFatUp.svg" alt="Points" width="18px" height="18px">
|
{{#if User}}
|
||||||
{{Points}}
|
by <a href="/user/{{User}}">{{User}}</a>
|
||||||
</div>
|
{{else}}
|
||||||
<div class="flex gap-1">
|
<br />
|
||||||
<img class="invert icon" src="/static/icons/PhEye.svg" alt="Views" width="18px" height="18px">
|
{{/if}}
|
||||||
{{Views}}
|
</p>
|
||||||
</div>
|
<div class="flex gap-2 p-2">
|
||||||
|
<div class="flex gap-1">
|
||||||
|
{{RelTime}}
|
||||||
|
</div>
|
||||||
|
<div class="flex gap-1">
|
||||||
|
<img class="invert icon" src="/static/icons/PhArrowFatUp.svg" alt="Points" width="18px" height="18px">
|
||||||
|
{{Points}}
|
||||||
|
</div>
|
||||||
|
<div class="flex gap-1">
|
||||||
|
<img class="invert icon" src="/static/icons/PhEye.svg" alt="Views" width="18px" height="18px">
|
||||||
|
{{Views}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</div>
|
Loading…
Reference in New Issue
Block a user