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.0

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.0
File Size Uploaded
bad_apple_in_terminal-1.1.0.tar.gz 23.1 kB Details

Built distribution (wheel)

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

Total release size: 49.6 kB

Release files / bad_apple_in_terminal-1.1.0.tar.gz

Download URL bad_apple_in_terminal-1.1.0.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a192032155679124711eacba3ed2e77d50e90f95ec5af5b490da89a885342400
BLAKE2b-256 checksum
How to use checksums
8e804f47fe365775dc01e1a3f5e5074c68384cd0c1506959ec76e983806ba0b5
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.0-py3-none-any.whl

Download URL bad_apple_in_terminal-1.1.0-py3-none-any.whl
Size 26.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9f74b52ea6ab9254917ae81bcab99240303f342cc0121eb13bc6664cdf7a750f
BLAKE2b-256 checksum
How to use checksums
f7ca5c1c86f408f33635dbc282c5725e5157b9b32ec0d40d311f6afd972976db
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

1.1.1

2 release files

This release

1.1.0 This release

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