使用 `genius` 包获取歌词时出现 `Not Found (HTTP 404)` 错误

`Not Found (HTTP 404)` error when using `genius` package to get lyrics

我创建了一个 dataset,其中包含披头士乐队的所有原创歌曲。我想使用 genius 包获取所有歌曲的歌词。我使用下面的代码获取歌词但是抛出一个错误。

map(beatles_songs$song, ~ genius_lyrics("The Beatles", ., "simple"))
Error in read_xml.response(x$response, ..., as_html = as_html) : 
  Not Found (HTTP 404).
In addition: Warning message:
In request_GET(session, url) : Not Found (HTTP 404).

我想这可能是因为列表中的歌曲名称与genius.com中的歌曲名称不匹配,但我不知道如何检查。那么我应该怎么做才能同时获取所有歌曲的歌词呢?

purrr 包有许多处理警告和错误的函数。我建议像下面这样的东西,灵感来自 this example:

genius_lyrics_s <- safely(genius::genius_lyrics)

beatles_songs <- tibble(song = c("Mr. Moonlight", "She Loves You", "Under my Thumb", "Octopus's Garden"))
map(beatles_songs$song, ~ genius_lyrics_s("The Beatles", ., "simple")) %>% 
map("result") %>%
  compact()

在您的情况下,获得歌曲结果的最佳方式是使用 add_genius()

beatles %>%
  add_genius("The Beatles", song)

正是出于这个原因,genius 包具有函数 possible_lyrics()possible_album()。下次试试看!