2015-04-17 23 views
8

Korzystam z poniższego kodu, aby znaleźć opinie o Google dotyczące nieruchomości. Próbuję zrobić to, że pobieram recenzję dla nieruchomości, a następnie porównuję ją ze starym przeglądem tej właściwości (która znajduje się w DB). Jeśli jest większa niż właściwość systemu, wysyła wiadomość e-mail.Recenzje w Google API

Ten plik jest uruchamiany co godzinę (jako plik cron), a ja włączam rozliczenia w Google API, więc maksymalny limit wynosi 1,50,000.

Jednak z jakiegoś powodu API nie zwraca dokładnej liczby recenzji. Na przykład:
Uruchomiłem ten plik dla jednej właściwości, która ma 4 recenzje, ale API zwraca 0 dla 2 lub 3 razy, a następnie po pewnym czasie zwraca 4 recenzje.

Nie znam przyczyny. Zauważyłem też, że możemy zobaczyć recenzje na stronie wyszukiwania w Google oraz w Google+. Podobnie możesz pisać opinie w wielu miejscach, np. W Google+ i na Mapie Google.

Aby sprawdzić recenzje, używam adresu URL google plus. Czy to możliwe, że recenzja istnieje, ale w innym obszarze (np. Na stronie wyszukiwania Google, ale nie w Google+)?

/* call api to get review count of Google */ 
$url = "https://maps.googleapis.com/maps/api/place/details/json?"; 
$params = array(
    "placeid" => $google_place_id, 
    "key" => $google_api_key 
); 
$url .= http_build_query($params); 
$resjson = file_get_contents($url); 
$msg = $resjson; 
Yii::log($msg,'info', 'application'); 
$resjson = json_decode($resjson,true); 

$review_count = $resjson['result']['user_ratings_total']=='' ? 0 : $resjson['result']['user_ratings_total']; 
/* If review is greater than 0 then check old review and if it's not same then send email */ 
if($review_count>0) 
{ 
    if(sizeof($ressql)>0) 
    { 
     /* if google plus review is greater then system's google+ review then send email */ 
     if($review_count>trim($ressql[0]['google_plus_review'])) 
     { 
      $this->send_googleplusmail($prop_id); 
      $msg = "Google+ Review for property id (Mail Sent):".$prop_id." , New Review:$review_count, Old Review: ".$ressql[0]['google_plus_review']; 
      Yii::log($msg,'info', 'application'); 
     } 
    } 
} 

$sql=" INSERT INTO tbl_review_alert (propertyid, google_plus_review) VALUES "; 
$sql.="('{$prop_id}','{$review_count}')"; 
$sql.=" ON DUPLICATE KEY UPDATE propertyid= {$prop_id},google_plus_review= {$review_count}"; 
$this->insert_review($sql); 

Moje pytanie brzmi:
(1) Czy to możliwe, że przegląd nie istnieje, ale w innej dziedzinie (jak na stronie wyszukiwarki Google, ale nie w Google+)? Jeśli tak, to czy w takim przypadku mogę uzyskać adres URL, pod którym publikowana jest recenzja?
(2) Czy wszystkie recenzje są zsynchronizowane w Google?
(3) Czy robię coś nie tak w moim kodzie?

+1

Czy możesz zaktualizować swój kod identyfikatorem miejsca, który ma niespójną liczbę recenzji, abyśmy mogli odtworzyć? – Alexey

+0

@Alexey, identyfikator miejsca google jest dynamiczny, powyższy problem dotyczy wielu właściwości. exa: 'https: // plus.google.com/101511264527346460079/about' i' https://www.google.co.in/webhp?ie=utf-8&oe=utf-8&gws_rd=cr&ei=clA-VeieGIORuQSj54DwCw#q = The + Kensington + 665 + Washington + St + Boston% 2C + MA + 02111' widać, że w Google + nie ma przeglądu.ale w wyszukiwarce Google widać, że istnieje 43 opinii Google dotyczących tej usługi. – DS9

+0

Nawiasem mówiąc, interfejs API Miejsc Google może wyświetlać maksymalnie 5 opinii z dokumentu (https://developers.google.com/places/webservice/details), recenzji [] tablicy JSON zawierającej maksymalnie pięć recenzji. – ilpaijin

Odpowiedz

5

Chyba znalazłem miejsce, w którym jest problem.

Powodem, dla którego nie można zobaczyć istniejących opinii na temat tego Miejsca jest to, że wydaje się, że istnieją 2 konta google + dla tego samego; Jedyna różnica (przynajmniej pierwszy zauważyłem) jest w kod pocztowy, MA 02116 vs. MA 02111.

Spójrz:

https://plus.google.com/101511264527346460079/about

i

https://plus.google.com/105917345931375838754/about

Jak widać, w drugim są te same opinie można zobaczyć w search page

I wstawiając adres "The Kensington, 665 Washington St, Boston, MA 02116, Stati Uniti" do the finder, otrzymuję placeid różny od drugiego.

Teraz za pomocą tego ostatniego w

$params = array(
    "placeid" => $google_place_id, // the new placeid here 
    "key" => $google_api_key 
); 

mogę wtedy dostać 5 opinii w odpowiedzi json Place API.

+0

wielkie dzięki. tylko ciekawy, jak możesz znaleźć, że istnieją dwa konta Google +? – DS9

+0

Nie ma za co. Jednak nic specjalnego, właśnie grałem i zauważyłem to. – ilpaijin