android - 缓存 SHOUTcast API 结果

标签 android caching shoutcast

我刚刚成为 SHOUTcast 合作伙伴并收到了我的 DevID。

我几乎阅读了这里的所有内容: SHOUTcast_Radio_Directory_API

这里:SHOUTcast_API_License_Agreement

我有一个棘手的问题:我应该缓存他们的 API 调用的结果吗?

如果决定缓存,我将违背 SHOUTcast Radio Directory API 中的要求:

Do not cache the XML for more than 1 day, as station ID's can and will change.

如果我不缓存任何东西,我将违反 SHOUTcast API 许可协议(protocol):

Please do not hammer the servers. We request reasonable usage and recommend that you utilize local caching.

此外,假设我决定缓存结果。由于这些结果 100% 基于用户的查询,缓存这些结果会不会有点傻,因为我的应用的用户可能每次都会输入不同的查询????

为了尝试解决我的问题,我想到了下载整个 SHOUTcast 数据库,每天/每周一次,然后将其上传到我自己的服务器。之后,我的应用程序会将所有查询发送到我的服务器,并且根本不会打扰 SHOUTcast 的服务器。

不过,这种方法的问题是我找不到一次下载整个 SHOUTcast 数据库的方法,就像我们可以使用 IceCast 的 dir.xiph.org/yp.xml 一样。 .

接下来我该怎么办????我应该如何进行?

我害怕违反 SHOUTcast API 许可协议(protocol)并撤销我的 DevId:

We reserve the right to revoke access for DevIDs which abuse the system.

这里有没有人创建过连接到 SHOUTcast 目录的应用程序?如果有,你用过什么方法没有被禁止?

最佳答案

为了完整起见,我将用我想出的解决方案来回答我自己的问题。

经过大量研究,我决定创建一个 30 分钟的缓存,从中检索最后的结果。如果用户更改搜索过滤器,或者缓存过期,则清除所有缓存结果,向 SHOUTcast 的服务器发出新请求并创建新缓存。

代码可以在这里找到:

ShoutcastRadioStationList.java

RadioStationCache.java

关于android - 缓存 SHOUTcast API 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333143/

相关文章:

java - 在 Spring/Hibernate 中正确使用缓存

php - 直播音频流有效 HTTP 资源

android - 使用 AsyncTask 和 Jsoup 发布 APK 时出错

安卓 : Handle OAuth callback using intent-filter

iphone - sdwebimage:表格单元格中的图像在初始加载后被拉伸(stretch)

FFMPEG:Youtube 流媒体质量和速度问题

shell - SHOUTcast 守护程序脚本无法正常运行

java - 当我将按钮放在 Activity 上时,Android 应用程序崩溃,空 Activity 正在工作

android - 如何修改MPAndroidChart BarChart中的条宽?

android - 在 Android 上缓存对象和图像的最佳解决方案?