Music Time Machine is a desktop app that lets you create Spotify playlists from historical Billboard Hot 100 charts. Pick a date, and the app will scrape Billboard, search for the songs on Spotify, and create a playlist in your account.
- Create private Spotify playlists from any Billboard Hot 100 date.
- Automatic searching and matching of songs by title and year.
- Interactive Flet-based desktop UI.
- Spotify OAuth via copy-paste flow for desktop apps.
- Cached Spotify tokens β no repeated logins.
- Logs songs not found on Spotify.
git clone https://github.com/dbeniamin/Music-Time-Machine.git
cd Music-Time-Machinepython -m venv venvActivate it:
- Windows:
venv\Scripts\activate - macOS/Linux:
source venv/bin/activate
pip install -r requirements.txtrequirements.txt:
beautifulsoup4==4.13.5
flet==0.28.3
requests==2.32.5
spotipy==2.25.1
soupsieve==2.8pip install -r requirements-dev.txtrequirements-dev.txt:
-r requirements.txt
pyinstaller==6.15.0This keeps your runtime environment clean while allowing EXE packaging.
- Go to Spotify Developer Dashboard.
- Log in and create a new app.
- Set the Redirect URI to:
https://example.com/callback - Copy your Client ID and Client Secret.
- Open the app, click Configure Spotify API, and paste the credentials.
- On first run, you'll complete login via copy-paste OAuth. Subsequent playlist creation uses the cached token.
-
Run the app:
python main.py
-
Enter a date (YYYY-MM-DD).
-
Click πΆ Create Playlist.
-
On first run:
- Browser opens for Spotify login.
- Click Agree, copy the full redirect URL, and paste it into the Flet dialog.
- Playlist will be created automatically in your Spotify account.
Download the latest pre-built Windows executable from GitHub Releases:
MusicTimeMachine_v01.exe
- Download the
.exefile. - Double-click to run the app.
- Complete the first-time Spotify login as described above (copy-paste OAuth).
- Enter a date and click πΆ Create Playlist.
MusicTimeMachine/
β
ββ App_oop/
β ββ app.py # Flet app entry point
β ββ logic/
β β ββ spotify.py # Spotify client & playlist creation
β β ββ billboard.py # Billboard scraping
β ββ ui/
β β ββ layout.py # Flet UI layout builder
β β ββ component.py # Custom components for easy styling & reuse
β ββ config/
β ββ settings.py # Save/load Spotify credentials
β
ββ main.py # Launch script
ββ requirements.txt # Runtime dependencies
ββ requirements-dev.txt # Dev/build dependencies
ββ icon.ico # App icon
ββ README.md
- Scraping Billboard: Changes to Billboard HTML may break scraping.
- Spotify tracks: Not every song may be available; missing songs are logged.
- EXE packaging: Create a standalone Windows EXE using:
flet pack main.py --name MusicTimeMachine_v01 --icon icon.ico
- Fork the repo
- Create a branch (
git checkout -b feature-name) - Commit changes (
git commit -m "Add feature") - Push (
git push origin feature-name) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE for details.