用于管理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.alertsGAlertsManager时 在google上搜索您的警报,并使用这些信息创建新的Alert对象 谷歌回来了我们可以有一个目标 代表一个警报,我们可以在经理 每次我们 访问gam.alertsgam.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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java流收集组合器   文件如何在java中逐个压缩选定的多个文件夹   从Google存储下载数据时发生java SocketTimeoutException   java在安卓应用程序客户端上从python服务器接收值,然后显示与该值对应的mysql数据   数组如何在Java中测试字符串索引是否为Null   java将一串值拆分并放入一个表中   java Spring Memcached注释不缓存   调用pom中设置的环境变量时出现java问题。xml surefire插件   java修复JFrame中重叠的鼠标侦听器   格式化java。sql。日期至yyyyMMdd   java声音剪辑。如果剪辑不正确,isActive应返回true。启动被调用   无根计算机上hadoop中的java格式化namenode   从字符串数组中删除重复项,而无需在Java中进行显式比较   java Eclipse插件安装错误   java webdriver无法在firefox中单击超链接   动画错误。朗。反思。调用目标异常   java试图调用虚拟方法“void”。小装置。编辑文本。在空对象引用上添加TextChangedListener(安卓.text.TextWatcher)”