hooshid / metacritic-scraper
Library for retrieving movie, game, album, tv, person, video, company, story information from metacritic.com
Requires
- php: >=7.3
- ext-curl: *
- ext-json: *
- voku/simple_html_dom: ^4.8
Requires (Dev)
- phpunit/phpunit: ^9.6
README
Using this Metacritic API, you are able to search, browse and extract data of movies and tv series on metacritic.com.
Install
This library scrapes metacritic.com so changes their site can cause parts of this library to fail. You will probably need to update a few times a year.
Requirements
- PHP >= 7.3
- PHP cURL extension
Install via composer
$ composer require hooshid/metacritic-scraper
Run examples
The example gives you a quick demo to make sure everything's working, some sample code and lets you easily see some available data.
From the example folder in the root of this repository start up php's inbuilt webserver and browse to http://localhost:8000
php -S localhost:8000
Examples
Get movie data
Movie: The Matrix (1999) / URL: https://www.metacritic.com/movie/the-matrix
$metacritic = new Hooshid\MetacriticScraper\Metacritic(); $extract = $metacritic->extract("/movie/the-matrix"); $result = $extract['result']; $error = $extract['error']; // get all available data as json echo json_encode($extract);
in above example we first create a new obj from Metacritic() class, then we call extract method and give the metacritic.com url in first param.
if everything ok, result key filled and if not, the error key filled with error occurred
Tv Series: Game of Thrones (2011-2019) / URL: https://www.metacritic.com/tv/game-of-thrones
$metacritic = new Hooshid\MetacriticScraper\Metacritic(); $extract = $metacritic->extract("/tv/game-of-thrones"); $result = $extract['result']; $error = $extract['error']; if ($error) { echo $error; } else { echo $result['type']; // type (movie, tv, game, person and ...) echo $result['title']; // movie/series title echo $result['thumbnail']; // Poster thumbnail echo $result['summary']; // Summary echo $result['release_year']; // Release year echo $result['must_see']; // Must see? echo $result['meta_score']; // Meta Score echo $result['meta_votes']; // Meta Votes echo $result['user_score']; // User Score echo number_format($result['user_votes']); // User Votes }
you must always catch error first then get results.
Search
$metacritic = new Hooshid\MetacriticScraper\Metacritic(); $result = $metacritic->search("it"); // get all available data as json echo json_encode($result);
$metacritic = new Hooshid\MetacriticScraper\Metacritic(); $result = $metacritic->search("it", 0, "movie"); // output { "results": [ { "full_url": "https://www.metacritic.com/movie/it", "url": "/movie/it", "url_slug": "it", "title": "It", "description": "When children begin to disappear in the town of Derry, Maine, a group of young kids are faced with their biggest fears when they square off against an evil clown named Pennywise, whose history of...", "year": 2017, "type": "movie", "meta_score": 69, "must_see": false, "score_class": "positive" }, { ... } ], "paginate": { "current_page": 0, "last_page": 16, "per_page": 10 } }
in above example we give 2 new param to method, $page must be integer as paginate.
$type by default return all, but you can specify this param to (all, movie, tv, person)
Full examples
just open the example folder, we put all examples and methods demo for you in there!
Related projects
License
The MIT License (MIT). Please see License File for more information.