+#!/usr/bin/python
+
+# Based on https://blog.arrington.me/2012/change-your-skype-mood-text-in-linux-with-python/
+# script to change Skype status, usage: skype_status_mood.py new_status [mood_text]
+
+# Copyright (c) 2010
+# Matthew M. Boedicker <matthewm@boedicker.org>
+#
+# In 2013 Oleg Broytman <phd@phdru.name> added ability to get/set mood text
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+# Valid statuses at https://developer.skype.com/Docs/ApiDoc/GET_USERSTATUS
+
+import dbus
+import sys
+
+bus = dbus.SessionBus()
+
+proxy = bus.get_object('com.Skype.API', '/com/Skype')
+
+commands = [
+ 'NAME skype_status_mood.py',
+ 'PROTOCOL 2'
+]
+
+stdin_encoding = sys.stdin.encoding
+if stdin_encoding is None:
+ stdin_encoding = 'utf-8'
+
+if len(sys.argv) >= 4:
+ sys.exit("Usage: %s [new_status [mood_text]]" % sys.argv[0])
+if len(sys.argv) >= 3:
+ commands.append(u'SET PROFILE MOOD_TEXT %s' % sys.argv[2].decode(stdin_encoding))
+if len(sys.argv) >= 2:
+ commands.append('SET USERSTATUS %s' % sys.argv[1])
+else:
+ commands.append('GET USERSTATUS')
+ commands.append('GET PROFILE MOOD_TEXT')
+
+stdout_encoding = sys.stdout.encoding
+if stdout_encoding is None:
+ stdout_encoding = 'utf-8'
+
+for command in commands:
+ print proxy.Invoke(command).encode(stdout_encoding)