6 releases

0.2.0 May 24, 2023
0.1.5 May 24, 2023
0.1.4 Mar 21, 2023

#406 in Multimedia

MIT license

165KB
2.5K SLoC

Rust wrappers over the COM API of iTunes for Windows

Documentation of this crate can be found on docs.rs


lib.rs:

Bindings over iTunes COM API for Windows

What is this for?

iTunes COM API makes it possible to control the local instance of iTunes.

This crate is able to read info (about playlists, songs, etc.) from the local iTunes instance.
It is also able to edit data (add songs to playlists, change track ratings, etc.) on the local iTunes instance.
It is also able to interact with iTunes state and settings (get info about the currently opened windows, get or set EQs, etc.)
It is not meant to read or edit "cloud" playlists, or to do anything network-related.

OS and software compatibility

This crate is Windows-only. Currently, only iTunes is supported, as Apple Music on Windows does not (yet?) expose a COM interface.
On macOS, it is possible to control iTunes and Apple Music using Apple Script.

How can this crate be used?

Raw bindings

This crate provides raw bindings over the COM API. See the [sys] module.

Safe bindings

In case it is built with the wrappers Cargo feature, it also provides safe, Rust-typed wrappers over this API. See the wrappers module.

Examples

Examples are available in the examples/ folder. Run them with cargo run --example ... --all-features.

Notes

This crate probably does not correctly work on 32-bit machines (run cargo clippy --all-features and see the Clippy errors).

Dependencies

~0–38MB
~531K SLoC