缓存 SHOUTcast API 结果

Caching SHOUTcast API results

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

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

这里:SHOUTcast_API_License_Agreement

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

如果决定缓存,我将违背 SHOUTcast 广播目录中的要求 API:

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

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

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

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

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

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

接下来我该做什么????我该如何进行?

我害怕伤害 SHOUTcast API 许可协议并撤销我的 DevId:

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

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

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

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

代码可以在这里找到:

ShoutcastRadioStationList.java

RadioStationCache.java