管理Google Alerts的Python库
项目描述
简介
galerts是一个用于管理Google Alerts的Python客户端。目前它依赖于从Google的网页界面抓取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 ...>
到目前为止,我们只更改了内存中的值;在Google看来,警报仍然具有旧值
>>> list(gam.alerts) [<Alert for "Corner Confectionary" at ...>]
要将结果保存到Google,请执行以下操作:
>>> gam.update(alert)
现在它应该已经更新了
>>> list(gam.alerts) [<Alert for "Corner Confectionery" at ...>]
你可能已经注意到,Alert.query属性返回一个unicode值。Google允许带有非ASCII字符的警报查询,因此我们通过unicode支持这一点。为了方便,你可以将Alert.query设置为字符串而不是上面我们使用的unicode,它将自动转换为unicode;只需确保unicode(yourstring)不会失败。
如上所示,每次你访问gam.alerts时,GAlertsManager都会向Google请求你的警报并创建带有Google返回信息的新的Alert对象。当我们每次访问gam.alerts时,可能有一个对象代表一个警报,我们可以保留并操作这个对象,同时管理器继续创建代表相同警报的新对象。由gam.alerts返回的警报应被视为在请求时Google拥有的信息的快照,而不是作为保持最新状态的数据的规范表示。 Alert对象是一次性的;它们仅仅用来封装一些字符串属性。因此,你可以将任何旧的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后,我们的更改应该会保持,但如果我们想知道警报的feed的URL,我们必须获取一个新的Alert对象。
>>> gam.update(alert) >>> alert.feedurl # this is now stale None >>> oldalert = alert # so get a fresh one >>> alert = next(gam.alerts) >>> alert.feedurl # and now it's up-to-date: 'http://www.google.com/alerts/feed/...' >>> alert == oldalert # feedurls don't match False
其他属性保持不变
>>> 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和一个可选的交付频率freq,如果我们想使用默认以外的“实时”。
让我们演示将我们创建的订阅源警报更改为电子邮件警报
>>> alert = next(gam.alerts) >>> str(alert) '<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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd7f7bf8078b7e3892aac97a4c187450572da5100d8ce83c2cea63d7fed93053 |
|
MD5 | db0a480c3b6c0cb31de75950cc9a94c9 |
|
BLAKE2b-256 | 6cdc54111a4ee454b1ad1cbdbf72829716de58c98c1c747592efec6cd682d360 |