havenstd06 / laravel-plex
一个允许访问您Plex服务器API的Laravel包。
Requires
- php: ^8.1
- ext-curl: *
- ext-simplexml: *
- guzzlehttp/guzzle: ~7.0
- illuminate/support: ~6.0|~7.0|~8.0|~9.0|~10.0
- nesbot/carbon: ~2.0
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0
- symfony/var-dumper: ~5.0
README
一个允许访问您Plex服务器API的Laravel包。
安装
composer require havenstd06/laravel-plex
发布资产
php artisan vendor:publish --provider="Havenstd06\LaravelPlex\Providers\PlexServiceProvider"
配置
发布资产后,将以下内容添加到您的 .env 文件中。
# Plex API PLEX_SERVER_URL= PLEX_TOKEN= PLEX_CLIENT_IDENTIFIER= PLEX_PRODUCT=havenstd06/laravel-plex PLEX_VERSION=1.0.0 PLEX_VALIDATE_SSL=true
配置文件
配置文件 plex.php 位于 config 文件夹中。以下是发布后的内容
return [ 'server_url' => env('PLEX_SERVER_URL', ''), // Plex Server URL (ex: http://[IP address]:32400) 'token' => env('PLEX_TOKEN', ''), 'client_identifier' => env('PLEX_CLIENT_IDENTIFIER', ''), // (UUID, serial number, or other number unique per device) 'product' => env('PLEX_PRODUCT', 'havenstd06/laravel-plex'), // (Plex application name, eg Laika, Plex Media Server, Media Link) 'version' => env('PLEX_VERSION', '1.0.0'), // (Plex application version number) 'validate_ssl' => env('PLEX_VALIDATE_SSL', true), // Validate SSL when creating api client. ];
用法
初始化
use Havenstd06\LaravelPlex\Services\Plex as PlexClient; $provider = new PlexClient;
覆盖配置
您可以通过调用 setApiCredentials 方法来覆盖Plex API配置。
$config = [ 'server_url' => 'https://example.com', 'token' => 'your-token', 'client_identifier' => 'your-client-identifier', 'product' => 'your-product', 'version' => 'your-version', 'validate_ssl' => true, ]; $provider->setApiCredentials($config);
集成
账户
登录以返回Plex用户数据(包括令牌)。
$data = [ 'auth' => [ 'username/email', // Required 'password', // Required ], 'headers' => [ // Headers: https://github.com/Arcanemagus/plex-api/wiki/Plex.tv#request-headers // X-Plex-Client-Identifier is already defined in default config file ] ]; // The second parameter allows you to choose if you want to // authenticate with the token registered in the config // (ONLY IF THE TOKEN EXISTS). $plexUser = $provider->signIn($data, false); $token = $plexUser['user']['authToken'];
获取服务器账户详细信息。
$provider->getAccounts();
获取账户信息
$provider->getPlexAccount();
获取Plex.TV账户信息。
$provider->getServerPlexAccount();
用户
列出所有家庭用户,包括访客(UI中的“用户和共享”)。
$provider->getUsers();
验证用户名或电子邮件
$provider->validateUser('username | email');
朋友
获取共享朋友列表。
$provider->getFriends();
邀请朋友。
如果您没有传递包含库ID的数组($librarySectionIds),则将获取服务器的所有库。设置也是可选的。
use Havenstd06\LaravelPlex\Classes\FriendRestrictionsSettings; $librarySectionIds = [ 652397653, 765367227, 887542234 ]; $settings = new FriendRestrictionsSettings( allowChannels: '1', allowSubtitleAdmin: '1', allowSync: '0', allowTuners: '0', filterMovies: '', filterMusic: '', filterTelevision: '', ); $provider->inviteFriend('me@hvs.cx', $librarySectionIds, $settings);
取消邀请。
$provider->cancelInvite('me@hvs.cx');
获取待处理邀请列表。
$provider->getPendingInvites();
移除朋友。
$provider->removeFriend(12345678); // Friend ID / InvitedID
获取朋友详细信息
$provider->getFriendDetail(12345678); // Friend ID / InvitedID
更新朋友限制
use Havenstd06\LaravelPlex\Classes\FriendRestrictionsSettings; $settings = new FriendRestrictionsSettings( allowChannels: '1', allowSubtitleAdmin: '1', allowSync: '0', allowTuners: '0', filterMovies: '', filterMusic: '', filterTelevision: '', ); $provider->updateFriendRestrictions(12345678, $settings); // Friend ID / InvitedID
更新朋友库
$librarySectionIds = [ 652397653, 765367227, 887542234 ]; $provider->updateFriendLibraries(12345678, $librarySectionIds); // Friend ID / InvitedID
服务器
获取本地服务器列表。
$provider->getServers();
获取服务器详细信息(包含库ID)
$provider->getServerDetail($machineIdentifier); // optional argument
获取服务器身份详细信息
$provider->getServerIdentity();
获取服务器及其节点的列表。限于已启用远程访问的服务器。第二个参数用于包含精简版。
$provider->getPmsServers(true);
获取服务器功能详细信息。转码比特率信息,服务器信息。
$provider->getServerCapabilities();
获取服务器首选项。
$provider->getServerPreferences();
系统
plex系统的一般信息。
$provider->getSystem();
可用的代理(及其部分配置)
$provider->getSystemAgents();
数据库
这将搜索提供的字符串。
$provider->searchDatabase('Avengers');
会话
这将检索PMS的“正在播放”信息。
$provider->getNowPlaying();
检索所有历史观看列表。
$provider->getViewsHistory();
设备
获取可用客户端和服务器列表。
$provider->getDevices();
获取服务器设备详细信息。
$provider->getDevices();
资源
获取服务器、设备及其节点的列表。
$provider->getResources();
库
这将搜索提供的字符串。第二个参数是限制。
$provider->searchLibrary('Avengers', 10);
显示预览列表
$provider->getOnDeck();
包含PMS上的所有部分。令人困惑的是,Plex的UI将部分称为库:例如“电视剧”或“电影”。这充当目录,您能够“遍历”它。
$provider->getLibraries();
获取传入部分的所有数据。
$provider->getLibrary(1);
删除部分
$provider->deleteLibrary(1);
刷新传入部分的库。
$provider->refreshLibrary(1);
播放列表
获取播放列表列表。
$provider->getPlaylists();
与库关联的键。
可以通过调用getPlaylists方法找到此键。
$provider->getPlaylist(2);
与库关联的键。
可以通过调用getPlaylists方法找到此键。
$provider->getPlaylistItems(2);
媒体
获取指定高度和宽度的照片。
$provider->getPhoto('path', 480, 719);
询问服务器是否可以提供带有/不带转码的视频(基于客户端配置文件)。
$provider->getVideo('path', 'http');
将具有相应“评分键”的项目标记为已观看。
$provider->scrobble('item rating key');
将具有相应“评分键”的项目标记为未观看。
$provider->unscrobble('item rating key');
将具有相应“评分键”的媒体项标记为部分观看,填充其“viewOffset”字段。
时间是毫秒。
$provider->progress('item rating key', 'offset');
翻译
获取翻译,例如:fr
$provider->getTranslations('fr');
鸣谢
许可证
贡献
欢迎提交拉取请求。
对于主要变更,请先创建一个问题,讨论您希望进行哪些变更。
请确保根据需要更新测试。
