vfalies/tmdb

PHP 封装了互联网电影数据库 API

1.12 2021-08-20 14:17 UTC

README

Latest Stable Version Build Status Code Coverage Scrutinizer Code Quality License

Packagist PHP Version Support Tested on PHP 7.1 to 8.0

Tmdb 是 The Movie Database API V3 的 PHP 封装。

目录

  1. 功能
  2. 安装
  3. 基本用法
  4. 用法
    1. 获取 TMDB 实例
    2. 电影
    3. 电视节目
    4. 收藏
    5. 人物
    6. 公司
    7. 通过外部 ID 查找
    8. 身份验证
    9. 媒体助手
  5. 单元测试
  6. 关于

功能

实际支持的功能

  • 搜索
    • 电影
    • 电视节目
    • 收藏
    • 公司
  • 获取信息
    • 电影
    • 电视节目
    • 收藏
    • 公司
    • 类型
    • 电视网络
  • 账户
    • 身份验证
    • 电影/电视节目评分
    • 电影/电视节目收藏
    • 电影/电视节目观看列表
  • 媒体
  • 类型
  • 工作
  • 查找
    • IMDb
    • TheTVDb
    • TVRage
    • Facebook
    • Twitter
    • Instagram

安装

要求

  • Tmdb 支持 PHP 7.1 及以上版本
  • TheMovieDatabase API 密钥

Composer

使用以下命令安装最新版本

$ composer require vfalies/tmdb

基本用法

<?php

require 'vendor/autoload.php';

use VfacTmdb\Factory;
use VfacTmdb\Search;
use VfacTmdb\Item;

// Initialize Wrapper
$tmdb = Factory::create()->getTmdb('your_api_key');

// Search a movie
$search    = new Search($tmdb);
$responses = $search->movie('star wars');

// Get all results
foreach ($responses as $response)
{
    echo $response->getTitle();
}

// Get movie information
$item  = new Item($tmdb);
$infos = $item->getMovie(11, array('language' => 'fr-FR'));

echo $infos->getTitle();

用法

获取 TMDB 实例

TMDB 是库中的主要类。它有两个依赖项

使用工厂

这是加载 TMDB 最简单的方法

<?php
require 'vendor/autoload.php';

use VfacTmdb\Factory;

$tmdb = Factory::create()->getTmdb('your_api_key');

在 Slim 应用中

如果你的应用程序是用 Slim 构建的,你可以在依赖项中添加 TMDB,并将 Slim 的 Monolog 实例注入其中。只需在 dependencies.php 中添加以下内容

$container['tmdb'] = function ($c) {
    $api_key = $c->get('settings')['tmdb']['api_key'];
    $tmdb = new \vfalies\tmdb\Tmdb($api_key, $c->logger);
}

在此示例中,API 密钥在 settings.php 中声明

return [
    'settings' = [
        'tmdb' = [
            'api_key' = 'your_api_key';
        ]
    ]
];

自行操作

如果你需要注入自己的依赖项,这会很有用。在下面的示例中,我们注入了配置为在标准输出上记录日志的 Monolog

<?php
require 'vendor/autoload.php';

use VfacTmdb\Tmdb;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$logger = new Logger('default', [new StreamHandler('php://stdout')])

$tmdb = Tmdb('your_api_key', $logger);

电影

搜索电影

$search    = new Search($tmdb);
$responses = $search->movie('star wars');

搜索返回 Generator 对象,该对象为 Result\Movie 对象。

查看演示

获取电影

$item  = new Item($tmdb);
$movie = $item->getMovie($movie_id);

echo $movie->getTitle();

getter 返回一个 Movie 对象。

查看演示

电视节目

搜索电视节目

$search    = new Search($tmdb);
$responses = $search->tvshow('game of thrones');

搜索返回 Generator 对象,该对象为 Result\TVShow 对象。

查看演示

获取电视节目

$item   = new Item($tmdb);
$tvshow = $item->getTVShow($tvshow_id);

echo $tvshow->getTitle();

getter 返回一个 TVShow 对象。

查看演示

获取电视剧季

$item     = new Item($tmdb);
$tvseason = $item->getTVSeason($tvshow_id, $season_number);

echo $tvseason->getName();

获取器返回一个 TVSeason 对象。

获取电视剧集

$item      = new Item($tmdb);
$tvepisode = $item->getTVEpisode($tvshow_id, $season_number, $episode_number);

echo $tvepisode->getName();

获取器返回一个 TVEpisode 对象。

集合

搜索集合

$search    = new Search($tmdb);
$responses = $search->collection('alien');

搜索返回 Generator 对象的 Result\Collection 对象。

查看演示

获取集合

$item       = new Item($tmdb);
$collection = $item->getCollection($collection_id);

echo $collection->getName();

获取器返回一个 Collection 对象。

查看演示

人物

搜索人物

$search    = new Search($tmdb);
$responses = $search->people('alec baldwin');

搜索返回 Generator 对象的 Result\People 对象。

查看演示

获取人物

$item   = new Item($tmdb);
$people = $item->getPeople($people_id);

echo $people->getName();

获取器返回一个 People 对象。

查看演示

公司

搜索公司

$search    = new Search($tmdb);
$responses = $search->company('lucasfilms');

搜索返回 Generator 对象的 Result\Company 对象。

查看演示

获取公司

$item   = new Item($tmdb);
$company = $item->getCompany($company_id);

echo $company->getName();

获取器返回一个 Company 对象。

查看演示

通过外部 ID 查找

$find = new Find($tmdb);
$responses = $find->imdb('tt0076759');

查找方法使得通过外部 ID 在 TMDb 数据库中搜索对象变得简单。

每个来源都有其自己的方法:imdbtvdbtvragefacebooktwitterinstagram

查找返回一个 Result\Find 对象。每种类型的对象都可以通过特定的方法获取。返回的是一个 Generator 对象的 Result\[预期类型\] 对象。

$movies = $responses->getMovies();
$title  = $movies->current()->getTitle();

每个对象支持的来源如下。

认证

连接到您的账户分为 3 步

  • 获取请求令牌
  • 连接到 TMDb 网站
  • 创建会话

获取请求令牌

$tmdb = Factory::create()->getTmdb('your_api_key');

$Auth = new Auth($tmdb);
echo $Auth->getRequestToken();

连接到 TMDb 网站

$tmdb = Factory::create()->getTmdb('your_api_key');

$Auth = new Auth($tmdb);
$Auth->connect($_POST['request_token']);

此调用将页面重定向到 TMDb 网站登录页面进行身份验证和授权。默认情况下,连接后,用户将停留在 TMDb 网站上。要连接后重定向到您的网站,请使用以下代码

$tmdb = Factory::create()->getTmdb('your_api_key');

$Auth = new Auth($tmdb);
$Auth->connect($_POST['request_token'], 'http://your_url');

创建会话

要使用所有账户方法,我们必须使用有效的会话。

$tmdb = Factory::create()->getTmdb('62dfe9839b8937e595e325a4144702ad');

$Auth = new Auth($tmdb);
echo $Auth->createSession($_POST['request_token']);

媒体助手

库提供的所有媒体信息都是相对路径文件。

要获取有效的媒体 URL,请使用 Media 类生成 URL 并检查媒体大小

$media = new Media($tmdb);
$url = $media->getPosterUrl('/AbJBXaVPrdXROwb8KmgWUPU2XJX.jpg');

支持的媒体类型如下

  • 背景图
  • 海报
  • 标志
  • 个人资料
  • 静止画面

单元测试

您可以在库的源目录中使用以下命令运行单元测试套件

$ make test

关于

提交错误和功能请求

错误和功能请求在 GitHub 上跟踪

作者

Vincent Faliès - vincent@vfac.fr

许可证

VfacTmdb 根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件