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

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.2
File Size Uploaded
bad_apple_in_terminal-1.1.2.tar.gz 24.5 kB Details

Built distribution (wheel)

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

Total release size: 52.4 kB

Release files / bad_apple_in_terminal-1.1.2.tar.gz

Download URL bad_apple_in_terminal-1.1.2.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c0780544a587ea7ec0ef3dc74c8b1021ac951fa003983828ac544bcc560732d8
BLAKE2b-256 checksum
How to use checksums
34311e4b854cc5e737f82deef62c9ead887459fd14722416f9c243d26a6bef2a
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.2-py3-none-any.whl

Download URL bad_apple_in_terminal-1.1.2-py3-none-any.whl
Size 28.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98c4dae1a7de4378fc9ae3c93eca9b41a558c295e189ed9d19dedee07cc6b052
BLAKE2b-256 checksum
How to use checksums
ae3b7f9ed979f0ba6696e38327154aada56f866bd4a5c409ee733bb1504c5ee3
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

This release

1.1.2 This release

2 release files

1.1.1

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