Jún 15, 2010

Jednoduchá prechádzka po XML pomocou Pythonu

Taká užitočná vec, možno sa niekomu hodí. ElementTree pre Python obsahuje parser XML. V nasledujúcom príklade vyrobím zo stringu Element a následne nad ním spustím iteráciu cez for.

Je dôležité upozorniť, že find vracia prvky Element. Textový obsah z nich je možné vytiahnuť pomocou atribútu text.

Pokiaľ sa s tým chcete viac hrať, odporúčam použiť iPython shell, ktorý podporuje dopĺňnanie príkazov pomocou tabulátoru.

from xml.etree import ElementTree

xmlTest="""
<xml>
<person>
 <id>573280</id>
 <type>Supplier<type>
</person>
<person>
 <id>66172<id>
 <type>Customer</type>
</person>
</xml>
"""

tree = ElementTree.fromstring(xmlTest)

for person in tree:
    type = person.find('type')
    id = person.find('id')
    if type.text == 'Supplier':
        print "Supplier:",id.text

API k ElemenTree nájdete na python.org. Pre Debian je táto funkcionalita k dispozícii v balíčku python-elementtree.

Október 25, 2009

Prístup na Facebook pomocou Pythonu

Facebook ponúka API pre rôzne jazyky a technológie. Poďme sa pozrieť, ako je možné vytvoriť jednoduchú dekstopovú aplikáciu v Pythone, ktorá zaktualizuje stav požívateľa.

Najskôr si stiahnime PyFacebook pomocou Gitu

git clone git://github.com/sciyoshi/pyfacebook.git

Potom nainštalujeme PyFacebook:

cd pyfacebook
python setup.py install

Ďalej je nutné zaregistrovať aplikáciu na Facebooku, čím získame API Key a Secret. Pri konfigurkácii zvolíme v záložke Advanced položku Application Type – Desktop.

facebook-desktop-appKým sa vyreplikuje zmena nastavenia aplikácie, zostavíme jednoduchý program v Pythone, ktorý bude vedieť zaktualizovať status na Facebooku. API_KEY a SECRET si nahraďte svojimi hodnotami.

import facebook
fb = facebook.Facebook(API_KEY, SECRET)
fb.auth.createToken()
fb.login()

V tomto mieste, už máme vytvorenú inštanciu triedy Facebook a môžeme veselo volať jej metódy, napríklad v konzole pomocou iPython. Na to, aby sme mohli aktualizovať status na Facebooku, budeme musieť používateľa požiadať o právo na aktualízáciu.

fb.request_extended_permission('status_update')

A môžeme aktualizovať.

fb.status.set('Uspesny update statusu pomocou PyFacebook a iPython')

Ako to vyzerá v praxi? Ukážka v iPython konzole:

facebook-ipython-updateVýsledok na Facebooku:

facebook-vysledokEšte doplním odkaz, pre vývojárov v Adobe Flex/AIR. Dobrý zdroj nájdete na adrese: http://www.adobe.com/devnet/facebook/