react-native - Soundcloud API /stream 端点给出 401 错误
问题描述
我正在尝试编写一个反应原生应用程序,它将从 Soundcloud 流式传输一些曲目。作为测试,我一直在使用 python 使用 API,并且我能够发出请求来解析 url、提取播放列表/曲目以及我需要的所有其他内容。
话虽如此,当向任何给定轨道的 stream_url 发出请求时,我收到 401 错误。
当前有问题的网址是: https ://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1
我试过没有 ?client_id...,我试过替换 ? 使用&,我尝试获取另一个client_id,我尝试使用allow_redirects 作为true 和false,但似乎没有任何效果。任何帮助将不胜感激。
每个轨道的流媒体属性都是 True,所以它不应该是权限问题。
编辑:
经过一番研究,我找到了一个半成功的解决方法。API 的 /stream 端点仍然无法工作,但如果您将目标端点更改为http://feeds.soundcloud.com/users/soundcloud:users :/sounds.rss,它将为您提供一个 RSS 提要(大部分)与使用曲目或播放列表 API 端点所获得的相同。
其中包含的链接可以流式传输。
解决方案
好的,我想我找到了一个适用于大多数人的通用解决方案。我希望它更容易,但这是我发现的最简单的东西。
使用 API 从用户那里提取曲目。您可以使用linked_partitioning 和next_href 属性来收集所有内容,因为每次调用的最大限制为200 条轨道。
使用从 JSON 中提取的数据,您可以使用 permalink_url 键来获取您在浏览器中输入的相同内容。
向 permalink_url 发出请求并访问 HTML。您需要进行一些解析,但您想要的 url 将具有以下效果:
您可能可以使用正则表达式来简单地解析它。
向这个 url 添加 ?client_id=... 请求,它会在它的返回 json 中给你 YET ANOTHER url。
使用从上一步返回的 url,您可以直接链接到浏览器中的那个,它会将您带到您的跟踪内容。我通过输入链接检查了 VLC,它正确地流式传输。
希望这对你们中的一些人有所帮助。
推荐阅读
- r - 多元回归不起作用:残差:所有 349 个残差均为 0:无残差自由度
- html - 去除 html/css 中图片的边距
- c# - 输入特定范围内的数字,当它们的总和达到 5 位数字时将它们相加
- three.js - THREE.js 斜边着色器
- java - 具有最小冲突的两个整数数组的哈希函数
- r - 将一列中的文本数据转换为R中的数字数据
- pyspark - pyspark中部分数据帧的聚合
- javascript - 为什么会出现[object object]而不是object信息?
- docker - Ubuntu 上的虚拟机中的 Docker
- xml - 如何解决 XmlBeanDefinitionStoreException?