用于管理 Google 警报的 Python 库
项目描述
介绍
galerts 是一个用于管理Google Alerts的 Python 客户端。目前它求助于从谷歌的网络界面抓取 html,因为目前还没有公共 API。如果他们决定发布一个,galerts 将转而使用它。
如果您有任何问题或想合作,请在 github 上查找galerts。
用法
首先为给定帐户创建一个警报管理器:
>>> import galerts
>>> gam = galerts.GAlertsManager('cornelius@gmail.com', 'p4ssw0rd')
(注意:明文密码仅用于获取会话 cookie,即通过安全连接发送然后丢弃。)
现在您可以通过alerts属性访问该帐户的现有警报,该 属性提供了一个生成器,您可以使用它来迭代相应的 Alert对象:
>>> list(gam.alerts) [<Alert for "Corner Confectionary" at ...>]
看起来我们有一个现有的警报,但它有一个错字。让我们修复它:
>>> alert = next(gam.alerts) >>> alert.query u'Corner Confectionary' >>> alert.query = 'Corner Confectionery' >>> alert <Alert for "Corner Confectionery" at ...>
到目前为止,我们只更改了内存中的值;据谷歌所知,警报仍然具有旧值:
>>> list(gam.alerts) [<Alert for "Corner Confectionary" at ...>]
要将结果保存到 Google,请执行以下操作:
>>> gam.update(alert)
现在应该更新它:
>>> list(gam.alerts) [<Alert for "Corner Confectionary" at ...>]
您可能已经注意到Alert.query属性返回一个unicode 值。Google 允许使用非 ASCII 字符进行警报查询,因此我们通过 unicode 支持这一点。为方便起见,您可以像上面那样将Alert.query设置为字符串 而不是unicode,它会自动转换为 unicode;只要确保unicode(yourstring)不会失败。
正如我们在上面看到的,每次您访问gam.alerts时,GAlertsManager 都会向 Google 询问您的警报,并使用 Google 返回的信息创建新的警报对象。我们可以拥有一个表示警报的对象,这是可以的(并且是可取的),我们可以持有并操纵它,而每次我们访问gam.alerts时,管理器都会继续创建表示相同警报的新对象。gam.alerts返回的警报应作为 Google 在请求时所拥有信息的快照,而不是作为保持最新数据的规范表示。 警报物品是一次性的;它们仅用于包装一些字符串属性。因此,您可以将任何旧的Alert对象传递给gam.update ,管理器将告诉 Google 更新其信息以匹配传入的对象。Alert.__eq__已被覆盖,因此具有相同属性值的两个不同 Alert对象比较相等.
记住这一点,让我们回到旧的Alert对象。假设我们想更改一些其他属性:
>>> alert.type 'Blogs' >>> alert.deliver 'Email' >>> alert.feedurl # we expect this to be None since it's an email alert None >>> alert.freq 'once a week' >>> alert.type = galerts.TYPE_COMPREHENSIVE >>> alert.deliver = galerts.DELIVER_FEED
我们刚刚将警报传递的结果类型从仅博客更新更改为综合组合,并且我们更改了传递方法,现在结果将通过提要而不是通过电子邮件传递。
在我们将此Alert对象传递给gam.update 之后,我们的更改应该会保留,但如果我们想知道警报提要的 url,我们必须获取一个新的Alert对象:
>>> gam.update(alert) >>> alert.feedurl # 现在已经过时了 没有任何 >>> oldalert = alert # 所以换一个新的 >>> 警报 = 下一个(gam.alerts) >>> alert.feedurl # 现在它是最新的: 'http://www.google.com/alerts/feed/...' >>> alert == oldalert # feedurls 不匹配 错误的
其他属性是我们留下的:
>>> alert.query u'Corner Confectionery' >>> alert.type 'Comprehensive' >>> alert.deliver 'feed'
除了当我们将电子邮件提醒更改为提要提醒时,Google 会自动将提醒频率更改为“发生时”,因为新结果会在发现时实时添加到提要中。新警报对象的freq 属性反映了这一点:
>>> alert.freq 'as-it-happens' >>> oldalert.freq # stale 'once a week'
假设我们不再需要此警报。要删除它,请执行以下操作:
>>> gam.delete(alert) >>> list(gam.alerts) []
并创建一个新警报:
>>> query = 'Cake Man Cornelius' >>> type = galerts.TYPE_COMPREHENSIVE >>> gam.create(query, type) >>> list(gam.alerts) [<Alert for "Cake Man Cornelius" at ...>]
请注意,我们没有指定是否需要电子邮件警报或提要警报。在这种情况下,GAlertsManager默认创建提要警报。如果我们想创建一个电子邮件警报,我们可以传递额外的关键字参数feed=False和一个可选的交付频率频率,如果我们想要的不是默认的“as-it-happens”。
让我们演示将我们创建的提要警报更改为电子邮件警报:
>>> 警报 = 下一个(gam.alerts) >>> str(警报) '<Alert query="Cake Man Cornelius" type="Comprehensive" freq="as-it-happens" deliver="feed">' >>> alert.feedurl 'http://www.google.com/alerts/feed/...' >>> alert.deliver = galerts.DELIVER_EMAIL >>> alert.freq = galerts.FREQ_ONCE_A_DAY >>> gam.update(alert)
现在:
>>> alert = next(gam.alerts) >>> str(alert) '<Alert query="Cake Man Cornelius" type="Comprehensive" freq="once a day" deliver="Email">' >>> alert.feedurl None