Przegląd API serwisów multimedialnych

YouTube

Youtube oferuje dość bogate API, opisane na code.google.com. Najbardziej przydatne jest jednak API GDATA pozwalające pobierać, modyfikować i dodawać nowe dane (filmy). Większość metod nie wymaga autoryzacji / klucza API. Przykładowo by wyszukać klipy video według określonej frazy wystarczy wywołać (np. w przeglądarce) adres URL http://gdata.youtube.com/feeds/api/videos?q=SZUKANA_FRAZA&v=2, co zwróci dokument GData z listą klipów. W Pythonie można wykorzystać moduł feedparser:

import feedparser

YURL = 'http://gdata.youtube.com/feeds/api/videos?q=%s&v=2'

rssurl = YURL % 'python'
data = feedparser.parse(rssurl)
for i in data['entries']:
	title = i['title']
	print title

Slideshare

Serwis ze "slajdami", czyli różnorakimi prezentacjami posiada własne API, które wymaga klucza generowanego po zarejestrowaniu swojej aplikacji. Dla Pythona dostępny jest moduł PySlideshare obsługujący większość metod (poza wyszukiwaniem). Dostępne są także moduły dla PHP, Ruby, Javy itd. Każde żądanie do API polega na wywołaniu określonego adresu URL i podaniu w parametrach GET odpowiednich danych. Obowiązkowe są api_key - nasz klucz API, ts - timestap w momencie żądania, hasz - hasz sha1 z timestampa i klucza sekretnego. Oto przykład wyszukiwania na surowym API:

import urllib2
import hashlib, time

SLIDESHARE = 'KLUCZ'
SLIDESHARE_SECRET = 'KLUCZ SEKRETNY'

# timestamp żądania
ts = int(time.time())
# hasz z klucza tajnego i timestampa
m = hashlib.sha1()
m.update(SLIDESHARE_SECRET+str(ts))
shash = m.hexdigest()

SLIDE = 'http://www.slideshare.net/api/2/search_slideshows?api_key=%s&ts=%s&hash=%s' % (SLIDESHARE, ts, shash)

# szukamy podanej frazy
surl = SLIDE + '&q=%s' % 'python'
opener = urllib2.build_opener()
opener.addheaders = [('user-agent', 'Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1')]
o = opener.open(surl)
xml = o.read()
print xml
Dane zwracane są w formacie XML.

Vimeo

Vimeo również oferuje bogate API pozwalające na przeszukiwanie i edycję danych. By wykorzystać API trzeba zarejestrować się jako developer i wygenerować klucz API. Część metod wymaga podania samego klucza, część wymaga dodatkowe podpisania żądania (co opisane jest przy metodach API tego typu). Ułatwieniem może być zastosowanie python-vimeo. Poniżej surowe wykorzystanie API do wyszukania klipów pod podaną frazę:

import urllib2

VIMEO = 'KLUCZ'

VIMEO_LINK = 'http://vimeo.com/api/rest/v2?api_key=%s&method=vimeo.videos.search' % VIMEO

vurl = VIMEO_LINK + '&query=%s' % 'python'
opener = urllib2.build_opener()
opener.addheaders = [('user-agent', 'Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1')]
o = opener.open(vurl)
xml = o.read()
print xml

Scribd

Scribd to serwis zbierający dokumenty różnego typu. Posiada on publiczne API, jak i dostępny jest moduł python-scribd. API nie jest jednak w pełni otwarte (niektóre metody nie udostępniają pełnego kompletu danych). Żeby korzystać z API należy zarejestrować własną aplikację generując klucz API i klucz tajny. Oto przykład wyszukiwania dokumentów na surowym API:

import urllib2

SCRIBD = 'KLUCZ'

SCRIBD_URL = 'http://api.scribd.com/api?method=docs.search&api_key=%s&scope=all' % SCRIBD

surl = SCRIBD_URL + '&query=python'
opener = urllib2.build_opener()
opener.addheaders = [('user-agent', 'Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1')]
o = opener.open(surl)
xml = o.read()
print xml

RkBlog

Programowanie Sieciowe, 13 September 2009

Comment article
Comment article RkBlog main page Search RSS Contact