changeset 2062:163fb7b56e26

Add python based events command script which uses osx 10.8 notification center
author Sharoon Thomas <sharoon.thomas@openlabs.co.in>
date Sun, 06 Jan 2013 09:48:27 +0530
parents f36d60bed54b
children 1b5a19b2ba44
files mcabber/contrib/events/mcnotify-osx.py
diffstat 1 files changed, 64 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mcabber/contrib/events/mcnotify-osx.py	Sun Jan 06 09:48:27 2013 +0530
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# 
+# Copyright (C) 2013 Sharoon Thomas <sharoon.thomas@openlabs.co.in>
+#
+# This script is provided under the terms of the GNU General Public License,
+# see the file COPYING in the root mcabber source directory.
+#
+#
+# This script displays notifications using the new notification center
+# introduced in OSX 10.8.
+import sys
+import os
+
+try:
+    from pync import Notifier
+except ImportError, exc:
+    print "TIP: Use 'pip install pync'"
+    raise exc
+
+
+def handle_msg(type_, source, filename=None):
+    """
+    Handle a message
+
+    :param type_: IN, OUT or MUC (Multi User Chat)
+    :type type_: string
+    :param source: Jabber ID or Nickname, or Room ID for MUC
+    :param filename: Filename of message body if event_log_files was set
+    """
+    if type_ == "IN":
+        if filename:
+            Notifier.notify(
+                open(filename).read(),
+                title=source, group='mcabber',
+            )
+        else:
+            Notifier.notify(
+                "Sent you a message",
+                title=source, group='mcabber',
+            )
+    if filename and os.path.exists(filename):
+        os.remove(filename)
+
+
+def parse(event, *args):
+    """
+    Parses the arguments received and calls the appropriate function
+
+    MSG IN jabber@id [file] (when receiving a message)
+    MSG OUT jabber@id       (when sending a message)
+    MSG MUC room_id [file]  (when receiving a MUC message)
+    STATUS X jabber@id      (new buddy status is X)
+    UNREAD "N x y z"        (number of unread buddy buffers)
+
+    :param event: Type of event "MSG", "STATUS", "UNREAD"
+    :param args: tuple of arguments
+    """
+    if event == "MSG":
+        handle_msg(*args)
+
+if __name__ == "__main__":
+    parse(*sys.argv[1:])
+