Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- // ===========================================================================
- #define TWITTER "g1" // Mude aqui para seu twitter. Sem o "@"
- // ===========================================================================
- #if !defined HTTP_ERROR_BAD_HOST
- #include a_http
- #endif
- #define TweetAnn:: TweetAnn_
- #define TweetAnn_function%0(%1) forward %0(%1); public %0(%1)
- /* ---------------------------------------------------
- Ao iniciar filterscript, começar as requisições
- Não mude o tempo pois o twitter pode te bloquear por suspeita de DDOS
- -----------------------------------------------------*/
- public OnFilterScriptInit() {
- printf("Sistema de Twitter Carregado");
- TwitterCheck();
- return true;
- }
- /* ---------------------------------------------------
- Função responsável por fazer a requisição HTTP
- Não mude a URL, ela foi configurada corretamente para isto
- -----------------------------------------------------*/
- TweetAnn::function TwitterCheck() {
- HTTP(0, HTTP_GET, "api.twitter.com/1/statuses/user_timeline.rss?screen_name="TWITTER"&count=2", "\0", "TwitterResponse");
- return SetTimer("TwitterCheck", 23000, false );
- }
- /* -------------------------------------------------------------
- Função responsável por fazer o processamento da requisicao
- Nessa parte é processado o último tweeet dado
- e também é enviado a mensagem aos jogadores!!
- -----------------------------------------------------*/
- new lastpost[141];
- TweetAnn::function TwitterResponse(index, c, data[]) {
- if ( c == 200 ) {
- new post[141];
- recursiveStrfind(post, data, "<description>", 2, "<");
- if(!sameString(post, lastpost))
- {
- new string [167];
- format(lastpost, 141, "%s", post);
- html_entities(post, post);
- format( string, 167, "VIA TWITTER (@"TWITTER"): %s", post);
- // --- Enviar mensagem para todos jogadores
- SendClientMessageToAll(-1, string);
- print(string);
- }
- }
- return true;
- }
- sameString(cmd1[], cmd2[]){
- if(strlen(cmd1) != strlen(cmd2)) return false;
- for(new i; cmd1[i]; i++) {
- if(cmd1[i] != cmd2[i]) return false;
- }
- return true;
- }
- /* -------------------------------------------------------------
- Função "recursiveStrfind" usada para auxiliar no processamento
- dos dados recebidos em .xml
- -----------------------------------------------------*/
- recursiveStrfind(dest[], data[], string[], total, after[], current = -1, pos = -1, len = sizeof (dest))
- {
- current ++;
- if(current != total) {
- return recursiveStrfind(dest, data, string, total, after, current, strfind(data, string, false, pos+1), len) ;
- }
- static procurar;
- procurar = strfind(data, string, false, pos) + strlen(string);
- strmid(dest, data, procurar, procurar + len, len);
- if(strlen(after)) {
- procurar = strfind(dest, after);
- if( procurar != -1 ) {
- dest[procurar] = EOS;
- }
- }
- return true;
- }
- /* -------------------------------------------------------------
- Função "html_entities" usada para fazer entities de alguns acentos
- Assim fixando o texto recebido via html !!
- -----------------------------------------------------*/
- html_entities(dest[], html[], len = sizeof html, destl = sizeof dest) {
- static entitie[4], i, c;
- for( i = 0 ; html[i+3] ; i++) {
- if( html[i] == '&' && html[i+1] == '#') {
- if(-1 != (c=strfind(html, ";", false, i + 2))) {
- strmid(entitie, html, i+2, c);
- strdel(html, i, c+1);
- c = i;
- i += 3 + strlen(entitie);
- format(entitie, 4, "%c", strval(entitie));
- strins(html, entitie, c, len);
- }
- }
- }
- return format(dest, destl, html);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement