PlexKit
PlexKit 提供了对 Plex API 小部分异步、类型安全的访问。
安装
CocoaPods
pod 'PlexKit'
要求
- iOS 10+
- macOS 10.12+
入门指南
身份验证
在访问任何资源之前,我们需要一个身份验证令牌
import PlexKit
// Client identifier is required for most endpoints.
let info = Plex.ClientInfo(clientIdentifier: UUID().uuidString)
let client = Plex(sessionConfiguration: .default, clientInfo: info)
client.request(
// plex.tv endpoints are namespaced under `Plex.ServiceRequest`.
Plex.ServiceRequest.SimpleAuthentication(
username: "USER",
password: "PASS"
)
) { result in
switch result {
case .success(let response):
print("Hello, \(response.user.title)!")
print("Your authentication token is \(response.user.authenticationToken)")
case .failure(let error):
print("An error occurred: \(error)")
}
}
查找服务器
一旦我们拥有令牌,我们就可以访问每个plex.tv端点,或者访问一个服务器实例。要找到服务器(或“资源”),我们可以向plex.tv提问
client.request(
Plex.ServiceRequest.Resources(),
token: token
) { result in
switch result {
case .success(let response):
print("Found \(response.count) resources")
let servers = response.filter { $0.capabilities.contains(.server)}
print("\(servers.count) of which are servers.")
case .failure(let error):
print("An error occurred: \(error)")
}
}
访问库
client.request(
// Resource-related requests are namespaced under `Plex.Request`.
Plex.Request.Libraries(),
from: url,
token: token
) { result in
switch result {
case .success(let response):
let libraries = response.mediaContainer.directory
print("Found \(libraries.count) libraries")
let musicLibraries = libraries.filter { $0.type == .artist }
print("\(musicLibraries.count) are music libraries")
case .failure(let error):
print("An error occurred: \(error)")
}
}
备注
-
请检查
Plex.Request
和Plex.ServiceRequest
命名空间中可用的端点。 -
PlexKit模型直接映射到Plex API返回的数据。在可能的情况下,我已经为Swift清理了这些数据,但这里还可以做更多工作。
-
由于最初是为Prism和Prologue编写的,因此PlexKit主要专注于Plex的音频组件,尽管其他媒体类型也可以工作。
许可证
PlexKit在MIT许可下提供。有关更多信息,请参阅LICENSE文件。