βοΈ BeatPrints
=============
.. raw:: html
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. π
.. image:: https://i.ibb.co.com/y0jKqHK/banner.png
:alt: examples
π¦ Installation
---------------
You can install BeatPrints via:
.. code:: python
# For pip users
pip install BeatPrints
# For poetry users
poetry add BeatPrints
Or if you prefer using just the CLI:
.. code:: python
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:
.. code:: python
SPOTIFY_CLIENT_ID = ""
SPOTIFY_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:
.. code:: python
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 for the track
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 `_
.. video:: https://github.com/user-attachments/assets/3efb7028-c533-4bf4-880b-da3a71f8a3db
:width: 700
πΌοΈ Examples
-----------
======================== ==========================
**Track: Saturn by SZA** **Album: Charm by Clairo**
======================== ==========================
|Track Example| |Album Example|
======================== ==========================
.. |Track Example| image:: https://i.ibb.co.com/q5v8J9R/saturn-by-sza-1e3.png
.. |Album Example| image:: https://i.ibb.co.com/TcrKKXV/charm-by-clairo-f8a.png
π¨ 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**: Feature impactful lyrics directly on your
poster.
π‘ 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.
π 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.
ποΈ Table
---------
.. toctree::
:maxdepth: 1
guidebook/index
reference/index
misc/index