A premium, mobile-responsive, dark-themed HTML5 audio player designed for studying CLEP lecture courses on the go. It supports lock-screen media controls, custom loop counts, speed adjustments, and auto-resumes playback precisely where you left off.
This repository houses the player interface and a helper playlist compiler designed to cleanly split audio storage (hosted externally on Cloudflare R2 / S3) from the player code (hosted on GitHub Pages).
0.75x and 2.0x speeds.companion.html) directly from the player settings without interrupting audio playback.index.html: The core player application. 100% self-contained client-side code (HTML, CSS, JS).companion.html: The written study companion containing course notes, diagrams, and reference tutorials.generate_playlist.py: A python script that scans your audio files (either locally or on a remote bucket) and writes the catalog files.about.txt: A metadata text file containing the course Title and Subtitle. Used by the Python generator to dynamically brand the player.playlist.json & playlist.js: Automatically compiled playlist catalogs containing the track order and Cloudflare R2 base URL configuration..mp3 files to the bucket.https://audio.example.com/ or Cloudflare's free pub-<hash>.r2.dev bucket URL).Edit the about.txt file in your root folder:
Title: Macroeconomics
Sub Title: CLEP Examination Prep Audio
The Python playlist compiler detects your audio files and creates catalog files for the player.
click installed:
bash
pip install clickbash
python3 generate_playlist.py -d "https://audio.epistemicresearch.org/Macroeconomics/"
The generator automatically parses your folder structure (or falls back to scanning your local MP3 filenames if remote directory listing is disabled) and writes out both playlist.json and playlist.js with your embedded R2 URL.index.html, about.txt, generate_playlist.py, playlist.js, playlist.json, and companion.html to your GitHub repository.This project is built to support offline learning:
* Open index.html directly in your browser (file:/// protocol).
* Even if the browser's security sandbox blocks dynamic JSON fetching locally, the player automatically falls back to reading track mappings and R2 base URLs from the script-loaded playlist.js.
Designed for seamless studying on the go.