apple-music 0.2.0

A Rust Library to control local Apple Music App
Documentation
function run(input) {
    const Music = Application("Music");
    const application = {};

    airplay_devices = [];
    Music.currentAirPlayDevices().forEach((device) => {
        airplay_devices.push({
            class: device.class(),
            id: device.id(),
            index: device.index(),
            name: device.name(),
            persistent_id: device.persistentID(),
            raw_properties: JSON.stringify(device.properties()),

            active: device.active(),
            available: device.available(),
            network_address: device.networkAddress(),
            protected: device.protected(),
            selected: device.selected(),
            supports_audio: device.supportsAudio(),
            supports_video: device.supportsVideo(),
            sound_volume: device.soundVolume(),
        });
    })

    if (airplay_devices.length > 0) {
        application.current_airplay_devices = airplay_devices;
    }

    application.airplay_enabled = Music.airplayEnabled();
    application.converting = Music.converting();
    eq_presets = [];
    Music.eqPresets().forEach((preset) => {
        eq_presets.push({
            class: preset.class(),
            id: preset.id(),
            index: preset.index(),
            name: preset.name(),
            raw_properties: JSON.stringify(preset.properties()),

            band1: preset.band1(),
            band2: preset.band2(),
            band3: preset.band3(),
            band4: preset.band4(),
            band5: preset.band5(),
            band6: preset.band6(),
            band7: preset.band7(),
            band8: preset.band8(),
            band9: preset.band9(),
            band10: preset.band10(),
            modifiable: preset.modifiable(),
            preamp: preset.preamp(),
            update_tracks: preset.updateTracks(),
        });
    });
    application.current_eq_presets = eq_presets;
    application.current_playlist = Music.currentPlaylist();

    application.current_stream_title = Music.currentStreamTitle();
    application.current_stream_url = Music.currentStreamURL();

    visual = Music.currentVisual()
    application.current_visual = {
        class: visual.class(),
        id: visual.id(),
        index: visual.index(),
        name: visual.name(),
        raw_properties: JSON.stringify(visual.properties()),
    };

    encoder = Music.currentEncoder()
    application.current_encoder = {
        class: encoder.class(),
        id: encoder.id(),
        index: encoder.index(),
        name: encoder.name(),
        raw_properties: JSON.stringify(encoder.properties()),

        format: encoder.format(),
    };
    application.eq_enabled = Music.eqEnabled();
    application.fixed_indexing = Music.fixedIndexing();
    application.frontmost = Music.frontmost();
    application.full_screen = Music.fullScreen();
    application.name = Music.name();
    application.mute = Music.mute();
    application.player_position = Music.playerPosition();
    application.player_state = Music.playerState();
    application.selection = JSON.stringify(Music.selection());
    application.shuffle_enabled = Music.shuffleEnabled();
    application.shuffle_mode = Music.shuffleMode();
    application.song_repeat = Music.songRepeat();
    application.sound_volume = Music.soundVolume();
    application.version = Music.version();

    visuals = []
    Music.visuals().forEach((visual) => {
        visuals.push({
            class: visual.class(),
            id: visual.id(),
            index: visual.index(),
            name: visual.name(),
            raw_properties: JSON.stringify(visual.properties()),
        });
    });

    application.visuals = visuals;
    application.visuals_enabled = Music.visualsEnabled();

    return JSON.stringify(application);
}