No post passado eu expliquei como faz um crawler em PHP para pegar os smartphones com melhor custo benefício no site tudo celular, agora vamos pegar o resultado da busca e postar no twitter, vou assumir que vocês conhecem o Composer, então a primeira coisa a fazer é abrir o arquivo Composer.json
"j7mbo/twitter-api-php": "^1.0"
Essa biblioteca serve para usar o twitter com PHP, assim podemos postar textos, imagens e fazer consultas também.
Vamos criar uma classe para fazer isso mais fácil, então lá na pasta Classes, crie isso aqui:
<?php
namespace OliviaBlog\Classes;
use TwitterAPIExchange;
class ClassTwitterApi
{
protected $settings = null;
public function __construct($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret)
{
$this->set_access_tokens($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret);
}
private function set_access_tokens($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret)
{
$this->settings = array(
'oauth_access_token' => $oauth_access_token,
'oauth_access_token_secret' => $oauth_access_token_secret,
'consumer_key' => $consumer_key,
'consumer_secret' => $consumer_secret
);
}
public function get_tweet($tweets, $user)
{
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$requestMethod = 'GET';
$getfield = '?q=to:' . $user . '&sinceId=' . $tweets[0]->id;
// Perform the request
$twitter = new TwitterAPIExchange($this->settings);
$b = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
$arr = json_decode($b, TRUE);
echo "Replies <pre>";
print_r($arr);
die;
}
public function get_user_tweets($user)
{
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name=' . $user;
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($this->settings);
$response = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
return json_decode($response);
}
public function tweetar_image($dado)
{
$conection = new TwitterOAuth(
$this->settings['consumer_key'],
$this->settings['consumer_secret'],
$this->settings['oauth_access_token'],
$this->settings['oauth_access_token_secret']
);
$user = $conection->get('account/verify_credentials');
$tweetM = $conection->upload('media/upload', array('media' => $dado['image_url']));
return $conection->post('statuses/update', ['media_ids' => $tweetM->media_id, 'status' => $dado['titulo']]);
}
//put your code here
public function tweetar($dado)
{
$url = 'https://api.twitter.com/1.1/statuses/update.json';
// twitter api endpoint request type
$requestMethod = 'POST';
// twitter api endpoint data
$apiData = array(
'status' => '' . $dado . '',
);
// create new twitter for api communication
$twitter = new TwitterAPIExchange($this->settings);
// make our api call to twiiter
$twitter->buildOauth($url, $requestMethod);
$twitter->setPostfields($apiData);
$response = $twitter->performRequest(true, array(CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0));
// display response from twitter
return $response;
}
}
Pronto, agora é só instanciar lá no HomeController e usar essa nova classe para postar no twitter, obviamente você vai precisar criar uma conta no twitter e acessar a área de desenvolvedores no twitter, lá você vai conseguir o:
$consumer_key = ‘’;
$consumer_secret = ‘’;
$oauth_access_token = ‘’;
$oauth_access_token_secret = ‘’;
Agora é só instanciar a classe ClassTwitterApi passando esses dados, depois instanciar a classe ClassTudoCelular que criamos no post passado, e chamar o método twettar passando o método que criamos para gerar o texto com os smartphones.
$twitter = new ClassTwitterApi($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret);
$tudoCelular = new ClassTudoCelular();
print_r($twitter->tweetar($tudoCelular->get_smartphones()));
Ahhhhhh mas se eu quiser tweetar outra coisa, problema é seu, você pode fazer o que seu coração mandar, se você quiser fazer com que isso seja automático, você pode criar um cronjob que posta isso todo mês, ou uma vez a cada 3 meses mais ou menos, não sei de quanto em quanto tempo essa lista é atualizada.
Aqui abaixo está nossa brincadeira funcionando.