libpurple/purple-notifications-example

Thu, 20 Sep 2007 16:30:17 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Thu, 20 Sep 2007 16:30:17 +0000
branch
sadrul.currentmedia
changeset 21193
e918a1846d03
parent 16248
a5440f9d7684
child 18068
b6554e3c8224
child 37983
7d134a4a87b2
permissions
-rw-r--r--

Use an independant status type for 'current media' stuff, instead of using
status attributes. This includes changes in both xmpp and msn.
Also, in MSN, CurrentMedia is sent with PSM if you turn on the status and
set the attributes on the account.

11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
1 #!/usr/bin/env python
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
2
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
3 # This is a simple purple notification server.
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
4 # It shows notifications when your buddy signs on or you get an IM message.
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
5 #
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
6 # This script requires Python 2.4 and PyGTK bindings
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
7 #
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
8 # Note that all function names are resolved dynamically, no
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
9 # purple-specific library is needed.
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
10
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
11 import dbus
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
12 import dbus.glib
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
13 import dbus.decorators
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
14 import gobject
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
15 import os
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
16
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
17 def ensureimconversation(conversation, account, name):
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
18 if conversation != 0:
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
19 return conversation
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
20 else:
16248
a5440f9d7684 s/GAIM/PURPLE/ in a comment.
Richard Laager <rlaager@pidgin.im>
parents: 16205
diff changeset
21 # 1 = PURPLE_CONV_IM
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
22 return purple.PurpleConversationNew(1, account, name)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
23
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
24 def receivedimmsg(account, name, message, conversation, flags):
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
25 buddy = purple.PurpleFindBuddy(account, name)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
26 if buddy != 0:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
27 alias = purple.PurpleBuddyGetAlias(buddy)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
28 else:
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
29 alias = name
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
30
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
31 text = "%s says %s" % (alias, message)
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
32 code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
33 "'So what?','Show me',Close,Abuse", text)
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
34
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
35 if code == 101: # so what?
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
36 pass
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
37 else:
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
38 conversation = ensureimconversation(conversation, account, name)
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
39
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
40 if code == 102: # show me
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
41 window = purple.PurpleConversationGetWindow(conversation)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
42 purple.PurpleConvWindowRaise(window)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
43
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
44 if code == 103: # close
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
45 purple.PurpleConversationDestroy(conversation)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
46
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
47 if code == 104: # abuse
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
48 im = purple.PurpleConversationGetImData(conversation)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
49 purple.PurpleConvImSend(im, "Go away you f...")
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
50
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
51
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
52 def buddysignedon(buddyid):
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
53 alias = purple.PurpleBuddyGetAlias(buddyid)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
54 text = "%s is online" % alias
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
55
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
56 code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
57 "'So what?','Let's talk'", text)
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
58
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
59 if code == 101: # so what?
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
60 pass
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
61
13266
aa9cb664e93c [gaim-migrate @ 15631]
Richard Laager <rlaager@pidgin.im>
parents: 13221
diff changeset
62 if code == 102: # talk
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
63 name = purple.PurpleBuddyGetName(buddyid)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
64 account = purple.PurpleBuddyGetAccount(buddyid)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
65 purple.PurpleConversationNew(1, account, name)
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
66
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
67
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
68 bus = dbus.SessionBus()
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
69 obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
70 purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
71
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
72 bus.add_signal_receiver(receivedimmsg,
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
73 dbus_interface = "im.pidgin.purple.PurpleInterface",
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
74 signal_name = "ReceivedImMsg")
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
75
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
76 bus.add_signal_receiver(buddysignedon,
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
77 dbus_interface = "im.pidgin.purple.PurpleInterface",
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
78 signal_name = "BuddySignedOn")
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
79
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
80 print "This is a simple purple notification server."
13266
aa9cb664e93c [gaim-migrate @ 15631]
Richard Laager <rlaager@pidgin.im>
parents: 13221
diff changeset
81 print "It shows notifications when your buddy signs on or you get an IM message."
11331
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
82
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
83 loop = gobject.MainLoop()
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
84 loop.run()
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
85
6e06ed40a312 [gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
86

mercurial