Addon TwitterControl – Twitter feed komponenta
- ic
- Člen | 430
Dívám se, že je tam vuyžité
https://api.twitter.com/1/statuses/user_timeline.json
a chápu
dobře, že je to bez OAuth?
Taky jsem twitter komponentu dělal… nebyla zdaleka takhle pěkná, ale hlavní problém jsem měl s tím, že bez OAuth (což jsem nechtěl) je tam limit 150-ti požadavků na hodinu a IP. Nějak jsem nakonec využil vyhledávací API, kde ten limit sice není, ale zato nemůže načítat hodně staré tweety.
- smasty
- Člen | 90
ic: Áno, je to bez OAuth, v podstate len úplne klasické
file_get_contents
. O limite 150/h/IP viem, preto plánujem (okrem
iného) vstavanú podporu cache
, pre stránky, ktoré teoreticky
dosahujú vyššiu návštevnosť ako 150 pageviews/h.
Tiež zvažujem použitie Davidovej knižnice Twitter for PHP, ktorá myslím používa OAuth…
- ic
- Člen | 430
Pro sdílené hostingy by to chtělo asi cron a data načítat hned začátkem každé hodiny, protože co jsem zkoušel je těžké vůbec něco dostat… asi tam všichni používají twitter nebo co.
Jinak s tím hledáním je taky docela lagrace:
http://search.twitter.com/search.json?q=from:$usename&rpp=$count&page=$page
má to myslím souvislost s https://twitter.com/search-advanced
EDIT: Hledání je na prd… lepší jsou webové
proxy. Mohl by být pokus na
http://api.twitter.com/1/statuses/user_timeline.json...
a pokud se
nepodaří získat data, tak
zkusit
http://anonymouse.org/cgi-bin/anon-www.cgi/http://api.twitter.com/1/statuses/user_timeline.json...
a další. Takových proxyn by mělo být asi hodně, chtělo by je to vyhledat
a pak by si je uživatel mohl zadat (nebo napevno ve scriptu?).
Napadá mě, nebylo by lepší u těch odkazů směřovat rovnou na danou
URI? mimo zkracovač? Protože tam je odkaz který končí na
http://nekam.tld/neco
, to je taky zobrazeno v textu a v title,
ale ‚href‘ je na http://t.co/d6hfd
. Přitom by bylo rychlejší
ten zkracovač vynechat, předešlo by se problémům s jeho případnou
nefunkčností a vyhledávače by to myslím taky potěšilo.
Editoval ic (28. 8. 2011 11:47)
- ic
- Člen | 430
Co jsem se díval, tak favourite nefunguje úplně ideálně… na stránce
Twitteru se musí na potvrzovací tlačítko kliknout vždy 2x… poprvé se jen
obnoví stránka, ale jinak se nic nestane.
To asi ale vypadá na nějakou chybu Twitteru.
Pak ještě… je k něčemu nutný ten
http://platform.twitter.com/widgets.js
script, myslím Twitter ho
vyžaduje nebo tak něco? Protože jeho funkce jsou dost divné, spíše
nežádoucí. Otevírá intent stránky v novém okně, a taky nedovolí
kliknutí na intent odkazy pravým tlačítkem myši, čímž navíc spustí
popup blocker, který mu otevření nového okna zakáže. Přitom to samé by
svedl jednoduchý javascript a tam jsou kilobajty kódu.
- ic
- Člen | 430
Nahradil jsem si ho jednoduchým javascriptem, tak se ptám jen jestli jsem neporušil nějaké Twitterovské přikázání.
<a href="{$t->id_str|intent:'reply'}" onclick="return !popup(this)">Reply</a>
<a href="{$t->id_str|intent:'retweet'}" onclick="return !popup(this)">Retweet</a>
<a href="{$t->id_str|intent:'favorite'}" onclick="return !popup(this)">Favorite</a>
.
.
.
<script n:if="$config->intents">
function popup(a) {
return window.open(a.href,"_blank","top="+(screen.availHeight-500)/2+",left="+(screen.availWidth-600)/2+",width=600, height=500");
}
</script>
Navíc teď funguje pravé tlačítko myši.
- smasty
- Člen | 90
ic: Nič si určite neporušil. Tweet Intents sú na tom
widgets.js
nezávislé, využívajú ho v podstate len na
otváranie v popups.
Vo verzii, ktorá bude obsahovať podporu pre lightbox-like
zobrazovanie fotiek s Twitteru, z najväčšou pravdepodobnosťou
widgets.js
vyhodím.
Neviem ale zatiaľ povedať, kedy to bude, keďže mi za chvíľu začína opäť škola…
- smasty
- Člen | 90
Dnes som uvoľnil verziu 2.0.
Novinky:
- Prehľadnejšia štruktúra – rozdelenie na viacero logických celkov (Control, Formatter, Loader)
- Z toho vyplýva možnosť napísať si vlastný Loader/Formatter a a použiť napr. OAuth
- Zmena namespaces:
Smasty\Components\Twitter\Control
. - Podpora Media entities – obrázky z tweetov sa zobrazujú formou „lighboxu“.
- ic
- Člen | 430
smasty napsal(a):
Dnes som uvoľnil verziu 2.0.
Moc pěkné úpravy.
Jen ten vtípek s tím Conponents
jak stojí ve všech
ukázkách https://componette.org/search/?…
se dost špatně hledá… pořád na to zírám a nechápu co je
špatně XD
- jannemec
- Člen | 78
Trochu váhám, jestli nepoopravit konstruktor – tak aby byl kompatibilní s tím z Control v Nette
<?php
/**
* Create the TwitterControl.
* @param IContainer $parent
* @Param string $name
* @param array|string|int $config Config options (array) or Twitter screen name (string) or Twitter user ID (int)
* @return void
*/
public function __construct(Nette\ComponentModel\IContainer $parent = NULL, $name = NULL, $config = NULL){
parent::__construct($parent, $name);
if(!$config)
?>
Používám totiž továrničku na komponenty a pak lze užít standardní
<?php
protected function createComponent($name) {
switch ($name) {
case 'twitterFeed':
$control = new Smasty\Components\Twitter\Control($this, $name, array(
'screenName' => 'xxxxx',
'tweetCount' => 5
));
break;
?>
- kedrigern
- Člen | 102
Např. právě teď je Twitter přetížen a vyhazuje chybu. Blbé je, že komponenta vyhodí výjimku a tím shodí celou app.
Asi by bylo dobré při špatné návratové hodnotě jen vypsat nějakou error šablony („twitter dočasně nedostupný“), aby si toho zbytek app nevšiml. Brání tomu něco? No přepíšu si to a hodím pull na githubu, ale když se někdo přihlásíte předem, že je to z nějakého důvodu blbost, tak se rád poučím :).
- tom
- Člen | 171
Mam stejnou chybu. Jak toto resit?
Diky
plasmo napsal(a):
Ahoj,
přidal jsem control do stránky, ale vyhučela chyba:file_get_contents(https://api.twitter.com/1/statuses/user_timeline.json?screen_name=livetradingsro&count=1&include_rts=true&include_entities=true): failed to open stream: No error
Co s tím? Děkuji