An open API service indexing awesome lists of open source software.

https://github.com/vdsbenoit/auto-jingle

Tool to play a jingle at given interval. It also pauses & resumes the current Spotify playback
https://github.com/vdsbenoit/auto-jingle

Last synced: 5 days ago
JSON representation

Tool to play a jingle at given interval. It also pauses & resumes the current Spotify playback

Awesome Lists containing this project

README

          

# Auto Jingle

A standalone jingle scheduler that pauses Spotify at configured times, plays a jingle in QuickTime Player, then resumes Spotify.

> [!NOTE]
> Only works on macOS due to reliance on AppleScript for Spotify control and QuickTime for playback.

## Screenshot

![Auto Jingle UI](/doc/screenshot.png)

## Features

- Scheduler with `HHhMM` times
- Live UI: status, next jingle, last run, and error display
- QuickTime playback
- Finder file picker for jingle file
- Auto jingle duration detection (`afinfo`, fallback to `mdls`)
- Editable schedule and force-play button
- Settings persistence in `~/.auto-jingle/settings.json`

## Requirements

### Use

- macOS
- Spotify app installed
- QuickTime Player available (built-in on macOS)

### Development

- macOS
- Deno
- Xcode Command Line Tools (`swiftc`, `iconutil`, `sips`)

## Quick start

```bash
deno task build:mac-app
```

Output:

- `dist/Auto Jingle.app`
- `dist/Auto Jingle.zip`

Install:

1. Open `dist/` in Finder.
2. Drag `Auto Jingle.app` into `/Applications`.
3. Launch from Applications.

First launch notes:

- Gatekeeper may block the app since it's unsigned. Use "Open Anyway" in System Preferences > Security & Privacy to allow it.
- Spotify / QuickTime automation will trigger macOS permissions prompts.

## Run in development

```bash
deno task dev
```

The app starts at `http://localhost:8844` and opens automatically in your browser.

## Environment variables

- `AUTO_JINGLE_PORT`
- Default: `8844`
- Purpose: HTTP port used by the web server.
- Example:

```bash
AUTO_JINGLE_PORT=9000 deno task dev
```

- `AUTO_JINGLE_NO_BROWSER`
- Default: unset (browser opens automatically)
- Purpose: disables auto-opening the UI in a browser when set to `1`.
- Example:

```bash
AUTO_JINGLE_NO_BROWSER=1 deno task dev
```

- `HOME`
- Default: inherited from your shell/session.
- Purpose: determines settings location (`$HOME/.auto-jingle/settings.json`).
- Fallback behavior: if `HOME` is unavailable, settings are stored in `settings.json` next to the app executable/project base directory.

## Standalone build

```bash
deno task compile
```

Binary output:

- `dist/auto-jingle`

Run it:

```bash
./dist/auto-jingle
```

## Distribution-safe signing (recommended)

1. List available signing identities:

```bash
security find-identity -v -p codesigning
```

2. Build with your Developer ID certificate:

```bash
AUTO_JINGLE_CODESIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" deno task build:mac-app
```

3. Share `dist/Auto Jingle.zip` (not the raw `.app` alone).

### Optional notarization (best for zero-friction install)

After configuring a notary keychain profile:

```bash
AUTO_JINGLE_CODESIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
AUTO_JINGLE_NOTARIZE_PROFILE="your-notary-profile" \
deno task build:mac-app
```

### If you already received a blocked build

On the target Mac, remove quarantine as a temporary workaround:

```bash
xattr -dr com.apple.quarantine "/Applications/Auto Jingle.app"
```