PHP: Posílání příspěvků na mikroblogy

Jednoduchá PHP třída pro posílání příspěvků na mikroblogovací servery Twitter, Tumblr, Pownce, Jaiku a Teidu. (Aktualizováno na verzi 2.0)

Při práci na jednom menším projektu mě napadlo, že by se hodila možnost posílání příspěvků na mikroblogovací server, ve smyslu "Právě jsem udělal toaono..." + odkaz. Kouknul jsem se na API hlavních serverů a zjistil jsem, že je velmi prosté. Napsal jsem si proto třídu Microblogging, která umožní poslat text na Twitter, Tumblr, Jaiku, Pownce a Teidu (zatím). Další budou přibývat, bude-li zájem.

Použití je prosté:

$engine = Microblogging::Create('twitter');
if ($engine->send('jmeno', 'heslo', 'Test from Microblogging class'))
  echo'OK';
 else
  echo "Error – " . $engine->status();

Třída je k dispozici k volnému použití pod licencí BSD, tedy smíte ji šířit a využívat ve svých projektech, pokud zachováte informace o autorovi.

Ještě odkaz: Microblogging class, popř. SVN: svn checkout http://microblogging.googlecode.com/svn/trunk/ microblogging-read-only

(Aktuální verze je 2.0 – přepsána tak, aby používala adaptéry pro API a tovární třídu Microblogging)

Dne 2.07.2008

Twittni

Přidej do: asdf.sk StumbleUpon Toolbar Stumble It!

Komentáře

[1] (http://openid.cz/jiri.pospisil ) 02.07.2008, 16:35:38 [X] [D]
Nebylo by špatné třídu realizovat jako factory a příslušné servery jako jednotlivé adaptéry, při větším počtu serverů by to rozhodně přispělo k přehlednosti.

[2] (Timy - Mail - WWW) 02.07.2008, 16:42:00 [X] [D]
Super, díky moc! Konečně jsem si mohl napsat ten svůj skriptík, který mi zprovozní odesílání zpráv na Twittera přímo z adresní lišty prohlížeče :-). http://nastroje.havrlant.net...ter/

[3] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 16:53:17 [X] [D]
[1] Bude-li víc serverů, bude jistě na místě zvážit jiné řešení, modulárnější apod. V tomto případě jsem upřednostnil kompaktní řešení stylem "quick-and-dirt" (někdy až příliš, viz třeba to prasecké přepisování URL u Twitteru) před formální elegancí, roztahanou do mnoha tříd a potomků a souvislostí, u nichž by (zvlášť v takhle jednoduchém případě) převážila systémová režie nad ziskem z "krásy". :)

[4] (dond ) 02.07.2008, 17:35:22 [X] [D]
OT: Takhle se teď píše v PHP? Nějak moc nápadně mi to připomíná syntaxi toho (FUJ!) jazyka, jemuž se PHP za žádnou cenu nechtělo podobat... .-)

[5] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 17:52:40 [X] [D]
[4] O tom nic netuším. Dokonce netuším ani nic o tom, jak se teď píše v PHP. Takhle teď píšu v PHP já. :) PS: Namespaces are coming soon... ;)

[6] (davee - WWW) 02.07.2008, 17:58:44 [X] [D]
To Teidu bych uvítal...

[7] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 18:47:02 [X] [D]
OK, přepisuju trošku engine, ať má [1] radost, a implementuju Jaiku + Teidu.

[8] (klok - WWW) 02.07.2008, 19:59:37 [X] [D]
Teidari z celeho srdce dekuji :)

[9] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 20:10:05 [X] [D]
[8] Co mi Teidu nabídne za to, že mu dělám reklamu ve svém kvalitním kódu? :)

[10] (David Grudl - WWW) 02.07.2008, 20:26:29 [X] [D]
Přiměl jsi mě udat svoji třídu pro Twitter (http://phpfashion.com...ter-for-php) - pravda, v porovnání s tvou je slabá, protože ani Tumblr, Pownce, Jaiku nebo Teidu nezná (stejně jako její autor), ale zase umí zobrazit kanál posledních zpráv, pročež ji používám na svých stránkách.

[11] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 20:35:08 [X] [D]
[10] Chceš mě snad přimět, abych rozšířil tu svoji o čtení timeline? :)

PS: Na Teidu to je prosté - GET http://username.teidu.cz/rest - a máš je ve formátu JSON jako na dlani :)

[12] (David Grudl - WWW) 02.07.2008, 21:00:43 [X] [D]
[11] na Twitteru téže http://twitter.com...avidGrudl.json

Ale "přátelský časový přehled" (lépe asi friends_timeline) vyžaduje přihlašovací údaje.

[13] (klok - WWW) 02.07.2008, 22:03:47 [X] [D]
[8] Nabidne ti bezplatny prostor pro realizaci tvych myslenek. To neni malo.
[11] Nojo fakt :)

[14] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 22:20:07 [X] [D]
[13] Cožeto? :) Prostor na realizaci mých myšlenek? To není moc hodnotné platidlo, že? Kdybych měl všeho tolik jako prostoru na realizaci myšlenek... :) Co z toho budu mít, že propaguju Teidu ve svém projektu? ;)

Poznámka: Těmhle komentářům porozumí pouze zasvěcení, a těch je asi tak pět. Klok je jeden z nich.

[15] (David Grudl - WWW) 02.07.2008, 22:39:58 [X] [D]
Fixni si tam bug při odesílání - zpráva nemůže být kódována v URL, ale předána přes $this->postdata. Některé instalace PHP&cURL to zvládnou, některé ne. Takže např. TwitterMBAdapter:

Místo:

$this->post = true;
$this->postdata = false;
$this->auth = true;
$this->host = 'http://twitter.com...ate.xml?status='.urlencode(stripslashes(urldecode($this->text)));

Dej:

$this->post = true;
$this->postdata = array('status' => $this->text);
$this->auth = true;
$this->host = 'http://twitter.com...ses/update.xml';

BTW: urlencode(stripslashes(urldecode())) je tam proč?

[16] (Arthur Dent [openID] - Mail - WWW) 02.07.2008, 23:30:28 [X] [D]
[15] Ehm... To je tak, když člověk vyjde ze starých API knihoven a nevyhází všechna rezidua. Opraveno, díky.

[17] (klok - WWW) 03.07.2008, 12:54:05 [X] [D]
[14] No dobre, tak alespon hrejivy pocit, ze jsi podporil vlastni ditko. A to i presto, ze uz by melo samo umet chodit a par dalsich detailu.

A navic Davee [6] tak hezky poprosil. Ne pardon to jsem se prehledl:) Hm tak aspon, ze ja jem podekoval

A ted uz jen chybi: "A nyni, panove, zanechme kockovani, prichazi velka umelkyne Tornado Luuuu..."

[18] (davee - WWW) 03.07.2008, 13:10:38 [X] [D]
Za to Teidu samozřejmě děkuju! :-)

[19] (Arthur Dent [openID] - Mail - WWW) 03.07.2008, 13:11:35 [X] [D]
[17] Proč bych měl Teidu podporovat já? Neměl by se o jeho podporu a propagaci starat v první řadě jeho provozovatel?

[20] (Martin Kopta - WWW) 03.07.2008, 15:15:42 [X] [D]
Tak tedy pěkně děkuju. Teď musím přemýšlet, jestli na Okurkovou sezónu nasadím denta nebo dgx. :-(

Možná na střídačku oba. :-)

[21] (Arthur Dent [openID] - Mail - WWW) 03.07.2008, 15:17:58 [X] [D]
[20] Dent jen publikuje, zato na pět systémů, DGX i čte, ale jen Twitter. To se moc netluče :)

[22] (drbz - Mail - WWW) 05.10.2008, 18:18:19 [X] [D]
Ahoj, bylo by fajn, kdybys nás taky přidal, provozujeme REST API na http://drbz.cz/api/rest/uzivatel , viz http://drbz.cz...zdroje-api-widgety

[23] (Arthur Dent [openID] - Mail - WWW) 05.10.2008, 18:23:40 [X] [D]
[22] Zamyslím se... Je nějaká možnost, že to uděláš sám (těžké to není, zdroják tam je) a poskytneš komunitě? :) "Duch opensource jako, ne?" Já nemám registraci, abych to otestoval...

[24] (drbz - Mail - WWW) 05.10.2008, 18:38:34 [X] [D]
Proč ne, ducha open-source mam rád ;) Přístup na SVN mi dáš nebo mam výsledek poslat mailem?

[25] (Arthur Dent [openID] - Mail - WWW) 05.10.2008, 19:35:46 [X] [D]
[24] Pošli mailem, já to tam zakomponuju a připíšu poděkování :)