REST_API (z perspektywy pythona + json)

118 views
Skip to first unread message

Bartłomiej Opajdowski

unread,
Dec 28, 2012, 7:29:20 AM12/28/12
to sejmom...@googlegroups.com
Witam,
jesli ktoś potrzebuje rozwiązania do pythona to dobrym przykładem jest:

   req.add_header('Accept','application/vnd.EPF_API.v1+json')
   r = urllib2.urlopen(req)
   return r.read()

niestety glosowania nie zwracają głosowań a zakładkę info... (oczywiście url podany w przykładzie mozna zastąpić dowolnym) 

Fajnie by było, jakby w dziale "PRZYKŁADY"pojawiły się rozwiązania dla innych języków jak php oraz linkami odpowiednimi dla danych obiektów np.  ep_Sejm_Glosowanie - http://sejmometr.pl/sejm_glosowania/1213
ułatwiło by to implementacje i testowanie bez konieczności skakania między dokumentacją, a stroną z danymi.

Czy może ktoś podpowiedzieć, jak pobrać teraz listę wszystkich ID głosowań ?
W chwili obecnej link http://sejmometr.pl/sejm_glosowania w JSONie zwraca 20 (ostatnich?) wyników 
("limit_max":"100","limit_default":"20") 
Czy da się zwrócić coś na wzór: http://api.sejmometr.pl/glosowania, jeśli tak to jak ? ?  (Ta funkcja zwraca tablicę identyfikatorów głosowań. Każdy identyfikator jest liczbą naturalną). Chodzi mi o listę wszystkich głosowań danej kadencji (a może jeszcze parametr "kadencja", który przyda się do rozróżniania kadencji posła)
Następnie można by pytać jak w poprzedniej wersji http://api.sejmometr.pl/glosowanie/{$ID_GLOSOWANIA}/wyniki
ale rozszerzyć o ID_POSLA, aby uniknąć zwracania tablic tablic, a otrzymać wyniki dla konkretnego posła 
lub opcja bez ID_POSLA zwracajaca glosowania wszystkich poslow, tylko wtedy wracamy do tablicy tablic asocjacyjnych

Jakieś pomysły jak to rozwiązać? Niestety http://sejmometr.pl/poslowie/ID_POSlA/glosowania nie działa i zwraca jedynie obiekt ep_Posel

Rafał Stożek

unread,
Dec 28, 2012, 7:41:39 AM12/28/12
to sejmom...@googlegroups.com
Polecam zapoznać się z biblioteką python requests - http://python-requests.org/ - sporo ludzi teraz na to przechodzi - i nie bez powodu.

Co do samej paginacji, to w api rpc (tej phpowej) jest parametr l (limit) oraz of(offset) ale nie wygląda na to, żeby te parametry działały w api rest.

Zen Vantalye

unread,
Dec 28, 2012, 9:26:19 AM12/28/12
to sejmom...@googlegroups.com
W dniu 28 grudnia 2012 13:41 użytkownik Rafał Stożek <say...@gmail.com> napisał:
> Polecam zapoznać się z biblioteką python requests -
> http://python-requests.org/ - sporo ludzi teraz na to przechodzi - i nie bez
> powodu.
Warto od razu zwrócić uwagę na requests-cache:
http://pypi.python.org/pypi/requests-cache

Przykład dla biblioteki requests z wsparciem „Keep-alive” i
automatycznym cache:
import requests
import requests_cache

requests_cache.configure('/tmp/http_cache')
s=requests.session()
headers={'Accept':'application/vnd.EPF_API.v1+json'}

r=s.get('http://sejmometr.pl/sejm_kluby',headers=headers)
print r.json

Bartłomiej Opajdowski

unread,
Feb 28, 2013, 10:16:54 AM2/28/13
to sejmom...@googlegroups.com
Ponawiam powyższe pytania - jak dostawać się do kolejnych stron wyników. Chciałbym móc pobierać wszystkie wyniki głosowań, a nie tylko ostatnie 20 (oczywiście nie przez biblioteke PHP) 

Paweł Sroka

unread,
Feb 28, 2013, 9:39:39 PM2/28/13
to sejmom...@googlegroups.com
https://github.com/epforgpl/ePF_API/blob/master/classes/ep_Dataset.php#L175

Parametry wysyłane POST, w szczególności mamy limit i offset jako 'l' oraz 'of'

Pozdrawiam,
--
Paweł Sroka


W dniu 28 lutego 2013 16:16 użytkownik Bartłomiej Opajdowski
<bopaj...@gmail.com> napisał:
> --
> Otrzymujesz tę wiadomość, ponieważ subskrybujesz grupę dyskusyjną Google o
> nazwie "Sejmometr API".
>
> Aby anulować subskrypcję tej grupy i przestać otrzymywać z niej wiadomości,
> wyślij e-maila do sejmometr-ap...@googlegroups.com.
> Więcej opcji znajdziesz na https://groups.google.com/groups/opt_out
>
>

Bartłomiej Opajdowski

unread,
Mar 7, 2013, 8:37:10 AM3/7/13
to sejmom...@googlegroups.com
W dniu piątek, 1 marca 2013 03:39:39 UTC+1 użytkownik Paweł Sroka napisał:
https://github.com/epforgpl/ePF_API/blob/master/classes/ep_Dataset.php#L175

Parametry wysyłane POST, w szczególności mamy limit i offset jako 'l' oraz 'of'

Pozdrawiam,
--
Paweł Sroka


Niestety nie udało mi się ograniczyć ilości ani użyć przesunięcia używając l i of wysyłając requesta metodą POST, za to świetnie działa parametr 'p'... 
poniżej wklejam przykład próby użycia (python), może ktoś zauważy w czym jest problem:

data = { 'l': '1', 'of': '1', }                 
params = urllib.urlencode(data)
req = urllib2.Request(url,params)
req.add_header('Accept','application/vnd.EPF_API.v1+json')
r = urllib2.urlopen(req)
return r.read()

zawsze zwraca mi 20 głosowań (czyli limit_default: 20) natomiast 
data = { 'p' : '2' }  
ładnie "przesuwa" mi głosowania o jedną stronę (czyli POST, działa ale nie tak jak powinien) 
Reply all
Reply to author
Forward
0 new messages