Categorias

Como recuperar os comentários dos produtos do BuscaPé

Uma vez me perguntei porque não aproveitar o que os clientes escreviam sobre um produto (bem ou mal) nos comparadores como o BuscaPé? Procurei inúmeras vezes pela internet e nada de encontrar alguém falando sobre isso.

Fui atras e encontrei a API do BuscaPé Developer e pronto meu desejo começou a torna-se realidade. Foi então que criei a classe que compartilho com você agora. É possível fazer muitas coisas com essa API, e as explicações são bem explicativas e com exemplos de implementações, além de ter a opção de monetização $$ (ótimo para quem precisa).

O próximo passo seria um gestor de comentários sobre os produtos, como o COMENTA que já não esta mais disponível, mas a ideia é muito bacana. Quem sabe não tomo coragem e coloco isso em pratica.

Primeiramente é necessário criar um cadastro no BuscaPé. Tem uma página da própria empresa explicando tudo direitinho.

https://developer.buscape.com/tutoriais/procedimentos-para-desenvolver-sua-aplicacao/

Após criado o aplicativo de conexão você terá acesso a sua chave que será usado nessa conexão. O código foi desenvolvido em PHP, mas pode ser convertido facilmente em outras linguagens.

Depois que implementar você somente precisa fazer uma tabela do seu código de produto para o código do BuscaPé.

Para conseguir o código do Produto BuscaPé, existe um truque. Quando você abre o código fonte da pagina, procure por “unico”, você encontrará um atributo dessa forma da imagem.

captura-de-tela-buscape

Depois é só copiar o atributo “prodId” para a sua tabela de relacionamento.

initialize($code);
return $this;
}
private function initialize($code)
{
$this->host = $_SERVER['SERVER_ADDR'];
$this->setCode($code)->viewUserRatings();
return $this;
}
/* attributes -> in */
private function setCode($code)
{
if ($code > 0) $this->code = $code;
return $this;
}
private function getCode()
{
return $this->code;
}
private function getHost()
{
return $this->host;
}
/* attributes -> out */
private function setData($_data)
{
$this->_data = $_data;
return $this;
}
public function getData()
{
return $this->_data;
}
private function getUserRating()
{
return $this->userRating;
}
private function setUserRating($userRating)
{
$this->userRating = $userRating;
return $this;
}
private function getUserOpinions()
{
return $this->userOpinions;
}
private function setUserOpinions($userOpinions)
{
$this->userOpinions = $userOpinions;
return $this;
}
private function getURL($service=‘viewUserRatings’)
{
$url = null;
if ($this->getCode() > 0 &$service != ‘’) $url = 'https://'.$this->url.'/service/‘.$service.’/‘.$this->key.'/BR/?productId='.$this->getCode().'&clientIp='.$this->host;
return $url;
}
/* Resource */
public function viewUserRatings()
{
$url = $this->getURL('viewUserRatings');
if ($url != null)
{
$xml = simplexml_load_file($url);
if ($xml)
{
if ($this->getCode() > 0 & $xml != '') $this->setData($xml)->mapping();
}
}
return $this;
}
private function mapping()
{
$xml = $this->getData();
$this->setUserRating($xml->product->rating->userAverageRating)->setUserOpinions($xml->opinions);
return $this;
}
private function filter($_opinion)
{
$word = '[bloqueada]';
$_words = array (
'bosta',
'merda',
'caralho',
'diabo',
'https://',
'www',
'@',
'\$',
);
$_opinion['comment']['comment'] = str_ireplace($_words, $word, $_opinion['comment']['comment']);
$_opinion['comment']['positive'] = str_ireplace($_words, $word, $_opinion['comment']['positive']);
$_opinion['comment']['negative'] = str_ireplace($_words, $word, $_opinion['comment']['negative']);
$_opinion['author'] = str_ireplace($_words, $word, $_opinion['author']);
$_opinion['title'] = str_ireplace($_words, $word, $_opinion['title']);
return $_opinion;
}
/* method public */
public function getRating()
{
return doubleval($this->getUserRating()->rating);
}
public function getSpecification()
{
$v_spec = array();
$xml = $this->getData();
$specs = $xml->product->specification->item;
$s = sizeof($specs);
if ($s > 0)
{
foreach($specs as $spec)
{
$v_spec[] = array (
'label' => utf8_decode($spec->attributes()->label),
'value' => utf8_decode($spec->value[0])
);
}
}
return $v_spec;
}
public function getNumComments()
{
return $this->getUserRating()->numComments;
}
public function getOpinions()
{
$v_opinions = array();
$opinions = $this->getUserOpinions();
$s = sizeof($opinions);
if ($s>0)
{
foreach($opinions as $opinion)
{
$v_date = date_parse($opinion->attributes()->date);
$v_opinion = array (
'Recommend' => $opinion->attributes()->RecommendProduct,
'date' => str_pad($v_date['day'], 2, "0", STR_PAD_LEFT).'/'.str_pad($v_date['month'], 2, "0", STR_PAD_LEFT).'/'.$v_date['year'],
'title' => ucfirst(strtolower(htmlentities(utf8_decode($opinion->title)))),
'author' => htmlentities(utf8_decode($opinion->author)),
'rating' => $opinion->rating->userAverageRating->rating,
'comment' => array (
'comment' => htmlentities(utf8_decode($opinion->comment->comment)),
'positive' => htmlentities(utf8_decode($opinion->comment->positive)),
'negative' => htmlentities(utf8_decode($opinion->comment->negative))
)
);
$v_opinions[] = $this->filter($v_opinion);
}
}
return $v_opinions;
}
}
$id_produto = "271739";
$buscape = new BuscaPe($id_produto);
$_opinioes = $buscape->getOpinions();
$pontuacao = $buscape->getRating();
$num_comentarios = $buscape->getNumComments();
echo “Pontuação desse produto é = ”.$pontuacao.””;
echo “Esse produto tem = ”.$num_comentarios.” comentário(s)”;
print_r($_opinioes);
?>