与 Google Reader 同步时如何跳过已知条目?

2023-11-27

为了将离线客户端写入 Google Reader 服务,我想知道如何最好地与该服务同步。

似乎还没有官方文档,到目前为止我找到的最好的来源是:http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI

现在考虑一下:根据上面的信息,我可以下载所有未读的项目,我可以指定要下载的项目数量,并使用atom-id我可以检测已下载的重复条目。

我缺少的是一种指定我只需要自上次同步以来的更新的方法。 我可以说给我 10(参数n=10) 最新(参数r=d) 条目。如果我指定参数r=o(日期升序)那么我还可以指定参数ot=[上次同步时间],但只有那时,当我只想读取某些项目与所有项目时,升序没有任何意义。

知道如何解决这个问题,而无需再次下载所有项目并拒绝重复项吗?这不是一种非常经济的民意调查方式。

有人建议我可以指定只想要未读的条目。但为了使该解决方案以 Google Reader 不再提供此条目的方式工作,我需要将它们标记为已读。反过来,这意味着我需要在客户端上保留自己的已读/未读状态and当用户登录到在线版本的 Google 阅读器时,这些条目已被标记为已读。那对我不起作用。

干杯, 马里亚诺


要获取最新条目,请使用标准的从最新日期降序下载,该下载将从最新条目开始。您将在 XML 结果中收到一个“继续”标记,如下所示:

<gr:continuation>CArhxxjRmNsC</gr:continuation>`

浏览结果,找出任何新的东西。您应该发现,要么所有结果都是新的,要么在某一点上的所有内容都是新的,而之后的所有结果您都已经知道了。

在后一种情况下,你已经完成了,但在前一种情况下,你需要找到比你已经检索到的内容更旧的新内容。通过使用延续来获取从刚刚检索到的集合中的最后一个结果之后开始的结果,方法是在 GET 请求中将其作为c参数,例如:

http://www.google.com/reader/atom/user/-/state/com.google/reading-list?c=CArhxxjRmNsC

继续这样,直到你拥有一切。

The n参数,它是要检索的项目数的计数,非常适合于此,并且您可以随时更改它。如果检查频率是用户设置的,因此可能非常频繁或非常罕见,您可以使用自适应算法来减少网络流量和处理负载。最初请求少量最新条目,例如五个(添加n=5到您的 GET 请求的 URL)。如果全部都是新的,则在下一个请求中, 当你使用延续时,要求一个更大的数字,比如 20。如果这些仍然是新的,要么是提要有很多更新,要么已经有一段时间了,所以以 100 为一组继续,或者其他什么。


但是,如果我错了,请纠正我,您还想知道,在下载一个项目后,其状态是否因使用 Google Reader 界面阅读该项目的人而从“未读”更改为“已读”。

一种方法是:

  1. 更新 Google 上已本地阅读的所有项目的状态。
  2. 检查并保存提要的未读计数。 (您需要在下一步之前执行此操作,以便保证在下载最新项目和检查阅读计数之间没有新项目到达。)
  3. 下载最新项目。
  4. 计算您的阅读次数,并将其与谷歌的进行比较。如果提要的阅读次数比您计算的要高,您就知道有人在 Google 上阅读了某些内容。
  5. 如果在谷歌上阅读了某些内容,请开始下载已读项目并将其与未读项目数据库进行比较。你会发现一些谷歌说已读的项目,而你的数据库声明是未读的;更新这些。继续这样做,直到您发现这些项目的数量等于您的阅读计数与谷歌的阅读计数之间的差异,或者直到下载变得不合理。
  6. 如果您没有找到所有已读项目,这就是生活;将剩余的数量记录为“未找到的未读”总数,您还需要将其包含在您认为未读的本地数量的下一次计算中。

如果用户订阅了很多不同的博客,他也可能对它们进行广泛的标记,因此您可以在每个标签的基础上完成整个事情,而不是针对整个提要,这应该有助于减少数据量,因为如果用户没有在谷歌阅读器上阅读任何新内容,则无需对标签进行任何传输。

整个方案也可以应用于其他状态,例如加星标或未加星标。

现在,正如你所说,这

...这意味着我需要在客户端上保留自己的已读/未读状态,并且当用户登录到在线版本的 Google Reader 时,条目已标记为已读。那对我不起作用。

确实如此。既不保持本地已读/未读状态(因为您无论如何都保留所有项目的数据库),也不标记在谷歌中已读的项目(API 支持)似乎都非常困难,那么为什么这对您不起作用呢?


然而,还有一个进一步的问题:用户可能会在谷歌上将已读的内容标记为未读。这给系统带来了一些麻烦。我的建议是,如果您确实想尝试解决此问题,则假设用户通常只会接触最新的内容,并每次下载最新的几百个左右项目,检查所有项目的状态他们。 (这还不是全部that坏的;下载 100 个项目需要 0.3 秒(300KB)到 2.5 秒(2.5MB),尽管是在非常快的宽带连接上。)

同样,如果用户有大量订阅,他也可能拥有相当多的标签,因此在每个标签的基础上执行此操作会加快速度。实际上,我建议您不仅要按标签进行检查,还要分散检查,每分钟检查一个标签,而不是每二十分钟检查一次所有标签。如果您想降低带宽,您还可以对旧项目的状态更改进行“大检查”,频率低于“新项目”检查的频率,也许每隔几个小时一次。

这有点占用带宽,主要是因为您需要从 Google 下载完整的文章来检查状态。不幸的是,我在可用的 API 文档中看不到任何解决办法。我唯一真正的建议是尽量减少对非新项目的状态检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 Google Reader 同步时如何跳过已知条目? 的相关文章

  • 如何按城市过滤 WikiVoyage API 结果?

    我目前正在尝试使用 wikivoyage API 我当前的 API 调用如下所示 en wikivoyage org w api php action query list search srwhat text srsearch Pari
  • C++标准API

    我是一名学生 也是 C 新手 我正在寻找与 Java API 一样全面的标准 C API 到目前为止我一直在使用cplusplus com http www cplusplus com and cppreference com https
  • jQuery - 解析 JSON 数据 - 变量名称遇到问题

    我第一次深入研究 JSON 数据的使用 不过我有一些使用 jQuery 的经验 我发布到此 URL tumblr api jyoseph com api read json 我想做的是输出返回的 json 到目前为止我所拥有的 docume
  • PayPal Rest API for Payments 在沙箱中返回 NULL

    我有一个 PayPal 沙盒帐户 我可以在 PHP 上使用curl 通过 api 检索令牌 但是处理测试卡只会返回 null 有人看到代码有问题吗 这是 PayPal 沙盒的已知问题吗 下面代码片段中的客户端是伪造的 但是 如前所述 使用我
  • 编写/转换 Meteor 同步函数

    这已经困扰我一段时间了 所以我想我应该对其进行快速的质量检查 如果有一个普通的nodeJS模块或其他东西 并且它在服务器端有一个异步功能 我如何使其同步 例如我如何转换nodejsfs stat异步函数转为同步函数 例如我有 服务器端js
  • 在react.js中调用API渲染数组图片

    我有 API 其中包括 pictures http storage web source images 2016 10 28 edac054f88fd16aee7bc144545fea4b2 jpg http storage web sou
  • Swift:转义闭包捕获非转义参数“onCompletion”

    我的 swift 有问题 我正在尝试发送 API 请求 然后检索数据 但收到以下错误消息 Swift 转义闭包捕获非转义参数 onCompletion 有谁知道我该如何解决这个问题 提前致谢 Code class RestApiManage
  • 如何从网站中提取冠状病毒病例?

    我正在尝试从网站中提取冠状病毒 https www trackcorona live https www trackcorona live 但我得到了一个错误 这是我的代码 response requests get https www t
  • 发送 Microsoft Graph 请求事件返回 400

    我能够通过将 JSON 请求发布到https graph microsoft com v1 0 me calendar events https graph microsoft com v1 0 me calendar events 我已经
  • 关于java中同步的问题;何时/如何/到什么程度

    我正在开发我的第一个多线程程序 并在同步的几个方面陷入困境 我已经浏览了 oracle sun 主页上的多线程教程 以及这里的一些关于 SO 的问题 所以我相信我知道什么是同步 然而 正如我提到的 有几个方面我不太确定如何弄清楚 我以明确问
  • Codeception API 测试响应返回“N/A”

    我正在使用 Laravel 和 Codeception 作为测试框架编写 API 我无法让 Codeception 返回响应代码 我可以从 Codeception 获取响应代码 以及 JSON 响应 我编写了一个简单的测试来从 GET 请求
  • 在.net中的lock语句中调用Thread.Sleep()

    我想知道在已经获取监视器的线程上调用 Thread Sleep 是否会在进入睡眠状态之前释放锁 object o new object Montior Enter o Thread Sleep 1000 Monitor Exit o 当线程
  • 如何确保使用 Microsoft Sync Framework 同步成功?

    我正在使用微软同步框架 https msdn microsoft com en us sync bb736753 aspx同步两个 Microsoft SQL Server 上的表 我创建了一个测试应用程序 它每秒在远程服务器上的表中生成一
  • Yammer API 限制

    Yammer Rest api 文档表示 每个应用程序每个用户在 10 秒内最多可以发出 10 个请求 问题 什么是user这里 是为当前经过身份验证的 yammer 用户发出请求的 IP 地址还是承载令牌 如果我们所有的用户都使用相同的外
  • Booking.com酒店管理API

    我拥有一家酒店 并在 booking com 上查看了 API 因为我想创建自己的前端界面来更新我的酒店房价 房间数 以及通过该 API 上传图片 更新酒店描述 然而 我唯一能找到的是一个 API 供联营公司以一定的价格获取特定位置的酒店等
  • 在Wordpress中通过API创建新用户时如何发送电子邮件密码?

    可以使用以下行通过 API 创建新用户 user id wp insert user user data 我想知道如何向新创建的用户发送包含其密码的电子邮件 Wordpress API 中是否有任何函数可以处理这项工作 还是我应该自己创建并
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • Android 上的 SQLite 和 MongoDB 具有同步功能

    是否可以在 Android 上使用 SQLite 在服务器上使用像 MongoDB 这样的 NoSQL 数据库 并在两者之间进行 2 路数据复制 同步 或者最好在两端使用 SQL 或者在两端使用 NoSQL 但不要混合使用 有几种不同的方法
  • 为 NFL api 生成访问令牌

    NFL 有一个 API 服务 link https api nfl com docs getting started index html https api nfl com docs getting started index html
  • 是否有用于绘制图表的Python API(使用线条连接两个列表之间的相应值)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Given two lists which contain same elements of strin

随机推荐

  • Bjarne Stroustrup 说我们必须避免链表

    我在 YouTube 上看到了这个视频 https www youtube com watch v YQs6IC vgmoBjarne 表示最好使用向量 而不是链表 我无法理解整个事情 所以有人可以用通俗的语言解释他在说什么吗 P S 我是
  • 如何使用 IBOutletCollection 将多个 UIImageView 连接到同一个插座?

    我有 10 个 UIImageViews 做同样的事情 它们有一些用计时器改变图像的 void 方法 我的 UIImageView 是一个插座 我想将所有 10 个 imageView 连接到同一个插座 但界面生成器不允许我这样做 我发现有
  • 如何修复 Plesk 中的 FastCGI 超时问题?

    PHP 支持当前设置为 作为 Fast CGI 运行 我的服务器日志中不断收到这些错误 mod fcgid 45秒内读取数据超时 脚本标头过早结束 index php 我认为应该快速修复 但我找不到要编辑的文件 这是我可以从 Plesk 更
  • firebase Analytics:Android 应用程序卸载统计信息

    我安装了 Firebase SDK 并将以下两行添加到 MainActivity java private FirebaseAnalytics mFirebaseAnalytics mFirebaseAnalytics FirebaseAn
  • html 正文小于其内容

    这是一个基本的插图问题的
  • 在 R 图中的 x 轴下方添加箭头

    我正在尝试在 R 图中的 x 轴下方添加标记特定 x 坐标的箭头 我的 x 轴位于 y 0 并且当我尝试在中使用负 y 坐标时arrows 因此箭头将垂直于 x 轴 我只绘制了箭头的边缘 尽管有一些空间 例如绘制 x 轴标签和刻度线的位置
  • 使用 FullAjaxExceptionHandler 时 h:body 不会重新渲染

    我正在使用 OmniFacesFullAjaxExceptionHandler显示错误页面 错误页面显示正确 但我在这些页面的样式方面遇到问题 我的应用程序使用的模板在 body 元素上定义了 CSS 类 这些类对于正常页面和错误页面是不同
  • Struts 中的控制器

    MVC 中的控制器是什么 Is it struts xml or Servlet 动作类 我们可以有多个吗Controller在我们的应用程序中 拥有多个控制器是一种好的做法吗 在 Struts 中 应用程序控制器层代码 功能分为两部分 A
  • Ruby 中的每个方法和收集方法有什么不同[重复]

    这个问题在这里已经有答案了 从这段代码我不知道这两种方法之间的区别 collect and each a L Z J collect x puts x succ gt M AA K print a class gt Array b L Z
  • 文本块的数据触发器

    我有一个 Textblock 如果属性为 True 或 False 我会尝试更改 Text 属性的值 我遇到的问题是 该标志可能会在屏幕上的不同事件 来自其他组合框的 onchange 事件 上更改 我不确定如何让这个数据触发器工作 因为我
  • 如何在 Windows 中为 Google Chrome 创建 PPAPI 插件?

    我是 PPAPI 开发的新手 并且已经从以下位置下载了已经的示例here 然而 即使在遇到了文档 我无法构建该项目 我有 Microsoft Visual Studio 2010 Windows 操作系统和 Chrome 30 0 1599
  • 在线 Node.js 服务器

    Node js 是否足够成熟 可以在其中构建整个 Web 应用程序 我的意思是完全在 Node js 中 我在某处读到 出于某种原因 Node js 后面应该有 例如 nginx 这是真的吗 Node js 不能独立存在吗 有没有基于 No
  • MongoDB 计数集合 Node.js

    我正在尝试通过 Node js 与 MongoDB 交互 但在使用 count 方法时遇到了一些问题 我在用节点 mongodb native看起来我正在做的事情应该有效 我的代码示例 var get total num docs func
  • 我可以使用 MERGE INTO 来模拟 Apache Derby 中的“upsert”吗?

    我们正在使用 Derby 并且有很多代码 如下所示 try ResultSet rs executeQuery if rs next updateRowSet rs rs updateRow else executeUpdate 过去 我们
  • 使用 Jackson 反序列化通用类型

    我正在尝试创建一个使用 Jackson 来反序列化 POJO 的类 看起来像这样 public class DeserialiserImp
  • 使用负索引从 pyspark 字符串列的最后一个索引中子串多个字符

    密切相关 Spark Dataframe 列与其他列的最后一个字符但我想从中提取多个字符 1 index 我有以下 pyspark 数据框df number event type 0342224022 11 0112964715 11 我想
  • Objective-C 中的非规范化浮点数?

    Stack Overflow 问题 答案的相关性是什么为什么将 0 1f 更改为 0 会使性能降低 10 倍 对于 Objective C 如果有任何相关性 这应该如何改变我的编码习惯 有没有办法在 Mac OS X 上关闭非规范化浮点 看
  • 如何使用 Jest 模拟第三方 React 组件?

    TLDR 模拟从第三方库导入的 React 组件的正确方法是什么 我正在测试一个名为
  • 有没有一种简单的方法来输出按列的 CSV?

    我正在尝试将多个不同长度的数据列表输出到 CSV 文件 每个列表应该是输出 CSV 文件中的一列 有直接的方法吗 如果我将每个列表作为一行输出 我只需循环每个列表并在到达末尾时输出返回 但这种方法在按列工作时不起作用 我想过一次逐项检查所有
  • 与 Google Reader 同步时如何跳过已知条目?

    为了将离线客户端写入 Google Reader 服务 我想知道如何最好地与该服务同步 似乎还没有官方文档 到目前为止我找到的最好的来源是 http code google com p pyrfeed wiki GoogleReaderAP