MoonFM 介绍

MoonFM 是一款高颜值的播客全平台客户端,目前我把它作为听播客的主力,很早在 Mac 和 iPhone 上都购买了。


一些介绍的文章

  1. https://sspai.com/post/55719
  2. https://www.ifanr.com/app/1082864
  3. https://www.waerfa.com/moon-fm-review

目前同步的问题

同步的问题一直没有正视起来,因为订阅的播客变化没有那么频繁,之前只是通过导出导入 OPML 的方式来实现,但是像进度、收藏这些其实没法同步。

我们先来看下目前官方支持的同步策略,如下图

可以看到需要通过自己设置一个 Couchdb Database URL 填入,官方搭建的教程参见 这里

对于普通用户尤其没有编程相关经验的同学来说,确实比较麻烦,而且还需要一台自己的服务器,有没有一种相对简单,同时成本又低的方式来解决呢

经过一些探索,目前找到了基于 IBM 的 Cloudant 来解决这个问题

Cloudant 介绍

Cloudant 是 IBM 的一个 DBaaS 数据库即服务软件产品,它是基于 Apache 的 CouchDb 项目和开源项目 BigCouch 项目的 NoSQL 分布式数据库。

重点:

  1. Cloudant 完全兼容 CouchDB 的 API,所以可以直接使用 Cloudant 提供的地址
  2. 目前 IBM 有免费的账号体验 (官方称为 Lite Account),且无需信用卡绑定及无时间限制,建议在墙外注册,国内群里也有小伙伴成功,可以尝试一下

操作步骤

  1. 打开 官网 ,先注册个账号,注意密码需包含大小写和数字

2. 登录后点击搜索,输入 Cloudant,进到详情页

3.选择价格套餐,这里我们选择 Lite 套餐,因为我已经申请过一个了,所以提示只能有一个轻量套餐

关于 Lite 套餐的一些限制,在补充中会详细说明

4. 我们接着配置,服务名称随便取,资源组、标记都默认即可,这里比较重要的是 Available authentication methods,注意这里需要选择第一个,因为 MoonFM 使用的是 legacy credentials 的形式

OK,完成创建

5. 点击 Launch Cloudant Dashboard,我们进入 Cloudant 的 Dashboard 页面

先创建一个数据库,这里的名字需要记好

6. 建完数据库后我们回到上一级页面,选择服务凭证,参考下图生成我们的服务凭证

点击查看凭证,其中的 url 字段就是我们所需要的


最后将 url 地址和前面我们创建的数据库的名字拼在一起即生成了最终地址
形式为 url 地址/数据库名

填入对应的客户端即可实现同步~

补充

轻量套餐服务删除的问题

目前轻量级套餐有一些限制如下
a. 每秒 20 次读
b. 每秒 10 次写
c. 每秒 5 次全局查询
d. 轻量套餐服务处于不活动状态达到 30 天后将被删除

对于日常的同步来说,abc 三点应该都不会超出,比较重点的是第 4 点,我们需要关注 30 天的限制

那么 MoonFM 日常使用时的同步机制是如何呢?

同步机制

目前和 MoonFM 作者高爷沟通,在如下情况下的变化都会发生同步

1. 收藏
2. 订阅
3. 当前播放列表
4. 播放历史记录

所以如果你在 30 天内有通过 MoonFM 听过播客,基本就没有什么问题,即使超出 30 天,Cloudant 资源被删除,对于各个客户端来说数据也不会丢失,会在各个端都保存一份,只是服务端的这一份丢失了,如果想要同步,重复以上步骤重建即可。

同步后订阅播客重复问题

如果你之前在手机上和电脑上分别导入过相同的播客,但是可能地址不同,那么在同步后由于播客没有一个统一的 id 来判断是否同一个播客,MoonFM 通过判断 rss 地址是否一样,所以会出现重复,这种情况下只要删除重复的即可

总结

基于 Cloudant 的方案本质是一种在线托管,通过大厂提供的免费的资源来满足我们自己的需求,如果哪天这个方案不可用了,大家可以找寻更合适的在线方案或者自建。

如果有更好的方案,欢迎讨论沟通~