Skip to main content

Offline single-file HTML music player generator

Project description

phuker-music

Demo | GitHub | PyPI | Readme (English, 简体中文)

Yet another HTML music player generator. Scan a directory of audio files and generate an offline, all-in-one single HTML player file. Also generates player pages for multiple albums plus an index page via a JSON config.

You can try the demo to see what the generated index page and players look like. Grant system notification permission to display a notification when each track starts playing.

Features

  • No loan ads or subscription popups
  • No AI
  • No tracking, analytics, statistics, or telemetry
  • No user data uploads
  • No extra assets — No JS/CSS dependencies, no web fonts, no CDN
  • Only a fucking single HTML file

Install and run

Run with uvx (without installation)

uvx phuker-music --help

Run with pipx (without installation)

pipx run phuker-music --help

Install with uv and run

uv tool install phuker-music
phuker-music --help

Install with pipx and run

pipx install phuker-music
phuker-music --help

Install with pip and run

pip install phuker-music
phuker-music --help

Quick start

Generate music player HTML for a single album

First, cd to a directory that contains audio files, for example one cover image and three audio files:

.
├── Cafe ambience.m4a
├── Cover.jpg
├── Crowd Talking Quietly Stadium.mp3
└── Distant train with cicadas.m4a

Then run:

phuker-music player --force --cover Cover.jpg .

You will get:

.
├── Cafe ambience.m4a
├── Cover.jpg
├── Crowd Talking Quietly Stadium.mp3
├── Distant train with cicadas.m4a
└── player.html                        <-- player HTML file

Open player.html in a browser to use the player.

Generate player and index page for multiple albums

cd to a directory containing multiple album directories, for example two album directories:

.
├── Ambience
│   ├── Cafe ambience.m4a
│   ├── Cover.jpg
│   ├── Crowd Talking Quietly Stadium.mp3
│   └── Distant train with cicadas.m4a
└── Nature
    ├── Cover.jpg
    ├── FL Mocking birds.mp3
    ├── Frogs and nature in Southern Brasil in August.m4a
    ├── Morning birds.m4a
    ├── Nature.m4a
    ├── Rain.ogg
    └── Thunder.mp3

Then run:

phuker-music albums-webui ./albums.json

Visit http://127.0.0.1:8000/ in a browser, drag albums from the Available column to the Albums column, click the Save & Generate button at the top, and you will get:

.
├── albums.json                                            <-- config file
├── Ambience
│   ├── Cafe ambience.m4a
│   ├── Cover.jpg
│   ├── Crowd Talking Quietly Stadium.mp3
│   ├── Distant train with cicadas.m4a
│   └── player.html                                        <-- player HTML file
├── index.html                                             <-- index HTML file
└── Nature
    ├── Cover.jpg
    ├── FL Mocking birds.mp3
    ├── Frogs and nature in Southern Brasil in August.m4a
    ├── Morning birds.m4a
    ├── Nature.m4a
    ├── player.html                                        <-- player HTML file
    ├── Rain.ogg
    └── Thunder.mp3

Open index.html in a browser to view the index page.

Usage

$ phuker-music --help
usage: phuker-music [-h] [-v] [-V] command ...

Music player HTML generator

positional arguments:
  command
    player        Generate music player HTML for a single album
    albums        Generate player and index HTML for multiple albums
    albums-webui  Launch a web UI to edit albums config and generate player and index HTML for multiple albums

options:
  -h, --help      show this help message and exit
  -v, --verbose   Increase verbosity level
  -V, --version   Show version and exit
$ phuker-music player --help
usage: phuker-music player [-h] [-t title] [-c file] [-o filename] [-r] [--sort-type type] [-f] [-v] dir_path

Generate music player HTML for a single album

positional arguments:
  dir_path                        Path to the album directory

options:
  -h, --help                      show this help message and exit
  -t, --title title               Album title, default: directory name
  -c, --cover file                Album cover file path, relative to dir_path
  -o, --output-filename filename  Output filename, default: player.html
  -r, --recursively               Recursively scan subdirectories for audio files
  --sort-type type                Sort type, default: filename, choices: filename, mtime_desc
  -f, --force                     Overwrite output file if it exists
  -v, --verbose                   Increase verbosity level
$ phuker-music albums --help
usage: phuker-music albums [-h] [-f] [-v] config_file

Generate player and index HTML for multiple albums

positional arguments:
  config_file    Albums config file path

options:
  -h, --help     show this help message and exit
  -f, --force    Overwrite output file if it exists
  -v, --verbose  Increase verbosity level
$ phuker-music albums-webui --help
usage: phuker-music albums-webui [-h] [--host HOST] [--port PORT] [-v] config_file

Launch a web UI to edit albums config and generate player and index HTML for multiple albums

positional arguments:
  config_file    Albums config file path

options:
  -h, --help     show this help message and exit
  --host HOST    Host to bind to, default: 127.0.0.1
  --port PORT    Port to bind to, default: 8000
  -v, --verbose  Increase verbosity level

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phuker_music-1.4.0.tar.gz (197.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phuker_music-1.4.0-py3-none-any.whl (197.8 kB view details)

Uploaded Python 3

File details

Details for the file phuker_music-1.4.0.tar.gz.

File metadata

  • Download URL: phuker_music-1.4.0.tar.gz
  • Upload date:
  • Size: 197.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for phuker_music-1.4.0.tar.gz
Algorithm Hash digest
SHA256 4dbe9f1ccec364766b97fac9074d10a6c3bff5053a31bc1b4b11424bdbe8620c
MD5 f57e4d111689c51df3728b39488d6bf8
BLAKE2b-256 d5181f86b97477c235a8aef259faae6e39b91cf56d50dac2ad68bf0538fd7b25

See more details on using hashes here.

File details

Details for the file phuker_music-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: phuker_music-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 197.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for phuker_music-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7995e1df9d3d26a409379febfc7b02b375359bbc8498046a112a9b4daa6a8a4
MD5 cf678bc3e0b00998be3c75ff1f57d53a
BLAKE2b-256 51c3c2b7086788eb55ad49128846f3039708535d2658acb70713c7eff1a3e0b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page