feat: add link to song's album on lyrics page
This commit is contained in:
parent
273176a57c
commit
9c8ed042a5
21
lyrics.go
21
lyrics.go
@ -11,12 +11,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type song struct {
|
type song struct {
|
||||||
Artist string
|
Artist string
|
||||||
Title string
|
Title string
|
||||||
Image string
|
Image string
|
||||||
Lyrics string
|
Lyrics string
|
||||||
Credits map[string]string
|
Credits map[string]string
|
||||||
About [2]string
|
About [2]string
|
||||||
|
Album string
|
||||||
|
LinkToAlbum string
|
||||||
}
|
}
|
||||||
|
|
||||||
type songResponse struct {
|
type songResponse struct {
|
||||||
@ -28,6 +30,10 @@ type songResponse struct {
|
|||||||
Description struct {
|
Description struct {
|
||||||
Plain string
|
Plain string
|
||||||
}
|
}
|
||||||
|
Album struct {
|
||||||
|
Url string `json:"url"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
CustomPerformances []customPerformance `json:"custom_performances"`
|
CustomPerformances []customPerformance `json:"custom_performances"`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,6 +60,7 @@ func (s *song) parseSongData(doc *goquery.Document) {
|
|||||||
attr, exists := doc.Find("meta[property='twitter:app:url:iphone']").Attr("content")
|
attr, exists := doc.Find("meta[property='twitter:app:url:iphone']").Attr("content")
|
||||||
if exists {
|
if exists {
|
||||||
songID := strings.Replace(attr, "genius://songs/", "", 1)
|
songID := strings.Replace(attr, "genius://songs/", "", 1)
|
||||||
|
|
||||||
u := fmt.Sprintf("https://genius.com/api/songs/%s?text_format=plain", songID)
|
u := fmt.Sprintf("https://genius.com/api/songs/%s?text_format=plain", songID)
|
||||||
|
|
||||||
res, err := sendRequest(u)
|
res, err := sendRequest(u)
|
||||||
@ -77,6 +84,8 @@ func (s *song) parseSongData(doc *goquery.Document) {
|
|||||||
s.About[0] = songData.Description.Plain
|
s.About[0] = songData.Description.Plain
|
||||||
s.About[1] = truncateText(songData.Description.Plain)
|
s.About[1] = truncateText(songData.Description.Plain)
|
||||||
s.Credits = make(map[string]string)
|
s.Credits = make(map[string]string)
|
||||||
|
s.Album = songData.Album.Name
|
||||||
|
s.LinkToAlbum = strings.Replace(songData.Album.Url, "https://genius.com", "", -1)
|
||||||
|
|
||||||
for _, perf := range songData.CustomPerformances {
|
for _, perf := range songData.CustomPerformances {
|
||||||
var artists []string
|
var artists []string
|
||||||
|
@ -101,7 +101,7 @@ a {
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
#metadata > img {
|
#album-artwork {
|
||||||
width: 20rem;
|
width: 20rem;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
box-shadow: 0 1px 1px #ddd;
|
box-shadow: 0 1px 1px #ddd;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
{{template "navbar"}}
|
{{template "navbar"}}
|
||||||
<div id="container">
|
<div id="container">
|
||||||
<div id="metadata">
|
<div id="metadata">
|
||||||
<img src="{{extractURL .Image}}"/>
|
<img id="album-artwork" src="{{extractURL .Image}}"/>
|
||||||
<h2>{{.Artist}}</h2>
|
<h2>{{.Artist}}</h2>
|
||||||
<h1>{{.Name}}</h1>
|
<h1>{{.Name}}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,9 +11,10 @@
|
|||||||
{{template "navbar"}}
|
{{template "navbar"}}
|
||||||
<div id="container">
|
<div id="container">
|
||||||
<div id="metadata">
|
<div id="metadata">
|
||||||
<img src="{{extractURL .Image}}"/>
|
<a href="{{.LinkToAlbum}}"><img id="album-artwork" src="{{extractURL .Image}}"/></a>
|
||||||
<h2>{{.Artist}}</h2>
|
<h2>{{.Artist}}</h2>
|
||||||
<h1>{{.Title}}</h1>
|
<h1>{{.Title}}</h1>
|
||||||
|
<a href="{{.LinkToAlbum}}"><h2>{{.Album}}</h2></a>
|
||||||
</div>
|
</div>
|
||||||
<div id="lyrics">{{.Lyrics}}</div>
|
<div id="lyrics">{{.Lyrics}}</div>
|
||||||
<div id="info">
|
<div id="info">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user