Joey Wang

Joey Wang的博客

他的个人主页  他的博客

通过dbus用pidgin手机短信通知主机信息

Joey Wang  2009年11月18日 星期三 20:30 | 2748次浏览 | 24条评论

一个dbus的小尝试

最近总是在外面逛,手机上网又麻烦,前段时间听同学说,139邮箱可以短信通知邮件,让我也申一个。可惜我太懒惰,不想申这么多的邮箱,麻烦。但是想到有短信通知,还是比较cool的。想了又想,觉得可以在自己的电脑上做点手脚....

freedesktop上的dbus很有用,可以把不同的程序串在一起。于是乎,我想了一下,用bash写一个自动查邮件的脚本,然后用python的dbus库,调动pidgin的fetion插件,给我的手机发信息。大体思想就是这样。

bash脚本很快就能炮制出来:

因为我用的gmail,所以大体如下,

curl -u “USERNAME”:“PASSWORD” "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{ for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/From:\2 - Title:\1/p" | head -n 2 > ~/newmail


这样,通过检查newmail这个文件是否不为空。如果有邮件,把newmail的内容当作短信发就是了。

下一步就是搞定pidgin..

查了一下http://developer.pidgin.im/wiki/DbusHowto 这个十分详细的文档,心里大概有个数。

python脚本大概如下:

import dbus
bus=dbus.SessionBus()
obj=bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple=dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
这些就是初始化一下这个dbus object

然后就可以开始工作了。

我先试验了一下,我的fetion这个IM的account号是:1384,我需要对自己发信息,我自己的fetion号是"867614520@fetion.com.cn;p=393" ,恩~ 就用这两个就行。

先开启一个新对话(这个的前提是我们的pidgin已经启动了,并且fetion登上)

purple.PurpleConversationNew(1, 1384, "sip:867614520@fetion.com.cn;p=393")

这个对话就建立起来了,然后就是发信息了。

根据pidgin的文档,发信息需要知道im。

所以我们多做一个查询:

im=purple.PurpleConvIm(conversation[0])

然后万事俱备,只欠东风。

purple.PurpleConvImSend(im,msg)

这里,"msg"就是那个newmail的内容。

这就是全部过程。

不过需要进一步完善,比如需要提前判定,那个newmail是否为空,不为空才发短信;还有就是那个检查邮件的脚本需要自动检查邮件,这个可以用cron也可以用编程方式达到。还有就是,万一pidgin没有登录,需要用几句话把pidgin给打开。

恩~ 差不多就这些,这个思想还可以括展开,比如主机的状况阿,比如,如果出现一些你需要在远方知道的东西(比如,amule挂点了),用短信读一下还是比较惬意......

就说到这里了哈,主要我刚开始学python,前面bash完成的事情其实可以用python一并解决的。

总之,就是一个灵机一动的小东西,给大家带来方便。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
周海汉

回复 周海汉  2009年12月02日 星期三 14:13

强!

0条回复

杨光

回复 杨光  2009年11月28日 星期六 18:08

  • Joey Wang

    回复 Joey Wang  2009年11月29日 星期日 00:07

    哇,真的...
    多谢提供这个信息。我研究一下......

    2条回复

      • 杨光

        回复 杨光  2009年11月29日 星期日 01:13

        那时候用openbox 用这个做了个键绑定 专门给媳妇发短信……

        1条回复

          • Joey Wang

            回复 Joey Wang  2009年11月29日 星期日 12:43

            太强了...
            哈哈~我也是这样的想法,给她发短信就方便,还能让她随时看邮件。
            openbox...不太熟悉...对gnome的了解太初级了.....需要补课的....呵呵

            0条回复

阿华

回复 阿华  2009年11月23日 星期一 20:58

学以致用,好!

0条回复

李津宇

回复 李津宇  2009年11月23日 星期一 14:04

学习了。

0条回复

梁锦华

回复 梁锦华  2009年11月23日 星期一 12:50

好强好有趣!

0条回复

pt

回复 pt  2009年11月22日 星期日 23:18

有意思!

0条回复

阿宝

回复 阿宝  2009年11月22日 星期日 12:02

唉,我一直都有这个灵感,但是我一个人搞自由抽不下去了,所以开始弄C#了
计划也搞一个这样子的东东!~

3条回复

邱旭培

回复 邱旭培  2009年11月22日 星期日 10:44

自从有了自由软件,灵感就要强一点

1条回复

周明可

回复 周明可  2009年11月22日 星期日 00:38

很牛的创意哦

0条回复

陈少

回复 陈少  2009年11月21日 星期六 15:43

厉害厉害!

0条回复

谢义强

回复 谢义强  2009年11月21日 星期六 13:04

Cool...学习下

0条回复

张超

回复 张超  2009年11月21日 星期六 13:01

我是联通的,能否给点解决办法?联通的wo

2条回复

  • 周伟

    回复 周伟  2009年11月26日 星期四 10:40

    貌似fetion打算和其它的mobile isp互通?

    0条回复

  • Joey Wang

    回复 Joey Wang  2009年11月22日 星期日 16:07

    好像也不是不行,我觉得是不是可以分析一下他们的主机来想想,比如开辟(或者hack出)一个可验证身份的通道,调用一些他们的api(可能找不到相应的doc,需要自己来探索)来完成?没有做过这个研究哈,只是这个不成熟的想法。

    0条回复

Kenny He

回复 Kenny He  2009年11月21日 星期六 12:56

呵呵。顶一下。之前我也做了个飞信机器人,做通知还是不错的。有空可一起交流。

1条回复

  • Joey Wang

    回复 Joey Wang  2009年11月22日 星期日 16:02

    恩,好的哈。我准备把这个弄成守护进程的,这样会稳定一些。

    0条回复

时慧

回复 时慧  2009年11月19日 星期四 00:01

厉害,佩服佩服

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号