PartyJukebox/plan.md

33 lines
2.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.

To design a self-running app for your Raspberry Pi based on your requirements, heres a step-by-step plan that you can follow. I'll guide you through the steps without giving the full solution, so you can piece it together.
### Steps to Implement
1. **Automating Raspberry Pi Startup Actions:**
- **Systemd Service**: Use `systemd` to create a service that will automatically run when the Pi starts. This can manage your apps startup logic.
- **Startup Script**: Alternatively, you can create a simple shell script that runs on boot, either placed in `/etc/rc.local` or managed by `cron` with the `@reboot` directive.
2. **Detect USB Flash Drive on Boot:**
- **Automounting USB**: Set up the Raspberry Pi to automount flash drives when plugged in. Look into editing `/etc/fstab` or using the `usbmount` package.
- **Checking for MP3s**: Write Python logic that checks the mounted drives for files with `.mp3` extension. Use libraries like `os` or `pathlib` to scan directories.
3. **Copying MP3s to a Directory:**
- You can use the `shutil` library in Python to handle file copying.
- Ensure this logic only triggers when new files are found (so you dont overwrite your existing directory unnecessarily).
4. **Running the Database Generator:**
- Since you only want the database generator to run when needed, you can add a condition to check whether the MP3s were updated. For example, store a checksum or file modification time, and if there's a change, trigger the generator.
5. **Running the Flask Web Server:**
- After copying the files and running the database generator (if needed), the script should launch your Flask web server.
- Flask can be run as part of your startup service as well, once the other tasks are complete.
### Suggested Order of Operations
- On boot, run your startup script.
- Check for connected USB drives.
- If MP3s are found, copy them to the designated folder.
- Run the database generator only if new files are detected.
- Launch the Flask web server.
### Things to Consider:
- **Timing**: If theres a delay for the USB drive to mount, you might want to add a short wait period or a retry loop when checking for the flash drive.
- **Combining Files**: You can combine the MP3-checking, copying, and database generation logic into a single Python script. Then, it can conditionally call the database generator only when new files are added, before starting the Flask server.