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. 🍀
📔 Check out the new documentation here!
📦 Installation
You can install BeatPrints via pip:
pip install BeatPrints
Or, if you use Poetry:
poetry add BeatPrints
🌱 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.
🚀 Quick Start
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 a track
search = sp.get_track("Saturn by SZA", limit=1)
# Get the track's metadata and lyrics
metadata = search[0]
lyrics = ly.get_lyrics(metadata)
highlighted_lyrics = ly.select_lines(lyrics, "5-9")
# Generate the track poster
ps.track(metadata, highlighted_lyrics)
🥞 CLI Setup
To get started with the BeatPrints CLI, you'll need to set up a configuration file.
Windows
- Create a folder named
BeatPrintsin the following directory:
C:\Users\<YourUsername>\AppData\Roaming\BeatPrints\
- Inside this folder, create a file called
config.tomlwith the following contents:
[general]
search_limit = 7
output_directory = "<path-to-save-your-posters>"
[credentials]
client_id = "your-client-id"
client_secret = "your-client-secret"
Replace <path-to-save-your-posters> with the path where you'd like to save the generated posters, and fill in the client_id and client_secret with your Spotify credentials.
Linux or macOS
- Create a folder named
BeatPrintsin your~/.config/directory:
~/.config/BeatPrints/
- Inside this folder, create a file called
config.tomlwith the same contents as mentioned above.
Running the CLI
Once the config file is set up, you can run the BeatPrints CLI:
- Open your terminal.
- Type
beatprintsand press Enter.
Your poster will be saved in the output directory you specified in the config.toml file.
🖼️ Examples
Here are a few posters created with BeatPrints:
| Track: Saturn by SZA | Album: Charm by Clairo |
|---|---|
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 Dark and Light themes.
- Track & Album Selection: Highlight your favorite track or entire album.
- Lyrics Highlighting: Feature impactful 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
- A big thanks to Spotify Poster Generator by @AnveshakR for inspiring BeatPrints with amazing ideas!
- Shoutout to @Magniquick, @Krishna-Gunjan, and @itsnotrin for their awesome contributions!
- Thanks to @T-Dynamos and @cherriae for their great improvements and tweaks.
- A special nod to @itsnotrin for helping make album poster generation possible!
📜 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, 2024
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file beatprints-1.0.2.tar.gz.
File metadata
- Download URL: beatprints-1.0.2.tar.gz
- Upload date:
- Size: 51.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f58aae9296bed773cbeb3826e0f8762f9906e2b0be1eea3fdee6cf08bad507d
|
|
| MD5 |
023d1041a7c72f3caed1f2b89dc7480c
|
|
| BLAKE2b-256 |
2eddbc25e2d093334bf9bf3c9f4f1889c4f25e56314fcacf50d2f7f7c2ad0aa2
|
Provenance
The following attestation bundles were made for beatprints-1.0.2.tar.gz:
Publisher:
publish-to-pypi.yml on TrueMyst/BeatPrints
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beatprints-1.0.2.tar.gz -
Subject digest:
6f58aae9296bed773cbeb3826e0f8762f9906e2b0be1eea3fdee6cf08bad507d - Sigstore transparency entry: 155442388
- Sigstore integration time:
-
Permalink:
TrueMyst/BeatPrints@e781f26905c1c360c6b865843451d2487ff1dacd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/TrueMyst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@e781f26905c1c360c6b865843451d2487ff1dacd -
Trigger Event:
push
-
Statement type:
File details
Details for the file beatprints-1.0.2-py3-none-any.whl.
File metadata
- Download URL: beatprints-1.0.2-py3-none-any.whl
- Upload date:
- Size: 51.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b394d872ae611ec4d4143cd16806f756a50438dc7803495fed509a1aaddfaee7
|
|
| MD5 |
f469111aa913d9f68668692ffb5c5d96
|
|
| BLAKE2b-256 |
f56999611d77a2fb0a8c276f3f98cf5b12daccecea8e9864cc39e3770660d651
|
Provenance
The following attestation bundles were made for beatprints-1.0.2-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on TrueMyst/BeatPrints
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beatprints-1.0.2-py3-none-any.whl -
Subject digest:
b394d872ae611ec4d4143cd16806f756a50438dc7803495fed509a1aaddfaee7 - Sigstore transparency entry: 155442389
- Sigstore integration time:
-
Permalink:
TrueMyst/BeatPrints@e781f26905c1c360c6b865843451d2487ff1dacd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/TrueMyst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@e781f26905c1c360c6b865843451d2487ff1dacd -
Trigger Event:
push
-
Statement type: