Skip to main content

用于管理 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

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

galerts-0.1.5.tar.gz (99.7 kB 查看哈希

已上传 source