- Notifications
You must be signed in to change notification settings - Fork0
PHP Wrapper for TMDB (The Movie DataBase) API V3
License
biroa/tmdb
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Tmdb is a PHP wrapper forThe Movie Database APIV3.
Features actualy supported :
- Search
- Movie
- TV Show
- Collection
- Company
- Getting informations
- Movie
- TV Show
- Collection
- Company
- Genres
- TV Network
- Account
- Authentification
- Movies / TV Shows rating
- Movies / TV Shows favorites
- Movies / TV Shows watchlist
- Media
- Genres
- Jobs
- Find
- IMDb
- TheTVDb
- TVRage
- Tmdb works with PHP 7.1 and higher
- TheMovieDatabase API key
Install the lastest version with
$ composer require vfalies/tmdb
<?phprequire'vendor/autoload.php';useVfacTmdb\Factory;useVfacTmdb\Search;useVfacTmdb\Item;// Initialize Wrapper$tmdb = Factory::create()->getTmdb('your_api_key');// Search a movie$search =newSearch($tmdb);$responses =$search->movie('star wars');// Get all resultsforeach ($responsesas$response){echo$response->getTitle();}// Get movie information$item =newItem($tmdb);$infos =$item->getMovie(11,array('language' =>'fr-FR'));echo$infos->getTitle();
TMDB
is the main class of the library.It has two dependencies :
- a API key fromThe Movie DataBase website
- a
Psr\Log\LoggerInterface
instance to write logs
It is the easiest way to load TMDB
<?phprequire'vendor/autoload.php';useVfacTmdb\Factory;$tmdb = Factory::create()->getTmdb('your_api_key');
If your application is built withSlim, you can add TMDB in your dependencies and inject Slim'sMonolog instance into it.Just add this independencies.php
$container['tmdb'] =function ($c) {$api_key =$c->get('settings')['tmdb']['api_key'];$tmdb =new \vfalies\tmdb\Tmdb($api_key,$c->logger);}
In this example, API key is declared insettings.php
return ['settings' = ['tmdb' = ['api_key' = 'your_api_key'; ] ]];
Convenient if you need too inject your own dependencies. In the example below, we injectMonolog configured to write logs on standards output.
<?phprequire'vendor/autoload.php';useVfacTmdb\Tmdb;useMonolog\Logger;useMonolog\Handler\StreamHandler;$logger =new Logger('default', [newStreamHandler('php://stdout')])$tmdb =Tmdb('your_api_key',$logger);
$search =newSearch($tmdb);$responses =$search->movie('star wars');
The search returnsGenerator
object ofResult\Movie
object.
$item =newItem($tmdb);$movie =$item->getMovie($movie_id);echo$movie->getTitle();
The getter returns aMovie
object.
$search =newSearch($tmdb);$responses =$search->tvshow('game of thrones');
The search returnsGenerator
object ofResult\TVShow
object.
$item =newItem($tmdb);$tvshow =$item->getTVShow($tvshow_id);echo$tvshow->getTitle();
The getter returns aTVShow
object.
$item =newItem($tmdb);$tvseason =$item->getTVSeason($tvshow_id,$season_number);echo$tvseason->getName();
The getter returns aTVSeason
object.
$item =newItem($tmdb);$tvepisode =$item->getTVEpisode($tvshow_id,$season_number,$episode_number);echo$tvepisode->getName();
The getter returns aTVEpisode
object.
$search =newSearch($tmdb);$responses =$search->collection('alien');
The search returnsGenerator
object ofResult\Collection
object.
$item =newItem($tmdb);$collection =$item->getCollection($collection_id);echo$collection->getName();
The getter returns aCollection
object.
$search =newSearch($tmdb);$responses =$search->people('alec baldwin');
The search returnsGenerator
object ofResult\People
object.
$item =newItem($tmdb);$people =$item->getPeople($people_id);echo$people->getName();
The getter returns aPeople
object.
$search =newSearch($tmdb);$responses =$search->company('lucasfilms');
The search returnsGenerator
object ofResult\Company
object.
$item =newItem($tmdb);$company =$item->getCompany($company_id);echo$company->getName();
The getter returns aCompany
object.
$find =newFind($tmdb);$responses =$find->imdb('tt0076759');
The find method makes it easy to search for objects in TMDb database by an external id.
Each sources has his proper methods:imdb
,tvdb
,tvrage
,facebook
,twitter
,instagram
.
The find returns aResult\Find
object. Each types of objects can be getted by a specific method. The returns is aGenerator
object ofResult\[expected type]
object.
$movies =$responses->getMovies();$title =$movies->current()->getTitle();
Object types | Methods | Generator of |
---|---|---|
movies | getMovies() | Result\Movie |
peoples | getPeoples() | Result\People |
TV shows | getTVShows() | Result\TVShow |
TV episodes | getTVEpisodes() | Result\TVEpisode |
TV Seasons | getTVSeasons() | Result\TVSeason |
The supported external sources for each object are as follows.
Movies | TV Shows | TV Seasons | TV Episodes | People | |
---|---|---|---|---|---|
IMDb ID | ✓ | ✓ | ✕ | ✓ | ✓ |
TVDb ID | ✓ | ✓ | ✓ | ✕ | |
Freebase MID | not implemented | ||||
Freebase ID | not implemented | ||||
TVRage | ✕ | ✓ | ✓ | ✓ | ✓ |
✓ | ✓ | ✕ | ✕ | ✓ | |
✓ | ✓ | ✕ | ✕ | ✓ | |
✓ | ✓ | ✕ | ✕ | ✓ |
The connection to your account is in 3 steps:
- Getting a request token
- Connection to TMDb website
- Create a session
$tmdb = Factory::create()->getTmdb('your_api_key');$Auth =newAuth($tmdb);echo$Auth->getRequestToken();
$tmdb = Factory::create()->getTmdb('your_api_key');$Auth =newAuth($tmdb);$Auth->connect($_POST['request_token']);
This call redirect the page to TMDb website login page for identification and authorisations. By default, after the connection, the user stay on TMDb website. To redirect to your website after the connection, use the following code:
$tmdb = Factory::create()->getTmdb('your_api_key');$Auth =newAuth($tmdb);$Auth->connect($_POST['request_token'],'http://your_url');
To use all account methods, we must use a valid session.
$tmdb = Factory::create()->getTmdb('62dfe9839b8937e595e325a4144702ad');$Auth =newAuth($tmdb);echo$Auth->createSession($_POST['request_token']);
All media informations delivered by the library are relative pathfile.
To get a valid media URL, use theMedia
class to generate the URL and check the media size
$media =newMedia($tmdb);$url =$media->getPosterUrl('/AbJBXaVPrdXROwb8KmgWUPU2XJX.jpg');
The following type of media are supported :
- Backdrop
- Poster
- Logo
- Profile
- Still
You can run the unit test suites using the following command in the library's source directory:
$ make test
Bugs and feature request are tracked onGitHub
Vincent Faliès -vincent@vfac.fr
VfacTmdb is licensed under the MIT License - see theLICENSE
file for details