【问题标题】:Checking to see if a song is available to play with Spotipy检查是否可以使用 Spotipy 播放歌曲
【发布时间】:2021-04-28 12:47:36
【问题描述】:

我的问题:区分可播放和不可播放的曲目。

我正在尝试使用 Spotipy 打印播放列表中所有曲目的元数据详细信息。 我添加到播放列表中的某些歌曲不再可用,因此不会显示在我的 spotify 播放列表中(灰显)。但是,它们通常会与其他可用的轨道一起打印。我不希望他们在那里;如果我此时无法播放它们,我不希望它们显示在我打印的播放列表中。

我检查该曲目在哪些市场上可用,以确定是否应该打印。这工作正常。

'available_markets': []

我遇到的问题是,有些曲目没有任何可用的市场并且是空的,就像代码 sn-p 显示的那样。它们与我无法使用的歌曲曲目相同。但我仍然可以玩它们!这意味着我删除不可用歌曲的代码也会删除可播放的歌曲。

我还没有找到另一种方法来获取有关曲目是否真的可用的数据。我错过了什么?

更新:找到了解决方案。作为答案发布。

【问题讨论】:

    标签: python spotify spotipy


    【解决方案1】:

    检查轨道在市场中是否可用和/或可用市场字段是否为空,在这两种情况下都应返回 true。

    会是这样的

    if something in available_markets or not available_markets:
      print("It works!")
    

    【讨论】:

    • 对不起,如果我不清楚我的问题,但这正是我的代码现在正在做的事情。但是,我发现许多没有任何可用市场的曲目,例如我原始帖子中的代码 sn-p,它们对我来说仍然可以播放。此代码确实会删除所有不可用和无法播放的曲目,它还会删除许多完全正常的曲目。我会发布一些例子。
    【解决方案2】:

    我最近选择了这个项目,并找到了一个可行的解决方案。

    每首曲目都有一个 is_playable 条目,但它仅在您在查找曲目时指定市场时才会显示。这解决了曲目的市场列表为空白,但曲目仍可在您的市场中播放的问题。至少到目前为止,在我的测试中,它正确地找到了无法播放的曲目。

    track(track_id, market='NO')
    TypeError: track() got an unexpected keyword argument 'market'
    

    将此参数添加到 Spotipys track() 时,我的代码无法正常工作。我只有错误。我的市场是挪威。

    但是我发现,如果我将市场直接添加到函数中,它会起作用.. 不知何故。

    track('spotify:track:0eueRkrPsChXjeJA421OWp?market=NO')
    mytrack['is_playable']
    

    我还发现,如果我在 playlist_tracks() 函数中使用 market 参数,它不会出错,即使我以与 track() 函数中相同的方式使用它。

    user_playlist_tracks(user=None, playlist_id=None, fields=None, limit=100, offset=0, market=None)
    

    我是这样使用的:

    playlist_tracks('myplaylistid', offset=0, market='NO')
    mytrack['track']['is_playable']
    

    我不知道为什么。在两个不同的函数中使用相同的输入,我得到一个错误而不是另一个错误。也许我做错了什么?无论如何,我认为我应该在这里更新,以防它可以帮助其他人遇到同样的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多