Replace Hitster references with Music Cards branding
Updated all references from "Hitster-style" to generic "Music Cards" throughout the codebase and documentation. This removes brand-specific terminology and provides a more neutral description of the tool's purpose. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# Guide for this repository
|
# Guide for this repository
|
||||||
|
|
||||||
## Project overview
|
## Project overview
|
||||||
- Goal: Generate printable DIN A4 sheets with ‘Hitster-style’ music cards from a Spotify playlist. Front shows a QR code plus the title and artist(s); back shows the release year and small text.
|
- Goal: Generate printable DIN A4 sheets with music cards from a Spotify playlist. Front shows a QR code plus the title and artist(s); back shows the release year and small text.
|
||||||
- Current core: generate_hitster_cards.py uses Spotify’s Web API, generates QR codes and PDF pages with 3 × 3 cards per A4 (each 63 × 88 millimetres).
|
- Current core: generate_hitster_cards.py uses Spotify’s Web API, generates QR codes and PDF pages with 3 × 3 cards per A4 (each 63 × 88 millimetres).
|
||||||
- Outputs:
|
- Outputs:
|
||||||
- Separate files mode: fronts.pdf and backs.pdf.
|
- Separate files mode: fronts.pdf and backs.pdf.
|
||||||
- Interleaved mode: cards.pdf with alternating pages (odd fronts, even backs) via --one-pdf.
|
- Interleaved mode: cards.pdf with alternating pages (odd fronts, even backs) via --one-pdf.
|
||||||
- Scope: Personal, non-commercial use; not affiliated with Hitster or Spotify.
|
- Scope: Personal, non-commercial use; not affiliated with Spotify.
|
||||||
|
|
||||||
## Key requirements and constraints
|
## Key requirements and constraints
|
||||||
- Paper and layout:
|
- Paper and layout:
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
- Avoid copying full API payloads to logs; redact where necessary.
|
- Avoid copying full API payloads to logs; redact where necessary.
|
||||||
|
|
||||||
## Known limitations and non-goals
|
## Known limitations and non-goals
|
||||||
- The Hitster iPhone app will not scan these QR codes; they are standard QR codes to open.spotify.com, not Hitster’s proprietary format.
|
- These are standard QR codes that link to open.spotify.com for universal compatibility with any QR code scanner.
|
||||||
- Album.release_date year may differ from an original single’s first release in some catalogues.
|
- Album.release_date year may differ from an original single’s first release in some catalogues.
|
||||||
- Client credentials flow cannot read private playlists; that requires user login (authorisation code flow).
|
- Client credentials flow cannot read private playlists; that requires user login (authorisation code flow).
|
||||||
|
|
||||||
@@ -110,4 +110,4 @@
|
|||||||
|
|
||||||
## Licence and attribution
|
## Licence and attribution
|
||||||
- Use for personal, non-commercial purposes only.
|
- Use for personal, non-commercial purposes only.
|
||||||
- Not affiliated with or endorsed by Hitster or Spotify.
|
- Not affiliated with or endorsed by Spotify.
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ def generate_pdf_interleaved(cards: List[TrackCard], out_dir: str, show_year_on_
|
|||||||
print(f"Generated interleaved PDF: {os.path.abspath(out_path)}")
|
print(f"Generated interleaved PDF: {os.path.abspath(out_path)}")
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description="Generate DIN A4 Hitster-style cards from a Spotify playlist.")
|
parser = argparse.ArgumentParser(description="Generate DIN A4 music cards from a Spotify playlist.")
|
||||||
parser.add_argument("--playlist", required=True, help="Spotify playlist URL (public).")
|
parser.add_argument("--playlist", required=True, help="Spotify playlist URL (public).")
|
||||||
parser.add_argument("--client-id", required=True, help="Spotify CLIENT_ID.")
|
parser.add_argument("--client-id", required=True, help="Spotify CLIENT_ID.")
|
||||||
parser.add_argument("--client-secret", required=True, help="Spotify CLIENT_SECRET.")
|
parser.add_argument("--client-secret", required=True, help="Spotify CLIENT_SECRET.")
|
||||||
|
|||||||
Reference in New Issue
Block a user