havenstd06/laravel-plex

一个允许访问您Plex服务器API的Laravel包。

v1.0.4 2023-06-24 16:08 UTC

This package is auto-updated.

Last update: 2024-09-25 22:19:28 UTC


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');

鸣谢

许可证

MIT

贡献

欢迎提交拉取请求。
对于主要变更,请先创建一个问题,讨论您希望进行哪些变更。
请确保根据需要更新测试。