API Blox.pl
From BloxWiki
Strona ta przeznaczona jest dla programistów chcących tworzyć aplikacje, które umożliwiają zarządzanie blogiem w serwisie Blox.pl z pominięciem interfejsu www. Program taki może komunikować się z serwisem Blox.pl bezpośrednio przy pomocy API Blox.pl.
Spis treści |
Oferowane funkcjonalności
- pobieranie listy blogów użytkownika
- pobieranie listy ostatnich notek z danego bloga
- tworzenie, edycji i kasowanie notek
- ładowanie plików binarnych
Kompatybilność
API Blox.pl zostało stworzone w oparciu o technologię XML-RPC. Pisząc interfejs wzorowaliśmy się na Blogger API, MetaWeblog API oraz MovableType API, metody API Blox.pl są więc w obu przypadkach z nimi kompatybilne.
Z API Blox.pl korzysta między innymi program Bloxer.
Żądania wywołania metod XML-RPC powinny być kierowane na adres URI: http://www.blox.pl/xmlrpc
Obsługiwane przez Blox.pl metody z Blogger API
blogger.newPost
wysyła nową notkę na bloga
parametry wywołania:
- appkey - ignorowany
- blogid - nazwa bloga, do którego będzie wysłana nowa notka, np. dla bloga o adresie xyz.blox.pl będzie to xyz (wycofywane) lub numer bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
- content - treść notki
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca identyfikator nowego wpisu lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.editPost
modyfikuje istniejącą notkę
parametry wywołania:
- appkey - ignorowany
- postid - identyfikator liczbowy modyfikowanej notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
- content - treść notki
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca true jeśli notka została pomyślnie zmodyfikowana, false w przeciwnym wypadku lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getPost
pobiera notkę z bloga
parametry wywołania:
- appkey - ignorowany
- postid - identyfikator liczbowy notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
zwraca notkę jako tablicę z wartościami przypisanymi do kluczy:
- content - treść
- userid - login autora
- postid - identyfikator liczbowy notki
- dateCreated - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getRecentPosts
pobiera ostatnio napisane notki
parametry wywołania:
- appkey - ignorowany
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora bloga lub autora notek
- password - hasło użytkownika
- numberOfPosts - liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako listę tablic z wartościami przypisanymi do kluczy:
- content - treść
- userid - login autora
- postid - identyfikator liczbowy notki
- dateCreated - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.deletePost
kasuje notkę
parametry wywołania:
- appkey - ignorowany
- postid - identyfikator liczbowy notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
- publish - ignorowane
zwraca true lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getUsersBlogs
pobiera adresy blogów użytkownika
parametry wywołania:
- appkey - ignorowany
- username - login właściciela/administratora/użytkownika blogów
- password - hasło użytkownika
zwraca listę adresów jako listę tablic z wartościami przypisanymi do kluczy:
- blogid - identyfikator bloga
- url - adres url bloga
- blogName - nazwa bloga
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blogger.getUserInfo
zwraca informacje o użytkowniku, częściowo zaimplementowana
parametry wywołania:
- appkey - ignorowany
- username - login każdego użytkownika bloga
- password - hasło użytkownika
zwraca tablicę z wartością przypisaną do klucza:
- userid - login
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
Obsługiwane metody z API MetaWebLog
metaWeblog.newPost
dodaje nową notkę
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
- content - treść notki jako tablica z wartościami przypisanymi do kluczy:
- flNotOnHomePage - ignorowany
- title - tytuł notki (max 255 znaków)
- lead - wstęp do notki (max 2500 znaków)
- description - treść notki (max 16KB)
- categories - lista nazw kategorii, do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości - wtedy notka trafia do kategorii domyślnej
- pubDate - ignorowany, zawsze ustawiana jest bieżąca data
- guid - ignorowany
- author - ignorowany, autorem jest zawsze użytkownik podany w username
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca identyfikator nowo utworzonej notki lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.newPostExt
Wersja metody metaWeblog.newPost, która ma identyczne parametry wejściowe z newPost, natomiast zwraca tablicę z wartościami przypisanymi do kluczy:
- entryId - identyfikator liczbowy wpisu
- entryUrl - URL wpisu w przypadku jeżeli notka została opublikowana. Jeśli wpis nie został opublikowany wartość nie jest zwracana.
metaWeblog.editPost
modyfikuje notkę
parametry wywołania:
- postid - identyfikator notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
- content - treść notki jako tablica z wartościami przypisanymi do kluczy:
- flNotOnHomePage - ignorowany
- title - tytuł notki (max 255 znaków)
- lead - wstęp do notki (max 2500 znaków)
- description - treść notki (max 16KB)
- categories - lista nazw kategorii, do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości - wtedy notka trafia do kategorii domyślnej
- pubDate - ignorowany, zawsze ustawiana jest bieżąca data
- guid - ignorowany
- author - ignorowany, autorem jest zawsze użytkownik podany w username
- publish - czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca true lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.editPostExt
Wersja metody metaWeblog.editPost, która ma identyczne parametry wejściowe z editPost, natomiast zwraca tablicę z wartościami przypisanymi do kluczy:
- entryId - identyfikator liczbowy wpisu
- entryUrl - URL wpisu w przypadku jeżeli notka została opublikowana. Jeśli wpis nie został opublikowany wartość nie jest zwracana.
metaWeblog.getPost
pobiera notkę
parametry wywołania:
- postid - identyfikator notki
- username - login właściciela/administratora bloga lub autora notki
- password - hasło użytkownika
zwraca tablicę z wartościami przypisanymi do kluczy:
- title - tytuł notki
- lead - wstęp do notki
- description - treść notki
- categories - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
- pubDate - data publikacji
- guid - identyfikator notki
- author - login autora notki
- entryUrl - URL wpisu, gdy został opublikowany.
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.getRecentPosts
pobiera ostatnio napisane notki
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora bloga lub autora notek
- password - hasło użytkownika
- numberOfPosts - liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako listę tablic z wartościami przypisanymi do kluczy:
- title - tytuł notki
- description - treść notki
- categories - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
- pubDate - data publikacji
- guid - identyfikator notki
- author - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.getCategories
pobiera wszystkie kategorie bloga
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora bloga lub autora notek
- password - hasło użytkownika
zwraca listę kategorii jako listę tablic z wartościami przypisanymi do kluczy:
- htmlUrl - nazwa kategorii
- description - opis kategorii
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
metaWeblog.newMediaObject
ładuje do zasobów bloga nowy plik
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login użytkownika bloga
- password - hasło użytkownika
- file - plik jako tablica z wartościami przypisanymi do kluczy:
- name - nazwa pliku
- type - typ MIME (musi być dozwolony do ładowania na Blox.pl)
- bits - zawartość pliku formie binarnej
zwraca tablicę z wartościami przypisanymi do kluczy:
- url - adres url załadowanego pliku
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC.
Obsługiwane metody z API Movable Type
mt.getRecentPostTitles
zwraca listę tytułów notek
parametry wywołania:
- blogid - nazwa bloga (wycofywane) lub identyfikator liczbowy bloga pobrany metodą getUsersBlogs (zalecane)
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
- numberOfPosts - liczba notek, które serwer ma zwrócić, w kolejności od ostatnio dodanej. Dla wartości -1 zostaną zwrócone tytuły wszystkich notek bloga.
zwraca listę notek jako listę tablic z wartościami przypisanymi do kluczy:
- dateCreated - data utworzenia notki
- userid - login autora
- postid - identyfikator liczbowy notki
- title - tytuł notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
Pozostałe metody
blox.getEntryTagsForEntry
zwraca listę tagów przypisanych do danej notki
parametry wywołania:
- postid - identyfikator liczbowy notki
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
zwraca listę nazw tagów (wektor) lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
blox.setEntryTagsForEntry
Przypisuje listę tagów do danej notki
parametry wywołania:
- tags - lista nazw tagów, które moją zostać dodane do notki
- postid - identyfikator liczbowy notki
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
zwraca listę nazw tagów (wektor) zapisanych na serwerze lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC. Lista tagów zapisanych na serwerze może się różnić od listy tagów wysłanych do serwera. Błędy walidacji dotyczą przekroczenia maksymalnej liczby tagów, które moga być przypisane do notki (7), przekroczenia maksymalnej liczby tagów na blog (250) lub użycia tagu zmoderowanego przez administrację serwisu.
blox.getAllEntryTags
zwraca listę wszystkich tagów używanych w danym blogu
parametry wywołania:
- blogid - identyfikator liczbowy bloga
- username - login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
- password - hasło użytkownika
zwraca listę nazw tagów (wektor) lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC
Przykładowy kod
Przykładowy fragent kodu w języku Java, prezentujący sposób użycia metody blogger.getUsersBlogs (wymagany jest pakiet Apache XML-RPC):
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;
...
try
{
XmlRpcClient client = new XmlRpcClient( "http://www.blox.pl/xmlrpc" );
Vector params = new Vector();
params.addElement( "" );
params.addElement( "twoj_login" ); // username
params.addElement( "XXXXX" ); // haslo
Vector blogi = (Vector) client.execute( "blogger.getUsersBlogs", params );
if (blogi != null && !blogi.isEmpty())
{
for (Iterator i=blogi.iterator(); i.hasNext(); )
{
Hashtable blog = (Hashtable) i.next();
System.out.println(blog.get("blogid")+", "+blog.get("url")+", "+blog.get("blogName"));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (XmlRpcException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Przykładowy kod
Przykład wysłania zapytania do XMLRPC przy użyciu cURL (Client URL) z lini poleceń:
# curl -H "text/xml" --data-binary @/plik.xml http://www.blox.pl/xmlrpc
Przykład w PHP: metaWeblog.newPost
RPC.php możemy wziąć z paczki PEAR/XML_RPC
require_once("RPC.php");
$post_payload['title']=new XML_RPC_Value($title, 'string');
$post_payload['description']=new XML_RPC_Value(stripslashes($post), 'string');
$params = array( new XML_RPC_Value($blog_id, 'string'),
new XML_RPC_Value($this->login, 'string'),
new XML_RPC_Value($this->password, 'string'),
new XML_RPC_Value($post_payload, 'struct'),
new XML_RPC_Value('1','boolean')
);
$msg = new XML_RPC_Message('metaWeblog.newPost', $params);
$msg->setSendEncoding('ISO-8859-2'); //fix dla krzaczkow;)
$cli = new XML_RPC_Client('/xmlrpc', 'blox.pl');
$resp = $cli->send($msg);
if(!$resp) {
echo 'communication error <strong>' . $cli->errstr ."</strong>";
exit;
}
if(!$resp->faultCode()) {
$val = $resp->value();
$data = XML_RPC_decode($val);
if($data > 0) {
echo 'post id: ' . $data;
}else{
echo 'fatal error;)';
}
}else{
echo 'Fault Code: ' . $resp->faultCode() . "<br/>";
echo 'Fault Reason: ' . $resp->faultString() . "<br/>";
}
Powyższy kod został znaleziony w internecie (google <3) i lekko poprawiony do realiów blox.pl, pytania kierować pod michal86@gmail.com
Zmiany w API
12.01.2010 - do metod metaWeblog.newPost, metaWeblog.editPost oraz metaWeblog.newPost została dodana obsługa pola "lead".
31.03.2010 - dodanie metod umożliwiających edycję tagów do notek.
30.04.2010 - dodanie metod metaWeblog.newPost, metaWeblog.editPostExt, dodanie zwracania urla wpisu w metaWeblog.getPost.

