LastFM.swift
这是一个用于消费 last.fm API 的库。此库涵盖了 last.fm API 页面 中列出的所有服务。
安装
Swift Package Manager
Swift Package Manager 是一个管理 Swift 代码分布的工具。
- 将以下内容添加到您的
Package.swift
文件中
dependencies: [
.package(url: "https://github.com/duhnnie/LastFM.swift", from: "1.0.0")
]
- 构建您的项目
$ swift build
Carthage
Carthage 是一个用于 Cocoa 的简单、去中心化的依赖管理器。要使用 Carthage 安装 LastFM.swift
-
请确保已安装Carthage。[安装Carthage](https://github.com/Carthage/Carthage#installing-carthage)。
-
将Cartfile更新为以下内容
github "duhnnie/LastFM.swift" ~> 1.0.0
-
运行
carthage update
并[添加适当的框架](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application)。
CocoaPods
CocoaPods是Cocoa项目的依赖管理工具。要使用CocoaPods安装LastFM.swift
-
请确保CocoaPods已安装。
# Using the default Ruby install will require you to use sudo when # installing and updating gems. [sudo] gem install cocoapods
-
将您的Podfile更新为以下内容
use_frameworks! target 'YourAppTargetName' do pod 'LastFM.swift', '~> 1.0.0' end
-
运行
pod install --repo-update
。
用法
您需要一个last.fm API账户,您可以在这里获取一个账户。一旦拥有API账户,您需要创建一个LastFM.swift实例,提供API密钥和API密钥
import LastFM
let lastFM = LastFM(apiKey: "your_api_key", apiSecret: "your_api_secret")
之后,您就可以开始使用服务了(有关所有可用服务的更多信息/文档,请参阅这里)
let recentTrackParams = RecentTracksParams(user: "someUser", limit: 10, page: 1)
lastFM.User.getRecentTracks(params: recentTrackParams) { result in
switch (result) {
case .failure(let error):
print("error message: \(error.localizedDescription)")
switch(error) {
case .LastFMServiceError(let lastfmErrorType, let message):
print(lastfmErrorType, message)
case .NoData:
print("No data was returned.")
case .OtherError(let error):
print("An error ocurred: \(error)")
case .NoSessionKey:
print("No session key provided.")
}
case .success(let obj):
for track in obj.items {
print("\(track.artist.name) - \(track.name) - \(track.nowPlaying ? "🔈" : track.date!.debugDescription)")
}
}
}
认证
一些服务需要认证,此库提供了所有必要的认证方法(您可以在这里了解last.fm提供的所有认证路径)。
例如,要将歌曲上传到您的last.fm资料库,您需要提供从last.fm认证路径中获得的会话密钥,以便last.fm知道该乐曲应用于哪个账户。
var scrobbleParams = ScrobbleParams()
scrobbleParams.addItem(
item: ScrobbleParamItem(
artist: "The Strokes",
track: "The Adults Are Talking",
date: Date(),
album: "The New Abnormal"
)
)
try lastFM.Track.scrobble(
params: scrobbleParams,
sessionKey: "your_session_key",
onCompletion: { result in
switch (result) {
case .success(let scrobble):
print(scrobble)
case .failure(let error):
print(error)
}
}
)
Linux 支持
LastFM.swift 支持 Linux。然而运行测试会导致致命错误
Fatal error: Constant strings cannot be deallocated
这就是为什么一些测试在 GitHub Actions 中运行的原因。无论如何,您可以通过运行以下命令在本地 Docker 容器中运行测试(它具有不同的 Swift 版本):
./runLinuxTests.sh
关于 Linux 中出现的问题
贡献
原作者
许可证
LastFM.swift 采用 MIT 许可协议。有关更多信息,请参阅 许可文件。