Last active
August 29, 2015 14:07
-
-
Save appbak3r/6941b5e83674a45563fb to your computer and use it in GitHub Desktop.
Habrahabr app indicator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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