Como recuperar os comentários dos produtos feitos pelos usuários 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.

http://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.

codigo-fonte-buscape

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

Abraço e colaborações serão bem vindas.

<?php
class BuscaPe
{
 private $code = 0; 
 private $host = '';
 private $url = 'sandbox.buscape.com’; // utilize essa URL no modo DESENVOLVIMENTO
 //private $url = 'bws.buscape.com'; // URL de Produção
 private $key = [CHAVE_DESENVOLVEDOR];
 private $_data = null;
 public function __construct($code)
 {
 $this->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 = 'http://'.$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',
 'http://',
 '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.”<br?>”;
echo “Esse produto tem = ”.$num_comentarios.” comentário(s)”;
print_r($_opinioes);
?>
Anúncios

2 comentários sobre “Como recuperar os comentários dos produtos feitos pelos usuários do BuscaPé

  1. Olá Thiago, obrigado pelo tutorial!
    Eu posso publicar minha app utilizando a API em modo sandbox? Minha app ainda está em versão beta…
    (Entendo que o modo sandbox não vai ter a monetização…). Valeu!!

    • Bom dia Lucas,

      Se for para utilizar por outras pessoas, eu não aconselho. O BuscaPé procura validar a origem do trafego e caso eles não aprovem você poderá ter problemas com quem utiliza.
      Espero ter ajudado. Abraço.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s