用于管理google警报的python库
galerts的Python项目详细描述
简介
galerts是一个用于管理Google Alerts的Python客户机目前它使用从 google的web界面,因为到目前为止还没有公共api。如果他们曾经 决定发布一个,galerts将切换到使用它
请找到galerts on github 如果你有任何问题或想合作。
用法
首先为给定帐户创建警报管理器:
>>> import galerts >>> gam = galerts.GAlertsManager('cornelius@gmail.com', 'p4ssw0rd')
(注意:明文密码仅用于获取会话cookie,即 通过安全连接发送,然后丢弃。)
现在您可以通过^ {TT1}$访问该帐户的现有警报 属性,它提供了一个生成器,您可以使用它在相应的 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设置为string 而不是像上面那样的unicode,它将被转换为 unicode自动;只要确保unicode(yourstring)不 失败。
如上所示,每次访问gam.alerts,GAlertsManager时 在google上搜索您的警报,并使用这些信息创建新的Alert对象 谷歌回来了我们可以有一个目标 代表一个警报,我们可以在经理 每次我们 访问gam.alerts。gam.alerts返回的警报应视为 谷歌在被请求时所掌握的信息的快照 而不是作为保持最新的数据的规范表示。 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
我们刚刚更改了警报仅从博客发送的结果类型 更新到一个全面的组合,我们改变了交付方法,以便 结果现在将通过feed而不是电子邮件传递。
在我们将这个Alert对象传递给gam.update之后,我们的更改应该会保持不变, 但如果我们想知道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如果需要 不是默认的“发生时”
让我们演示如何将创建的feed警报更改为电子邮件警报:
>>> 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