Skip to content

Instantly share code, notes, and snippets.

@appbak3r
Last active August 29, 2015 14:07
Show Gist options
  • Save appbak3r/6941b5e83674a45563fb to your computer and use it in GitHub Desktop.
Save appbak3r/6941b5e83674a45563fb to your computer and use it in GitHub Desktop.
Habrahabr app indicator
#!/usr/bin/python
# -*- coding: utf-8 -*-
import base64
import signal
import os
import sys
import appindicator
import pynotify
import threading
import gtk,gobject,glib
import time
import urllib2
import tempfile
from xml.dom import minidom
from subprocess import call
gobject.threads_init()
image = "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO7oxXAAABbElEQVRYw+2Yv0vDUBDH70cqmNaaUBQRKgiiLv5A6KDg7iL4H/mviJubu4sgLo7iopNQFEGkrbVVbN97rpbkJSSmTZD7jrl8L593XN7B4fHJORRJlDeAAAlQ1nJi3zDG2EKImJUlAZBfLZeYg8+/B8NO7zPU4lXcqVJI5oFS7W7/T0BEeLS3U5/z9eihmei++XJ2eRPqOmhsrNUXlNYjqRCbr63Ti2utTcQXYyuEDhMzBUvEbO0/ZiJCCpgcJgAEiAIqXFMLkAAJ0LgVf1NbZYz1ijMmWapMgOb96uHuli2UA5BXcRvry6ntNhWuhwRIgP4dUPrf/vmtfXX7EBra31xdrHmTBur2v+4en0JD2ytLUJt4hRCRiWyh1GkL10MCJEACJEB5q3BAsaPDDJVWSgfXMUppm0cprbUJrmOGSkevPgAAY/fU3oybdGE1W54e18IKAFrvPetpLEO0/dFPakkAlGJ0y7QXIAH6pR8Pv2xjQeMGQwAAAABJRU5ErkJggiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA=="
f = tempfile.NamedTemporaryFile(delete = False)
f.write(base64.decodestring(image))
name = f.name
f.close()
a = appindicator.Indicator('Habrahabr', name, appindicator.CATEGORY_APPLICATION_STATUS)
a.set_status( appindicator.STATUS_ACTIVE )
a.set_label('Hello, Habrahabr')
m = gtk.Menu()
ci = gtk.MenuItem( 'На хабр!' )
qi = gtk.MenuItem( 'Выйти' )
m.append(ci)
m.append(qi)
ci.show()
qi.show()
a.set_menu(m)
def goHabr(name):
call(['xdg-open', 'http://habrahabr.ru/'])
def updateStatus():
while True:
htmltext = urllib2.urlopen('http://habrahabr.ru/api/profile/ya-est/').read();
xmldoc = minidom.parseString(htmltext)
karma = next(iter(xmldoc.getElementsByTagName('karma'))).firstChild.nodeValue
rating = next(iter(xmldoc.getElementsByTagName('rating'))).firstChild.nodeValue
a.set_label(" Карма: " + karma + " Рейтинг: " + rating)
time.sleep(300)
def quit(item):
sys.exit(0)
def signal_handler(signal, frame):
sys.exit(0)
thread = threading.Thread(target=updateStatus)
thread.setDaemon(True)
ci.connect('activate', goHabr)
qi.connect('activate', quit)
if __name__ == '__main__':
try:
thread.start()
signal.signal(signal.SIGINT, signal_handler)
gtk.main()
except KeyboardInterrupt:
print "Shutdown requested...exiting"
except Exception:
traceback.print_exc(file=sys.stdout)
sys.exit(0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment