2013. január 16., szerda

Conky Google Reader szkript

Ahogy ígértem már itt is a Google Reader olvasatlan feed értesítő Python szkript Conky-hoz. A korábbi verziót nem én írtam és nem is teljesen arra célra való, amire használtam, így inkább megírtam egy újabb változatot, ami a méréseim szerint majdnem kétszer olyan gyors, és 20%-al kevesebb erőforrást is használ működéséhez. Ráadásul így nem kell jelszót beírni a Conky konfigurációs fájlba, ami biztonságosabb így.

Telepítése nagyon hasonlít az előző cikkben szereplő szkripthez, hozzunk létre egy futtatható szkriptfájlt:

$ mkdir -p ~/.scripts
$ touch ~/.scripts/rssToConky.py
$ chmod +x ~/.scripts/rssToConky.py
$ gedit ~/.scripts/rssToConky.py

A megnyíló Gedit szerkesztőbe pedig másoljuk be a következő kódot:

#!/usr/bin/env python
import urllib
import urllib2
import xml.etree.ElementTree as ET
def main():
username = 'EMAILADDRESS'
password = 'PASSWORD'
# Authenticate to obtain SID
auth_url = 'https://www.google.com/accounts/ClientLogin'
auth_req_data = urllib.urlencode({'Email': username,
'Passwd': password,
'service': 'reader'})
auth_req = urllib2.Request(auth_url, data=auth_req_data)
auth_resp = urllib2.urlopen(auth_req)
auth_resp_content = auth_resp.read()
auth_resp_dict = dict(x.split('=') for x in auth_resp_content.split('\n') if x)
auth_token = auth_resp_dict["Auth"]
# Create a cookie in the header using the SID
header = {}
header['Authorization'] = 'GoogleLogin auth=%s' % auth_token
reader_base_url = 'http://www.google.com/reader/api/0/unread-count?%s'
reader_req_data = urllib.urlencode({'all': 'true', 'output': 'xml'})
reader_url = reader_base_url % (reader_req_data)
reader_req = urllib2.Request(reader_url, None, header)
reader_resp = urllib2.urlopen(reader_req)
reader_resp_content = reader_resp.read()
root = ET.fromstring(reader_resp_content)
objects = []
if len(root.find('list').findall('object')) == 0:
print 0
return
for child in root.find('list').findall('object'):
objects.append(child)
for object in objects:
if object.find('string').text.find('/state/com.google/reading-list') != -1:
for number in object.findall('number'):
if number.get('name') == 'count':
print number.text
if __name__ == '__main__':
main()

Természetesen az emailcím és a jelszó mezőket ki kell tölteni. Ha mindez megvan akkor ugyanúgy lehet felhasználni, mint a korábbi változatot, egy lehetséges példa:

You have ${texeci 300 python ~/.scripts/rssToConky.py} unread feed(s).

Az eredményről screenshotot az előző cikkben láthattok. :)

10 megjegyzés:

  1. Szia. Nagyszerű cikk már alig várom, hogy kipróbálhassam de sajnos nekem Arch Linuxon nem akar a Conky működni.
    Nem tudom beállítani az átlátszó hátteret.
    own_window yes
    own_window_transparent yes
    double_buffer yes

    De fekete háttérfogad.
    Nem tudnál esetleg segíteni ebben?

    VálaszTörlés
    Válaszok
    1. szia,
      itt megtalálod a saját conky configfájlomat: https://github.com/thesnapdragon/scripts-configs
      (ehhez, hogy szépen jelenjen meg szükség lesz 3 betűtípusra, amiket ingyen le lehet tölteni, itt belinkeltem: http://linuxtutorialok.blogspot.hu/2011/04/ujabb-szebb-conky.html)

      amúgy frissítettem a korábbi Google Calendar-os szkriptet, kicsit szépítettem rajta :D

      sok sikert a műveletekhez, ha valami kérdés van nyugodtan írj! :)

      Törlés
    2. Letoltottem működik de a háttere ugyancsak fekete maradt.
      Valamit kell álítani a rendszerben?

      Törlés
    3. Újabb gond. Mikor a dekstopra kattintok akkor eltűnik a conky és nem hozza vissza az ha fríssitem a conkyrc fájlt.

      Törlés
    4. - a kattintásra eltűnő conky-t elvileg meg tudod oldani, ha az 'own_window_type'-nál a 'dekstop'-ot 'override'-ra írod át
      - az átlátszóság pedig valamilyen másik probléma lehet. a conky nem használ igazi átlátszóságot: ez pszeudoátlátszóság, a root backgroundképéből vágja ki saját háttérnek a megfelelő részt, és így olyannak tűnik, mintha átlátszó lenne. ha a fenti configom mégse átlátszó valószínűleg nem találja/nincs beállítva a root háttér, ehhez kell egy program (pl a "feh" nevű, ezt telepítsd fel: sudo apt-get install feh)
      aztán írd be ebbe a ~/.xinitrc fájlba a következő szkriptet:
      #!/bin/sh
      sleep 1 && feh --bg-center ~/background.png &
      a háttérkép helyét persze rendesen meg kell adni :)

      Törlés
    5. Nekem nem volt .xinitrc fajlom.
      Keszitettem egyet nano-val es beleirtam amit mondtal, de semmi nem tortent
      -ha 'desktop', ha 'override' ugyis eltunik, csak a 'normal'-al latszik

      Törlés
    6. hogy történjen valami ahhoz az X-et is újra kell indítani, ha lehet nyomj egy restart-ot és a háttérnek meg kellene javulnia, a háttérkép elérési útvonalát módosítottad a szkriptben?
      ha nagyon nem működik az átlátszóság, kis hackeléssel megpróbálhatod igazán átlátszóvá tenni, itt egy leírás róla:
      https://wiki.archlinux.org/index.php/Conky#Universal_method_to_enable_true_transparency
      igen, normal-lal akkor most nem tűnik el? mert akkor az a jó :)

      Törlés
    7. Megvan a bünős!
      Hozzaadtam az own_window_argb_visual yes sort es mukodik.
      Most mar johet a finomhangolas. Koszonom a segitseget.
      Megemlitem az oldaladat a Conky-rol szolo cikkemben a sajat oldalaman:
      http://i-sty.nyarad.ro

      Nagyon szepen koszonom a segitsegedet.

      Törlés
    8. Fejlemény. Csak a te scripteddel működik ez.
      Probáltam az eredeti conky script-et modosítani de nem segített.

      Törlés
  2. Szia! Meg tudnád mondani, hogy kell sorkizárttá varázsolni a blogspoton a kommenteket?

    VálaszTörlés