Skip to main content

Bad Apple!! Terminal Player 🍎

PyPI version Python Version License: MIT

Flicker-free, audio-synced Bad Apple!! player for your terminal.

Features

  • 3 Rendering Modes:
    • ascii (Default): Classic nostalgic ASCII shading ( .:-=+*#%@).
    • braille: Ultra high-resolution rendering using Unicode Braille (2x4 matrix) characters.
    • halfblock: 2x vertical resolution using half-block characters (▀, ▄) for crystal-clear silhouettes.
  • Zero-Setup & Featherlight Footprint: Installs in seconds without bloated dependencies! Automatically provisions media assets with MD5 checksum verification.
  • Zero-CPU Binary Cache Engine (BAPB v1): Plays from a pre-rendered, zlib-compressed 1-bit binary cache (bad_apple.bin, ~7.7 MB) for <0.5% CPU consumption and instantaneous (0.04 ms) seeking!
  • Cross-Platform Audio Engine: Backed by pygame.mixer for distortion-free pause/resume and zero-latency seeking, with fallback to native OS drivers on Windows (winmm.dll MCI), macOS (afplay), and Linux (ffplay/mpv/aplay).
  • Flicker-Free & Ghost-Free Rendering: Employs Alternate Screen Buffer (\033[?1049h), scrollback buffer purging, and dynamic resizing for a pristine, clean display at 30 FPS.
  • Dynamic Sizing & Visual Scrubber: Automatically senses terminal dimensions, preserves the 4:3 aspect ratio, centers output, and displays an interactive progress bar.

Controls

Key Action
Space Pause / Resume
M Cycle render modes (ascii → braille → halfblock)
Right Arrow (→) Seek forward 5 seconds
Left Arrow (←) Seek backward 5 seconds
R Restart playback
Q / Esc Quit

Installation & Quick Start

pip install bad-apple-in-terminal

Run it directly from anywhere in your terminal:

bad-apple
# or
badapple

Option 2: Run from Source (Zero-Setup)

Just clone and run! Required dependencies and media files are automatically prepared on first launch:

git clone https://github.com/Ohualtex/bad-apple.git
cd bad-apple
python main.py

Options & Flags

# Start with a specific render mode (ascii, braille, halfblock)
bad-apple --mode ascii

# Pre-render compact binary cache for zero-CPU playback and instantaneous seek
bad-apple --build-cache

# Force real-time OpenCV decoding instead of binary cache
bad-apple --no-cache

# Disable audio
bad-apple --no-audio

# Set specific terminal width/height
bad-apple --width 100 --height 35

macOS Tips

  • Gapless Half-Block Display:
    The default macOS Terminal.app adds vertical font leading (line spacing) between lines. To achieve a seamless, OLED-smooth display:
    1. Open Terminal → Settings (Cmd + ,) → Profiles → Text.
    2. Click Change... under Font.
    3. Expand the font window downward if needed, and set the Line Spacing slider to 0.80.
    4. Alternatively, press M to switch to Braille mode (which is naturally immune to line spacing), or use modern terminals like iTerm2, Ghostty, or Kitty.

Metadata

Release files for bad-apple-in-terminal 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bad-apple-in-terminal 1.1.1
File Size Uploaded
bad_apple_in_terminal-1.1.1.tar.gz 23.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bad-apple-in-terminal 1.1.1
File Interpreter ABI Platform
bad_apple_in_terminal-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 49.7 kB

Release files / bad_apple_in_terminal-1.1.1.tar.gz

Download URL bad_apple_in_terminal-1.1.1.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5363cdad74f545647ba51a98859964ca82a26f8f08bbc9fa67973ee0ee4e0ef2
BLAKE2b-256 checksum
How to use checksums
4ee4fc0e1c3c85b70632f978839a60cc36a118d8e8e314d261be1faac990661c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / bad_apple_in_terminal-1.1.1-py3-none-any.whl

Download URL bad_apple_in_terminal-1.1.1-py3-none-any.whl
Size 26.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e50a39e9b4a545283092fee77daec6a3f22fb688ea85870f947748635b728d3b
BLAKE2b-256 checksum
How to use checksums
380937887c025ee9dcb492ff5f86ab52e310c39191a640e7d2e247fd3efc210c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

1.1.2

2 release files

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page