hooshid/metacritic-scraper

Library for retrieving movie, game, album, tv, person, video, company, story information from metacritic.com

2.3.0 2024-07-31 06:43 UTC

This package is auto-updated.

Last update: 2024-10-30 15:52:49 UTC


README

Build Status Total Downloads Latest Stable Version License

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.