Skip to main content

Create eye-catching, pinterest-style music posters effortlessly.

Project description

BeatPrints: Quick, stylish posters for your favorite tracks! 🎷☕️

Create eye-catching, Pinterest-style music posters effortlessly. BeatPrints integrates with Spotify and LRClib API to help you design custom posters for your favorite tracks or albums. 🍀

Maintenance GitHub Repo stars Downloads Code Formatter Static Badge

examples

📔 Check out the documentation here!

📦 Installation

You can install BeatPrints via:

# For pip users
pip install BeatPrints

# For poetry users
poetry add BeatPrints

Or if you prefer using just the CLI:

pipx install BeatPrints

This will install the CLI, making it ready for you to use. For more more infomation, check out pipx

🚀 Quick Start

🌱 Environment Variables

To get started with BeatPrints, you’ll need a .env file with these keys:

SPOTIFY_CLIENT_ID = "<your-client-id>"
SPOTIFY_CLIENT_SECRET = "<your-client-secret>"

You can get these from the Spotify Developer Dashboard by creating a new app with Web API as the scope.

🎀 Creating your FIRST Poster

Here’s how you can create your first poster:

import os, dotenv
from BeatPrints import lyrics, poster, spotify

dotenv.load_dotenv()

# Spotify credentials
CLIENT_ID = os.getenv("SPOTIFY_CLIENT_ID")
CLIENT_SECRET = os.getenv("SPOTIFY_CLIENT_SECRET")

# Initialize components
ly = lyrics.Lyrics()
ps = poster.Poster("./")
sp = spotify.Spotify(CLIENT_ID, CLIENT_SECRET)

# Search for the track and fetch metadata
search = sp.get_track("Saturn - SZA", limit=1)

# Pick the first result
metadata = search[0]

# Get lyrics and determine if the track is instrumental
lyrics = ly.get_lyrics(metadata)

# Use the placeholder for instrumental tracks; otherwise, select specific lines
highlighted_lyrics = (
    lyrics if ly.check_instrumental(metadata) else ly.select_lines(lyrics, "5-9")
)

# Generate the track poster
ps.track(metadata, highlighted_lyrics)

🥞 CLI

Here’s a short video showing how to generate posters using the CLI. For more information refer to the documentation here

https://github.com/user-attachments/assets/3efb7028-c533-4bf4-880b-da3a71f8a3db

🖼️ Examples

Track: Saturn by SZA Album: Charm by Clairo
Track Example Album Example

🎨 Themes

BeatPrints currently offers you 5 additional themes to use!

  • Catppuccin
  • Gruvbox
  • Nord
  • Rosepine
  • Everforest

For more examples, check out the examples directory.

✨ Features

  • Polaroid Filter for Covers: Give your track or album covers a vintage Polaroid look.
  • Multi-language Support: Supports English, Hindi, Russian, Japanese, Chinese, and Korean.
  • Custom Cover Images: Personalize posters with your own images.
  • Theme Customization: Switch between different other themes.
  • Track & Album Selection: Highlight your favorite track or entire album.
  • Lyrics Highlighting: Highlight your favourite lyrics directly on your poster.

🤝 Contributors

Thank you to all contributors for making BeatPrints better!

💡 Why BeatPrints?

I created this project after finding out that people sell these posters on Etsy at high prices, offering only digital downloads instead of shipping actual posters.

I wanted to make it free for everyone to print themselves, as I believe my posters are simpler, cleaner, and prettier.

❤️ Special Thanks

📜 License

BeatPrints is distributed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License:

  • Use: Free to share and adapt.
  • Attribution: Provide credit and a link to the license.
  • NonCommercial: Not for commercial use.
  • ShareAlike: Adaptations must follow the same license.

Read the full license here.

Made with 💜
elysianmyst, 2025

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

beatprints-1.1.4.tar.gz (51.6 MB view details)

Uploaded Source

Built Distribution

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

beatprints-1.1.4-py3-none-any.whl (51.7 MB view details)

Uploaded Python 3

File details

Details for the file beatprints-1.1.4.tar.gz.

File metadata

  • Download URL: beatprints-1.1.4.tar.gz
  • Upload date:
  • Size: 51.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for beatprints-1.1.4.tar.gz
Algorithm Hash digest
SHA256 5ad6b7c09d175b325242bfd64210779d094067a6e0742187fe4f76fd9dcd9aca
MD5 70e48e2f971f0fe0e9bdeaa8e85760a1
BLAKE2b-256 8b45f5aca438d570427ac419b4f2e6d231be624f0b97260545b843fa3a3e6f3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for beatprints-1.1.4.tar.gz:

Publisher: publish-to-pypi.yml on TrueMyst/BeatPrints

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file beatprints-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: beatprints-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 51.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for beatprints-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 299c19c110eb9cf9b7292d3f1d3e80866228f12e0d10ce2399562382242ce717
MD5 9baed8df7458ef6b0c33cecd3e4163a2
BLAKE2b-256 7bd3610b8a62e5e31132a288f063ea192dbcd474df7bff86ecaafeaa458afbc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for beatprints-1.1.4-py3-none-any.whl:

Publisher: publish-to-pypi.yml on TrueMyst/BeatPrints

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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