Files
music_library/presto/README.md
T
2026-05-05 16:34:09 +01:00

141 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Presto Music Library - Records On This Day
A MicroPython application for the [Pimoroni Presto](https://shop.pimoroni.com/products/presto?variant=54894104019323) (RP2350B, 720×720 touch display, WiFi) that connects to the Music Library API and lets you browse your record collection by release date.
## Features
- **Month calendar** — 7×6 grid with day-of-week headers, today highlight
- **Tap a day** — see records released on that date with cover art, titles, and artist names
- **Month navigation** — arrow buttons to browse previous/future months
- **WiFi auto-connect** — connects on boot with retry logic
- **NTP time sync** — calendar always shows the correct date
- **Error handling** — graceful messages when the server is unreachable or images fail to load
## Requirements
- Pimoroni Presto running stock firmware (MicroPython + PicoGraphics + touch driver)
- WiFi network with internet access
- A valid API token for the Music Library API
## Setup
### 1. Create secrets.py
```bash
cp config.example.py secrets.py
```
Edit `secrets.py` and fill in your credentials:
```python
WIFI_SSID = "your-wifi-ssid"
WIFI_PASSWORD = "your-wifi-password"
API_TOKEN = "your-api-token"
```
> `secrets.py` is git-ignored and never committed.
### 2. Deploy to your Presto
Copy the files to the root of your Presto's flash storage. You can use Thonny, `mpremote`, or any MicroPython file transfer tool.
**Using `mpremote`:**
```bash
# Install mpremote if you don't have it
pip install mpremote
# Copy files to the Presto
mpremote fs cp main.py :main.py
mpremote fs cp secrets.py :secrets.py
# Reset the device to start the app
mpremote reset
```
**Using Thonny:**
1. Open Thonny and select "MicroPython (Raspberry Pi Pico)" as the interpreter
2. Open `main.py` and `secrets.py` in Thonny
3. Use File → Save Copy → Raspberry Pi Pico to save each file to the device
4. Press the reset button on the Presto, or use Run → Send EOF / Soft Reboot
### 3. The app starts automatically
The Presto runs `main.py` on boot. The app will:
1. Show a startup screen
2. Connect to WiFi (showing progress)
3. Sync time via NTP
4. Display the current month calendar
## Usage
### Month view
- **Today's date** is highlighted in blue
- Tap **← →** arrows to navigate months
- Tap any **day cell** to see records released on that date
### Day view
- Shows up to 4 records per screen with **cover art**, **title**, and **artists**
- Tap **< Back** to return to the month view
- If there are more than 4 records, use **^ v** arrows to scroll
### Error states
- **"Could not reach server"** — the API is unreachable. Tap anywhere on the day view to retry, or tap Back to return to the month view.
- **"WiFi connection failed"** — WiFi credentials are wrong or the network is down. The app retries every 10 seconds.
- **Grey placeholder** in place of cover art — the image could not be loaded (network issue or invalid URL). The rest of the record info is still shown.
## Files
```
presto/
main.py # Application entry point (auto-runs on boot)
config.example.py # Template for secrets.py
secrets.py # Your credentials (git-ignored, create from example)
README.md # This file
```
## Troubleshooting
| Symptom | Likely cause | Fix |
|---------|-------------|-----|
| Stuck on "secrets.py not found" | `secrets.py` not on the device | Copy `config.example.py` to `secrets.py` and deploy it |
| Stuck on "WiFi connection failed" | Wrong SSID/password, or network down | Check `secrets.py` credentials; verify network is up |
| "Could not reach server" on day tap | API token invalid, or server down | Check `API_TOKEN` in `secrets.py`; verify the server is running |
| Images show as grey rectangles | JPEG decoder not available, or image URLs unreachable | Check firmware version; ensure Presto has internet access |
| Touch not responding | Firmware touch API mismatch | Try updating Presto firmware to the latest version |
## API Endpoint
The app talks to:
```
GET https://music-library.claudio-ortolina.org/api/v1/collection/on_this_day?date=YYYY-MM-DD
Authorization: Bearer <API_TOKEN>
```
Response format:
```json
{
"records": [
{
"id": "...",
"title": "Album Title",
"artists": ["Artist Name"],
"thumb_url": "https://.../api/v1/assets/thumb.jpg?width=480",
"release_date": "1973-03-01",
"genres": ["Rock"],
"format": "Vinyl"
}
]
}
```
## License
This application is part of the Music Library project.