微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VK_API:音乐问题,json解码器

如何解决VK_API:音乐问题,json解码器

我正在尝试为 VK 制作一个特殊的解析器,它从某个用户页面下载所有音乐,但是 vk_api 存在一些问题,它允许访问音频文件。我正在尝试调用方法 get() 来获取所有曲目的列表,但是启动了这个程序:

session = vk_api.VkApi(token=tkn)
vk = session.get_api()
vk_audio = audio.VkAudio(session)


def get_list_audio():
    dct = vk_audio.get(owner_id=owner_id,album_id=None,access_hash=None)
    return dct

print(get_list_audio())

显示错误,与 json 解码器相关:

Traceback (most recent call last):
  File "C:\Users\ann\PycharmProjects\vk-parser\main.py",line 44,in <module>
    print(get_list_audio())
  File "C:\Users\ann\PycharmProjects\vk-parser\main.py",line 38,in get_list_audio
    dct = vk_audio.get(owner_id=owner_id,access_hash=None)
  File "D:\PycharmProjects\vk-parser\lib\site-packages\vk_api\audio.py",line 158,in get
    return list(self.get_iter(owner_id,album_id,access_hash))
  File "D:\PycharmProjects\vk-parser\lib\site-packages\vk_api\audio.py",line 107,in get_iter
    response = self._vk.http.post(
  File "D:\PycharmProjects\vk-parser\lib\site-packages\requests\models.py",line 900,in json
    return complexjson.loads(self.text,**kwargs)
  File "C:\Python 3.9\lib\json\__init__.py",line 346,in loads
    return _default_decoder.decode(s)
  File "C:\Python 3.9\lib\json\decoder.py",line 337,in decode
    obj,end = self.raw_decode(s,idx=_w(s,0).end())
  File "C:\Python 3.9\lib\json\decoder.py",line 355,in raw_decode
    raise JSONDecodeError("Expecting value",s,err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

请给一些提示,我该怎么办?

解决方法

vk_api/audio.py 只向 m.vk.com/audio 发出 POST 请求:

enter image description here

并且在尝试将响应转换为 json 时发生错误(第 119 行)。如果我们手动运行这些行(或者您可以随时使用调试器查看会发生什么),我们会看到 302 http 错误和空响应。 json() 无法从这个空响应中获取 json,因此您会看到异常。您必须选择另一个库(与 vk api 一起使用)或自己编写这些操作。或者修复这个库代码:)

可能这个 vk_api 库不支持 vk.com 中发生的更改。您可以从库中获取此代码,并根据它创建自己的获取音频的方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。