如何通过URL判断Soundcloud曲目是否为Soundcloud GO预览片段?
过滤SoundCloud 30秒预览曲目的可行方案
无额外API调用的最简方案(优先推荐)
- 校验音频流响应头:你可以在正式加载完整音频流前,先对资源地址发起
HEAD请求,读取响应头中的Content-Length字段。30秒预览音频的大小普遍在2~5MB区间,完整曲目根据时长大多在10MB以上,你可以根据自己抓取的曲目样本调整阈值,低于阈值直接判定为预览曲目过滤即可。该方案几乎不会增加额外请求开销,也不需要调整现有抓取逻辑,是成本最低的实现方式。 - 校验音频时长字段:如果
HEAD请求被平台限制,你可以在拉取到音频前1~2帧数据后,直接读取音频元数据中的duration字段,30秒预览曲目的时长固定在30000毫秒左右,误差不超过100毫秒,检测到符合该时长范围的曲目直接过滤即可,准确度比校验文件大小更高。
官方API调用方案(准确度最高)
如果你的应用本身已经在调用SoundCloud的公开API获取曲目基础信息,不需要额外新增请求,只需要判断返回字段中的full_duration和duration值即可:预览曲目的duration固定为30000,full_duration为曲目实际完整时长,两个数值不一致即可判定为预览曲目过滤。
内容的提问来源于stack exchange,提问作者gordie
相关产品推荐
相关产品推荐

