0 Compartilhamentos 10 Views

Como recuperar os comentários dos produtos do BuscaPé

4 de fevereiro de 2014

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.

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 = '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.””;
echo “Esse produto tem = ”.$num_comentarios.” comentário(s)”;
print_r($_opinioes);
?>

Você pode se interessar

Polícia Federal não consegue quebrar criptografia de dois documentos de propina
Notícias
Notícias

Polícia Federal não consegue quebrar criptografia de dois documentos de propina

Carlos L. A. da Silva - 10 de outubro de 2017

Durante oito dias de ataque ininterrupto de força bruta, foram testadas 810 bilhões de combinações de senha, sem sucesso.

Microsoft mata o Windows Media Player
Notícias
13 visualizações
Notícias
13 visualizações

Microsoft mata o Windows Media Player

Carlos L. A. da Silva - 10 de outubro de 2017

Assim como fez com o Paint, programa será removido do Windows 10 na Fall Creators Update e se tornará opcional para usuários.

Western Digital quebra recorde com HD de 14TB
Notícias
26 visualizações
Notícias
26 visualizações

Western Digital quebra recorde com HD de 14TB

Carlos L. A. da Silva - 10 de outubro de 2017

Disco rígido hermeticamente fechado e preenchido com gás hélio poderia armazenar quase 3000 filmes com qualidade HD, mas preço ainda não foi divulgado.

Deixe um Comentário

Your email address will not be published.

Mais publicações