• Stars
    star
    375
  • Rank 113,556 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 14 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Node.js module to easily execute arbitrary AppleScript code on Mac OS X.

node-applescript

A high-level way to execute AppleScript code through Node.js, and retrieve the result as a native JavaScript object. Underneath the hood, this module is just a simple wrapper around the macOS osascript command.

Why?

AppleScripts are the only way to communicate and interact with certain external macOS processes, for example iTunes.

Easy Install

$ npm install applescript

Requirements

  • Mac (or Hackintosh) running macOS (tested with High Sierra)
  • Node.js (v0.2.0 or newer)

Usage

The node-applescript module provides execString and execFile functions to easily execute AppleScript commands and buffer the output into a calback.

const applescript = require('applescript');

// Very basic AppleScript command. Returns the song name of each
// currently selected track in iTunes as an 'Array' of 'String's.
const script = 'tell application "iTunes" to get name of selection';

applescript.execString(script, (err, rtn) => {
  if (err) {
    // Something went wrong!
  }
  if (Array.isArray(rtn)) {
    for (const songName of rtn) {
      console.log(songName);
    }
  }
});

execFile works the exact same way, except you pass the path of the AppleScript (*.applescript) file as the first argument instead of the command itself, and you may pass an optional Array of String arguments to send to the applescript file.

Licence

The node-applescript module is licensed under the MIT license, of course!

More Repositories

1

Java-WebSocket

A barebones WebSocket client and server implementation written in 100% Java.
Java
10,438
star
2

NodObjC

The Node.js ⇆ Objective-C bridge
JavaScript
1,396
star
3

proxy-agents

Node.js HTTP Proxy Agents Monorepo
TypeScript
912
star
4

node-spotify-web

Node.js implementation of the Spotify Web protocol
JavaScript
695
star
5

node-speaker

Output PCM audio data to the speakers
JavaScript
634
star
6

ansi-canvas

Render a <canvas> node to your terminal
JavaScript
578
star
7

plist.js

Mac OS X Plist parser/builder for Node.js and browsers
JavaScript
566
star
8

node-lame

Node.js native bindings to libmp3lame & libmpg123
C++
561
star
9

ref

Turn Buffer instances into "pointers"
JavaScript
453
star
10

node-bindings

Helper module for loading your native module's `.node` file
JavaScript
394
star
11

node-time

"time.h" bindings for Node.js
JavaScript
377
star
12

keypress

Make any Node ReadableStream emit "keypress" events
JavaScript
352
star
13

node-socks-proxy-agent

A SOCKS (v4/v5) proxy `http.Agent` implementation for HTTP and HTTPS
333
star
14

ansi.js

Advanced ANSI formatting tool for Node.js
JavaScript
315
star
15

node-icy

Node.js module for parsing and/or injecting ICY metadata
JavaScript
288
star
16

node-proxy-agent

Maps proxy protocols to `http.Agent` implementations
284
star
17

node-iOS

Native node bindings to iOS functionality (vibrate, acceleromoter, geoservices, etc.)
C++
265
star
18

proxy

An HTTP proxy written with Node.js (think Squid)
254
star
19

gnode

Run node with ES6 Generators, today!
JavaScript
247
star
20

node-throttle

Node.js Transform stream that passes data through at `n` bytes per second
JavaScript
179
star
21

node-wav

`Reader` and `Writer` streams for Microsoft WAVE audio files
JavaScript
174
star
22

superagent-proxy

`Request#proxy(uri)` superagent extension
JavaScript
154
star
23

nx.js

JavaScript runtime for Nintendo Switch homebrew applications
C++
147
star
24

node-nat-pmp

Node.js implementation of the NAT Port Mapping Protocol
JavaScript
129
star
25

node-http-proxy-agent

An HTTP(s) proxy `http.Agent` implementation for HTTP endpoints
128
star
26

ref-struct

Create ABI-compliant "struct" instances on top of Buffers
JavaScript
118
star
27

node-cgi

An http/stack/connect layer to invoke and serve CGI executables.
Perl
100
star
28

nTunes

A REST (HTTP) API for interacting with iTunes written in NodeJS.
JavaScript
95
star
29

node-modbus-stack

A `StreamStack` implementation of the MODBUS protocol, for NodeJS.
JavaScript
87
star
30

node-data-uri-to-buffer

Generate a Buffer instance from a Data URI string
86
star
31

node-telnet

Telnet implementation for Node.js
JavaScript
85
star
32

node-upnp-client

UPnP Library for NodeJS.
JavaScript
69
star
33

spotify-uri

Parse and format the various Spotify URI formats
JavaScript
66
star
34

node-ogg

Node.js native binding to libogg
JavaScript
65
star
35

node-pac-proxy-agent

A PAC file proxy `http.Agent` implementation for HTTP and HTTPS
58
star
36

node-agent-base

Turn a function into an `http.Agent` instance
58
star
37

NodeFloyd

An Icecast-compatible server written in NodeJS that streams non-stop "Pink Floyd"!
JavaScript
54
star
38

ref-array

Create C "array" instances on top of Buffers
JavaScript
53
star
39

node-pac-resolver

Generates an asynchronous resolver function from a PAC file
53
star
40

node-get-uri

Returns a `stream.Readable` from a URI string
49
star
41

stat-mode

Offers convenient getters and setters for the fs.stat()'s `mode`
TypeScript
48
star
42

node-gitweb

Directly invoke and serve GitWeb through NodeJS.
JavaScript
40
star
43

util-deprecate

The Node.js `util.deprecate()` function with browser support
JavaScript
37
star
44

ttys

Guaranteed read and write streams to the terminal
JavaScript
36
star
45

blessed-css

CSS engine for `blessed`
TypeScript
35
star
46

node-flv

FLV media container file format encoder and decoder
JavaScript
34
star
47

click-outside

The inverse of the DOM "click" event
HTML
34
star
48

switch-tools

Web app to create "NSP forwarders" for your modded Nintendo Switch
TypeScript
34
star
49

n8.io-old

my blog (deployed to DigitalOcean)
JavaScript
32
star
50

node-drone-joystick

Control AR.Drones using any SDL-compatible Joystick (PS3 Sixaxis, etc.)
JavaScript
31
star
51

SandboxJS

JavaScript "Sandboxes" for the web browser.
JavaScript
31
star
52

node-stream-parser

Generic interruptible "parser" mixin for Transform & Writable streams
JavaScript
29
star
53

node-vorbis

Node.js native binding to libvorbis
JavaScript
28
star
54

node-iTunes

A native node interface to interact with an iTunes process.
C++
28
star
55

node-elf-logger

A Node.js library for configurable HTTP logging following the W3C Extended Log File Format
JavaScript
28
star
56

file-uri-to-path

Convert a `file:` URI to a file path
JavaScript
27
star
57

node-function-name

Set the "name" property of `Function` objects
JavaScript
27
star
58

node-stream-stack

Filter low-level `Stream` instances into stackable, protocol-based streams.
JavaScript
27
star
59

node-buffer-dataview

Minimal DataView implementation that works with Node.js Buffers
JavaScript
26
star
60

node-dlopen

Native bindings to libuv's uv_dlopen() and friends
JavaScript
26
star
61

Simple-Game-Framework

An object-oriented JavaScript API to develop simple, shape and sprite based games.
JavaScript
25
star
62

rocker

Remote Docker: docker -H ssh://[email protected] run -p 80:80 nginx
Shell
23
star
63

iheart

iHeart Radio JavaScript API
JavaScript
23
star
64

once

Creates a Promise that waits for a single event
TypeScript
23
star
65

node-amf

"Action Message Format" read() and write() functions for Buffers
JavaScript
22
star
66

SoundJS

A cross-browser JavaScript sound loading, playing and layering library primarily designed for browser-based games to have a multi-layering sound API.
Haxe
22
star
67

pcre-to-regexp

Converts PCRE regexp strings to JavaScript RegExp instances
JavaScript
21
star
68

node-ctypes

Node.js implementation of "ctypes" to interface with C libs
JavaScript
20
star
69

node-degenerator

Turns sync functions into async functions
19
star
70

node-function-class

Easy `Function` subclasses
JavaScript
19
star
71

nightscout-ps1

Renders your latest blood glucose reading from Nightscout in the command line
JavaScript
19
star
72

nightscout-ps1-c

Tiny C program that formats your latest Nightscout BGL reading for use in your terminal prompt (a.k.a $PS1)
C
18
star
73

ar-drone-socket.io-proxy

Proxy AR.Drone UDP messages over a Socket.io HTTP connection
JavaScript
17
star
74

dotfiles

My dotfiles and such...
Vim Script
17
star
75

path-array

Treat your $PATH like a JavaScript Array
JavaScript
17
star
76

react-tela

Use React to render images, shapes and text to `<canvas>`
TypeScript
17
star
77

node-drone-video

Dump AR.Drone h264 video streams with matching metadata video. Splicing/editing is left up to you.
JavaScript
16
star
78

RetroPie-Profiles

RetroPie plugin to create profiles for save files and save states
Shell
15
star
79

ref-union

Create ABI-compliant "union" instances on top of Buffers
JavaScript
15
star
80

babel-plugin-transform-dirname-filename

Babel plugin that rewrites `__dirname` and `__filename` to static values
JavaScript
15
star
81

mpg123.js

Decode MP3s in the browser using libmpg123 compiled with emscripten
JavaScript
15
star
82

s3fs

Implementation of NodeJS FS interface using Amazon Simple Storage Service (S3).
JavaScript
14
star
83

array-index

Invoke getter/setter functions on array-like objects
JavaScript
14
star
84

node-gitProvider

An http/connect/stack layer to serve the contents of a 'git' repository over HTTP.
JavaScript
14
star
85

n8-make

Opinionated Makefile to build ES6 JS, JSX and Pug files
Makefile
13
star
86

ref-wchar

A ref "type" implementation of `wchar_t *` (a.k.a. wide string) backed by "node-iconv"
JavaScript
13
star
87

nTunesAnywhere

A mobile WebApp to stream your iTunes library from anywhere (using nTunes and jo)!
JavaScript
12
star
88

node-dlfcn

Native bindings to the dynamic shared library linker (dlfcn)
JavaScript
11
star
89

dexcom-share

Async Iterator API for reading blood glucose readings from Dexcom's Share servers
TypeScript
11
star
90

ModuleJS

Asynchronous CommonJS-like Module Loader for web-browsers.
JavaScript
10
star
91

node-objc

This module is deprecated in favor of NodObjC. Use that instead.
C++
9
star
92

vercel-dev-builder

Meta-runtime for Vecel that makes developing Runtimes easier
TypeScript
9
star
93

create

The missing Native.create() functions that ECMA forgot.
JavaScript
9
star
94

nexec

Execute a remote command over HTTP
JavaScript
9
star
95

ansi-hash

Get an ANSI color code for a given string
JavaScript
8
star
96

node-http-stack

A `StreamStack` implementation of the HTTP protocol, for NodeJS.
JavaScript
8
star
97

node-mail-stack

A `StreamStack` subclass that parses raw e-mail messages.
JavaScript
8
star
98

browserify-single-file

Runs browserify transforms/plugins on a single file. Useful for make pipeline tasks.
JavaScript
8
star
99

node-autoreleasepool

A very simple wrapper around the OS X NSAutoreleasePool, for NodeJS
C++
7
star
100

require-string

Turns an arbitrary String into a CommonJS compatible module
JavaScript
7
star