diechittigs / star-scraper
从各种来源聚合星级评价
Requires
- facebook/graph-sdk: ^5.6
- kriswallsmith/buzz: ^0.15.1
- mazedlx/median: ^1.2
This package is auto-updated.
Last update: 2024-09-25 19:56:16 UTC
README
由Die Schittigs编写的PHP库。
这是什么?
Star Scraper用于从不同网站(例如Google Places、Facebook)收集评价,并计算出一个平均评价,以便在你的网站上显示。这对于有Facebook和其他平台评价的(本地)企业来说特别有用,他们希望以统一的方式将这些评价显示在主页上。它还可以用来显示Google搜索结果旁边的小星星。
安装
通过Composer安装。
composer require dieschittigs/star-scraper
使用方法
首先,进行一些导入并初始化StarRating
<?php
use DieSchittigs\StarScraper\StarRating;
use DieSchittigs\StarScraper\GooglePlaceProvider;
use DieSchittigs\StarScraper\FacebookPageProvider;
use DieSchittigs\StarScraper\FakeRatingsProvider;
$starRating = new StarRating();
现在您可以添加RatingProviders(这就是您的评价来源)。目前我们只支持Google Places(也称为Google My Business)和Facebook Pages。
自定义最高评价值
您不需要5颗星,而是100%作为您的最高评价?没问题。
<?php
$starRating = new StarRating(100);
Star Scraper将对所有提供者的单个结果进行归一化,以确保最终结果不受其最高评价值的影响;
Google My Business / Google Maps Places
您需要一个Google API密钥(激活Google Places API Web Service)和您的PlaceID(您的Google Maps上的业务)。
<?php
$starRating->addProvider(
new GooglePlaceProvider(
'{{GoogleApiKey}}',
'{{GoogleMapsPlaceID}}'
)
);
Facebook Pages
您需要一个Facebook应用ID和密钥以及您的PageID。
<?php
$starRating->addProvider(
new FacebookPageProvider(
'{{FacebookAppID}}',
'{{FacebookAppSecret}}',
'{{FacebookPageID}}'
)
);
虚假评价
如果您只想尝试一下,可以使用一些虚假评价。
<?php
$starRating->addProvider(
new FakeRatingsProvider([5,4,3,5,4])
);
$starRating->addProvider(
new FakeRatingsProvider([1,2,1,3,1,3])
);
获取平均评价
要从所有提供者获取中位数评价,只需调用
<?php
$rating = $starRating->getRating();
这将给出中位数 - 如果您更倾向于更不精确的平均值,请调用
<?php
$rating = $starRating->getRating('mean');
结果将如下所示
<?php
DieSchittigs\StarScraper\Rating Object
(
[bestRating] => 5
[ratingCount] => 18
[ratingValue] => 4.5
)
扩展
如果您想添加自己的RatingProviders,这很简单。
<?php
use DieSchittigs\StarScraper\RatingProvider;
use DieSchittigs\StarScraper\Rating;
class CustomRatingsProvider extends RatingProvider{
private $reviews;
public function __construct($apiKeysOrWhatever){
$this->bestRating = 100;
// call an API or fetch your results from a DB
$this->reviews = $reviews;
}
public function getRating($method = 'median'){
// Return null if e.g. your api call died
if(!$this->reviews) return null;
$rating = new Rating($this->bestRating, count($this->reviews));
$scores = [];
foreach($this->reviews as $review){
$scores[] = $review->rating;
}
$rating->avgRatingValue($scores, $method);
return $rating;
}
}
在Provider中调用外部API
在调用API时,请考虑使用BrowserTrait
。
<?php
use DieSchittigs\StarScraper\RatingProvider;
use DieSchittigs\StarScraper\Rating;
use DieSchittigs\StarScraper\BrowserTrait;
class CustomRatingsProvider extends RatingProvider{
use BrowserTrait;
public function __construct($apiKey){
$result = $this->getBrowser()->get("http://api.example.org?key=$apiKey");
$data = $result->getContent();
}
...
}
$this->getBrowser()
将给出一个Buzz/Browser的实例。浏览器实例与其他提供者共享以提高性能。
贡献
我们需要更多的RatingProviders!评价来源包括
- Yelp
- ...
您的帮助非常受欢迎 :)