feat: add link to song's album on lyrics page

This commit is contained in:
Jackson Taylor 2023-09-05 16:47:21 -04:00
parent 273176a57c
commit 9c8ed042a5
4 changed files with 19 additions and 9 deletions

View File

@ -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

View File

@ -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;

View File

@ -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>

View File

@ -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">