软体

Build Status Platform Swift Package Manager macOS Linux

Soft 是一个用于 Swift 的 Spotify Web API 库。它与 Swift Package Manager 一起使用,并支持 Linux,因此它可以在桌面和服务器端应用程序中运行。

这是基于 rspotify 的实现。

这仍然是一个正在进行中的工作,并且仅支持有限数量的调用。请参阅 SpotifyClient.swift 以查看支持的调用以及接下来要实现的一些 TODO。非常感谢任何帮助。

Linux 支持

Soft 现在支持 Linux 了! 未来,一旦 keyEncodingStrategykeyDecodingStrategy 得到支持,我们将删除所有不必要的 CodingKey 声明。 请参阅此处的错误报告 here

安装

将其添加到您的 Package.swift

.package(url: "https://github.com/oliveroneill/Soft.git", .upToNextMajor(from: "0.0.6")),

用法

请参阅 SpotifyClient.swift 以了解当前可用的调用。 该类中有很多 TODO,用于说明需要实现的调用,我将不胜感激您的帮助来完成实现。

授权

所有方法都需要用户授权,这意味着您需要生成一个授权令牌,表明用户已授予您的应用程序执行给定任务的权限。

您将需要指定一个重定向 URL,此 URL 不需要指向任何地方,仅用于检索 Spotify 添加的查询参数。

示例

import Foundation
import Soft

do {
    let oauth = try SpotifyOAuth(clientID: "CLIENT_ID", clientSecret: "CLIENT_SECRET", redirectURI: URL(string: "https://:8888/callback")!, state: "STATE", scope: "playlist-read-private")

    // Dispatch group is used so that program does not exit until the result
    // is received
    let dispatchGroup = DispatchGroup()
    dispatchGroup.enter()
    getToken(oauth: oauth) { result in
        switch result {
        case .success(let token):
            let client = SpotifyClient(tokenInfo: token)
            client.track(trackID: "11dFghVXANMlKmJXsNCbNl") {
                print($0)
                dispatchGroup.leave()
            }
        case .failure(let error):
            print("error: \(error)")
            dispatchGroup.leave()
        }
    }
    dispatchGroup.notify(queue: DispatchQueue.main) {
        exit(EXIT_SUCCESS)
    }
    dispatchMain()
} catch {
    print(error)
}

在 Linux 上运行测试

在 macOS 上使用 Docker 时,使用此命令在 Linux 上运行测试

docker run --rm -v "$(pwd):/pkg" -w "/pkg" swift:latest /bin/bash -c "swift test --build-path ./.build/linux"