diechittigs/star-scraper

从各种来源聚合星级评价

1.0.0 2017-10-24 18:56 UTC

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
  • LinkedIn
  • Xing
  • ...

您的帮助非常受欢迎 :)