nntmux/trakt

该包已被弃用且不再维护。未建议替代包。

Trakt API包装器

3.0.2 2018-02-21 12:22 UTC

This package is auto-updated.

Last update: 2022-02-01 13:12:20 UTC


README

Build Status

注意:此包是现在已弃用的megawubs/trakt-api-wrapper的分支

Trakt-api-wrapper版本2

这是针对他们新API(版本2)的Trakt API包装器。它处于积极开发中

安装

在您的composer.json文件中添加:"nntmux/trakt": "~3.0" 并运行 composer install

或者您可以发出:composer require nntmux/trakt

目标

此包装器的目标是使与Trakt API通信更简单。它旨在简单、易于阅读和在很多情况下可使用。设计为composer包,它可以轻松地安装在大型应用程序中。

Laravel使用

要在Laravel中使用包装器,您只需将NNTmux\Trakt\Providers\Laravel\TraktApiServiceProvider::class添加到您的config/app.php文件中的providers数组中。完成此操作后,使用\NNTmux\Trakt\Trakt类作为类型提示将其注入到路由或方法中。请参阅此处示例

 Route::get(
    '/',
    function (\NNTmux\Trakt\Trakt $trakt) {
        dump($trakt->movies->popular());
    }
);

非Laravel使用

如果您不使用Laravel,则需要做更多工作才能使其工作。

实例化Trakt API包装器

API包装器需要一个依赖项。即NNTmux\Trakt\Auth类,它反过来依赖于NNTmux\Trakt\Provider\TraktProviderTraktProvider包含您的客户端ID、密钥和您的重定向URL。为了创建Auth对象

<?php
$provider = new TraktProvider($clientId, $clientSecret, $redirectUrl);
$auth = new Auth($provider);

有了这个,您就可以创建Trakt类。

$trakt = new Trakt($auth);

如果您想模拟HTTP请求,您可以为Trakt提供一个第二个参数,该参数必须实现GuzzleHttp\ClientInterface。如果您不传递一个,将使用真实实现向Trakt发送请求。

一旦创建了Trakt对象,您应将其注册在您的IoC容器中,这样您就只需编写一次实例化Trakt类的代码。

OAuth

获取您的OAuth令牌后,请执行以下操作。

<?php
$trakt->auth->authorize();

在创建Auth对象时,您指定了一个重定向URL。这是Trakt将用户重定向到的URL,其中包含您可以使用它来获取访问令牌的代码。

当您调用$trakt->auth->authorize();时,用户将被重定向到trakt.tv的授权页面。在授予您的应用程序访问其账户的权限后,Trakt将重定向到提供的URL,并带有代码。然后可以使用此代码获取访问令牌。可以这样执行:$trakt->auth->token($code);

但是,在你还没有运行的网站时,你无法指定一个返回URL。为了在Trakt网站上显示代码,你需要告诉Trakt你想重定向到自身,并显示你需要获取访问令牌的代码。你可以通过提供以下字符串作为重定向URL来完成此操作:urn:ietf:wg:oauth:2.0:oob。只有在你没有运行本地开发机器时,这才有必要。

假设你的客户端ID是12345678,客户端密钥是secret01,并且你有一个主机名为trakt.dev的本地开发机器。现在,你可以将trakt.dev/trakt/auth设置为我们的重定向URL。

有了这个,你可以创建一个路由,然后执行以下操作。假设这是你的索引路由。

<?php

//... initiate Auth

$auth = $trakt->auth->authorize();

//route: trakt/auth
$token = $trakt->auth->token($_GET['code']);

现在,当你通过OAuth流程时,你会在屏幕上看到你的令牌(League\OAuth2\Client\Token\AccessToken的一个实例)被打印出来。将令牌中的值存储在某处,以便用户需要时可以重新创建它。你可以通过使用$trakt->auth->createToken()并传递所需的参数$token$type$expires$refresh$scope来完成此操作。这将返回一个League\OAuth2\Client\Token\AccessToken的实例,你可以将其传递给需要令牌的方法。

使用API包装器

现在,你有了访问令牌,你可以使用它通过Trakt类从trakt.tv检索特定用户的数据。

<?php

//initialize Auth here...

$trakt = new Trakt($auth);
$token = $trakt->auth->createToken($token, $type, $expires, $refresh, $scope);

$settings = $trakt->users->settings($token);
$comment = $trakt->comments->get($commentId);
$movie = $trakt->search->byId($type, $id);
$movie = $trakt->search->byId($type, $id, $token); //can be with, or without token.

分页和扩展信息

为了利用扩展信息和分页功能,你必须在使用端点之前设置页面或扩展信息级别。以下是一个示例

<?php
$trakt->movies->page(2)->collected(); //this will get the second page of the /movies/collected endpoint
//when you want to specify a limit
$trakt->movies->page(2)->limit(15)->collected(); //this will give you the second page, with 15 items

扩展信息也是如此

<?php

$trakt->movies->withImages()->collected();//this will give you all kinds of extra images
//or
$trakt->movies->withFull()->collected(); //this will give you a lot of extra data

你还可以将所有这些结合起来

<?php
$response = trakt->movies
    ->page(2)
    ->withImages()
    ->withFull()
    ->limit(20)
    ->collected();
    

现在,响应将是movies/collected端点的第二页,所有图片和数据限制为每页20项。

请随时联系我或帮助开发 :)