A simple PHP library for determining the popularity of a given URL by querying social network APIs.
It presently supports:
- Twitter (counts mentions and retweets)
- Facebook (counts likes, comments and shares)
- Pinterest (shares)
- Reddit (counts submitted stories and upvotes)
- StumbleUpon views
- LinkedIn shares
Hacker NewsAPI service is currently offline.Mozscape BacklinksRetired.
There a variety of use cases for this library; generating a list of your blog's most popular articles for optimizing placement, or featuring social network counters on your pages without relying on bloated external JavaScript includes.
To add this package as a dependency for your project, simply add
evansims/socialworth
to your project's composer.json file.
Here is an example of a minimal composer.json file:
{
"require": {
"evansims/socialworth": "*"
}
}
Then run composer install
to install the library. Composer generates a
vendor/autoload.php
file that you'll need to include in your project
before invoking Socialworth:
require 'vendor/autoload.php';
To query all supported services for a URL:
use Evansims\Socialworth\Socialworth;
$socialworth = new Socialworth('https://github.com/');
var_dump($socialworth->all());
Alternatively you can query just one service:
var_dump(Socialworth::twitter('https://github.com/'));
Or leave out specific services from your query:
$socialworth = new Socialworth(['linkedin', 'twitter']) // won't do facebook etc.
var_dump($socialworth->all());
The all()
method will return an object that you can use to grab individual
service results or find the combined popularity from the services:
$socialworth = new Socialworth('https://github.com/');
$response = $socialworth->all();
var_dump($response->total); // Total likes, shares, upvotes, etc.
var_dump($response->reddit); // Just shares and upvotes from reddit.
var_dump($response->twitter); // Just mentions, retweets and shares on Twitter.
The setClient
allows to set a custom Guzzle Client so you can attach subscribers or mock request
$socialworth->setClient(new \GuzzleHttp\Client());
A demo script is provided that allows you to query the library from your browser, or the command line.
To call the script from the command line ...
$ php demo.php https://github.com/
Or, to query individual services ...
$ php demo.php --twitter --facebook https://github.com/
If the demo script is accessible from your web server, you can pass a url ...
http://localhost/path/to/demo.php?url=https://github.com/
Whether from the CLI or the browser, you will receive a JSON object back.
{
"total": 48217,
"twitter": 26582,
"facebook": 15284,
"pinterest": 157,
"reddit": 5,
"stumbleupon": 297,
"linkedin": 0
}
This work was inspired by Jonathan Moore's gist: https://gist.github.com/2640302