#音乐播放器 #apple #音乐 #播放器 #API 绑定 #osascript

apple-music

一个用于完全控制本地 MacOS Apple Music 播放器的 Rust 库

14 个版本 (破坏性更新)

0.11.3 2024 年 1 月 7 日
0.10.0 2024 年 1 月 6 日
0.3.0 2023 年 12 月 31 日

#231 in GUI

MIT 许可证

49KB
839

Apple Music

一个用于完全控制本地 MacOS Apple Music 播放器的 Rust 库。

crates.io maintenance-status docs.rs

该 crate 通过 Rust 代码提供了控制 MacOS Apple Music 播放器的便捷方式。该 crate 的逻辑依赖于 Apple 的脚本 API,通过 osascript CLIJavaScript 脚本来实现。

安装

apple-music 可直接在 crates.io 上使用

cargo add apple-music

如何使用

在项目中导入库

use apple-music::AppleMusic;

库的入口点是 AppleMusic。从那里,你可以

  • 获取应用程序数据 - AppleMusic::get_application_data(); -> ApplicationData

  • 获取当前曲目 - AppleMusic::get_current_track(); -> Track

    • 曲目可以直接使用
      • 喜欢/不喜欢曲目 - track.set_loved(true);track.set_disliked(true);
      • 下载曲目 - track.download()
      • 在播放器中显示曲目 - track.reveal_in_player()
  • 获取当前播放列表 - AppleMusic::get_current_playlist(); -> Playlist

    • 播放列表可以直接使用
      • 在播放列表中搜索歌曲 - playlist.search_for_tracks(track_name) -> Vec<Track>
      • 在播放器中显示播放列表 - playlist.reveal_in_player()
      • 下载播放列表 - playlist.download()

要控制播放器,您可以直接使用 AppleMusic

  • 设置音量 - AppleMusic::set_sound_volume(50);
  • 更改歌曲 - AppleMusic::next_track();
  • 播放特定歌曲 - AppleMusic::play_track(Track);
  • 暂停 - AppleMusic::pause();
  • 退出应用程序 - AppleMusic::quit();

这仅仅是可用API的一部分,甚至没有提到您可以访问的数据。

有关更多信息以及完整列表,请参阅文档

示例

let playlist = &AppleMusic::get_playlist_by_id(1234).unwrap();
AppleMusic::play_playlist(playlist); // Apple Music player starts playing provided Playlist.

AppleMusic::set_shuffle(true); // Shuffle is now enabled on currently playing Playlist.

let track = playlist.fetch_playlist_tracks().unwrap()[5];
AppleMusic::play_track(track); // Apple Music player starts playing provided Track.

let current_track = AppleMusic::get_current_track().unwrap();
println!("{}", current_track.name()); // "An awesome song!"

println!("{}", current_track.artwork_url()); // Prints the direct url for the Artwork of the Track.

current_track.set_loved(true); // Track is now loved!

AppleMusic::next_track(); // Goes to next track.

let current_track = AppleMusic::get_current_track().unwrap();
current_track.reveal_in_player(); // Track is revealed and selected on Apple Music player.

current_track.set_disliked(true); // Track is now disliked!

AppleMusic::set_sound_volume(15); // Sets Player volume to 15.

playlist.download(); // Playlist is being downloaded on Apple Music player.

AppleMusic::quit(); // Quit Apple Music application on Mac.

限制

平台

此crate仅在MacOs上运行,并且仅与macOS 13.4.1和Apple Music 1.3.5进行了测试。

我将非常愿意为其他版本的MacOs / Apple Music提供支持,如果您遇到失败,请毫不犹豫地提出问题!

下一步

在v1.0之前

  • 完成添加剩余的类和方法
    • 添加()
    • 导出()
    • 刷新()
    • 确保整个API都由此crate覆盖

依赖项

~6–23MB
~311K SLoC