mirror of
https://github.com/zhaarey/apple-music-downloader.git
synced 2025-10-23 15:11:05 +00:00
Compare commits
2 Commits
a652ee12b4
...
4bd24bf537
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4bd24bf537 | ||
|
|
d6fa4fcce3 |
36
main.go
36
main.go
@@ -1734,14 +1734,16 @@ func main() {
|
|||||||
}
|
}
|
||||||
if strings.Contains(urlRaw, "/song/") {
|
if strings.Contains(urlRaw, "/song/") {
|
||||||
fmt.Printf("Song->")
|
fmt.Printf("Song->")
|
||||||
// When dl_song is true from search, we don't need to re-fetch the album URL
|
storefront, songId := checkUrlSong(urlRaw)
|
||||||
if !dl_song {
|
if storefront == "" || songId == "" {
|
||||||
urlRaw, err = getUrlSong(urlRaw, token)
|
fmt.Println("Invalid song URL format.")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
err := ripSong(songId, token, storefront, Config.MediaUserToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Failed to get Song info.")
|
fmt.Println("Failed to rip song:", err)
|
||||||
}
|
}
|
||||||
}
|
continue
|
||||||
dl_song = true
|
|
||||||
}
|
}
|
||||||
parse, err := url.Parse(urlRaw)
|
parse, err := url.Parse(urlRaw)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2309,3 +2311,25 @@ func extractVideo(c string) (string, error) {
|
|||||||
|
|
||||||
return streamUrl.String(), nil
|
return streamUrl.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ripSong(songId string, token string, storefront string, mediaUserToken string) error {
|
||||||
|
// Get song info to find album ID
|
||||||
|
manifest, err := ampapi.GetSongResp(storefront, songId, Config.Language, token)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed to get song response.")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
songData := manifest.Data[0]
|
||||||
|
albumId := songData.Relationships.Albums.Data[0].ID
|
||||||
|
|
||||||
|
// Use album approach but only download the specific song
|
||||||
|
dl_song = true
|
||||||
|
err = ripAlbum(albumId, token, storefront, mediaUserToken, songId)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed to rip song:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user