rexlmanu / laravel-cache-tmdb
在您的Laravel应用程序中与TMDB数据进行交互。
Requires
- php: ^8.0 || ^8.1 || ^8.2
- ext-json: *
- guzzlehttp/guzzle: ^6.5.5 || ^7.0.1
- illuminate/database: ^8.0 || ^9.0 || ^10.0
- illuminate/http: ^8.0 || ^9.0 || ^10.0
- illuminate/support: ^8.0 || ^9.0 || ^10.0
- nesbot/carbon: ^2.31
- spatie/laravel-enum: ^3.0
- spatie/laravel-translatable: ^6.3.0
Requires (Dev)
- astrotomic/phpunit-assertions: ^0.6
- friendsofphp/php-cs-fixer: ^3.0
- infection/infection: ^0.25.2
- orchestra/testbench: ^6.0 || ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.2
This package is not auto-updated.
Last update: 2024-09-17 00:11:24 UTC
README
请勿使用此包,而应使用官方包。
Laravel TMDB
安装
composer require astrotomic/laravel-tmdb php artisan vendor:publish --tag=tmdb-migrations
配置
将您的TMDB API v4 Token添加到config/services.php
文件。
config/services.php
return [ // ... 'tmdb' => [ 'token' => env('TMDB_TOKEN'), ], // ... ];
之后,您可以为包使用的某些API请求配置您的语言和地区。默认情况下,我们使用app()->getLocale()
来设置语言,并使用硬编码的US
地区。建议在您的AppServiceProvider
中调用此方法,但您可以在代码的任何地方调用这些方法。
use Astrotomic\Tmdb\Facades\Tmdb; Tmdb::useLanguage('de'); Tmdb::useRegion('DE');
用法
模型
使用提供的模型是使用该包的最简单、功能最完整的方法。它们带有自定义查询构建器,如果请求的模型未在您的本地数据库中找到,则会进行API调用。这仅适用于find()
方法和有时是all()
方法。因此,如果您只想查询数据库,例如,可以使用whereKey()->first()
。
use Astrotomic\Tmdb\Models\Movie; Movie::find(335983); Movie::findMany([335983, 575788]); Movie::findOrFail(335983);
建议准备两个“静态”模型来保存未来的调用,方法是调用它们的all()
方法一次。这将针对每个模型进行一次HTTP调用,并在未来节省多个HTTP调用。
use Astrotomic\Tmdb\Models\MovieGenre; use Astrotomic\Tmdb\Models\TvGenre; use Astrotomic\Tmdb\Models\WatchProvider; MovieGenre::all(); TvGenre::all(); WatchProvider::all();
大多数模型使用spatie/laravel-translatable和一个稍微自定义的translate()
方法。如果您请求它,将自动加载缺失的翻译。
use Astrotomic\Tmdb\Models\Movie; app()->setLocale('en'); $movie = Movie::find(335983); $movie->translate('title', 'en'); // get title from DB $movie->translate('title', 'de'); // get and persist title from API
如果您想更新数据库中的数据,可以在任何模型上调用updateFromTmdb()
方法。这应该在控制台命令或队列作业中完成,因为它将进行大量的HTTP请求,并且每部电影可能需要几分钟。
use Astrotomic\Tmdb\Models\Movie; Movie::eachById(static function(Movie $movie): void { $movie->updateFromTmdb('de', ['credits']); });
电影
首先,您还可以使用额外的关系find()
电影,并且它们也将从API中查询。要做到这一点,您只需要在调用任何find()
方法之前在查询上调用with()
方法。
use Astrotomic\Tmdb\Models\Movie; Movie::with('genres')->find(335983); Movie::with('credits')->find(335983); Movie::with('cast')->find(335983); Movie::with('crew')->find(335983);
有一些方法在每次都会进行HTTP调用。如果它们接受一个$limit
参数,它们将自动调用每一页,直到找到指定数量的ID。在这种情况下,您必须提供一个显式参数;如果使用null
,则将调用strong
每一页。这可能会导致成千上万次的请求——因此,建议提供一个合理的数字。
use Astrotomic\Tmdb\Models\Movie; Movie::popular(20); Movie::upcoming(20); Movie::toprated(20); Movie::trending(20); Movie::findOrFail(335983)->recommendations(20); Movie::findOrFail(335983)->similars(20);
您还可以获取给定电影的全部观看提供者(由JustWatch提供)。这些可以按给定地区和/或类型进行过滤/限制。
use Astrotomic\Tmdb\Models\Movie; use Astrotomic\Tmdb\Enums\WatchProviderType; Movie::findOrFail(335983)->watchProviders(); Movie::findOrFail(335983)->watchProviders('DE'); Movie::findOrFail(335983)->watchProviders(null, WatchProviderType::FLATRATE()); Movie::findOrFail(335983)->watchProviders('DE', WatchProviderType::FLATRATE());
电影模型上还有一些辅助方法,可以更容易地处理某些属性。
use Astrotomic\Tmdb\Models\Movie; Movie::findOrFail(335983)->runtime(); Movie::findOrFail(335983)->poster(); Movie::findOrFail(335983)->backdrop();
人物
人物模型与电影和通用方法API具有相同的基本模型。
use Astrotomic\Tmdb\Models\Person; Person::with('movie_credits')->find(6384); Person::trending(20); Person::findOrFail(6384)->profile();
图片
有一些辅助类可以为您生成带有正确宽高比的图片URL。具有图片路径属性的模型有一个快捷方法,该方法返回该图片类的实例。
use Astrotomic\Tmdb\Models\Movie; Movie::find(335983)->poster(); Movie::find(335983)->backdrop();
这些图片助手将在您的Blade模板中输出时渲染一个<img/>
标签。如果将它们转换为字符串,将返回图片URL或备用URL。您还可以调用url()
或fallback()
来获取一个或另一个URL,然后按需使用。
请求
模型使用面向对象的请求类,您也可以使用自己的。这些不是主要的API使用,但在需要时,您可以使用。
use Astrotomic\Tmdb\Requests\Movie\Details; Details::request(335983)->send()->json();
更新日志
请参阅变更日志获取更多信息,了解最近有哪些变化。
贡献
安全
如果您发现任何与安全相关的问题,请查阅安全指南了解报告步骤。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。
Treeware
您可自由使用此软件包,但如果它进入您的生产环境,我将非常感激您为世界购买一棵树。
众所周知,解决气候危机并防止我们的温度上升超过1.5摄氏度最佳工具之一是植树。如果您为我的森林做出贡献,您将创造当地家庭的就业机会并恢复野生动物栖息地。
您可以在ecologi.com/astrotomic购买树木。
有关Treeware的更多信息,请访问treeware.earth