Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

dbeniamin/Music-Time-Machine

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Music Time Machine

Python
License: MIT

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.


πŸš€ Features

  • 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.

πŸ“Έ Screenshots / GIFs

Comming Soon !!

βš™οΈ Installation

1. Clone the repository

git clone https://github.com/dbeniamin/Music-Time-Machine.git
cd Music-Time-Machine

2. Create a virtual environment

python -m venv venv

Activate it:

  • Windows: venv\Scripts\activate
  • macOS/Linux: source venv/bin/activate

πŸ“¦ Dependencies

Runtime dependencies (needed to run the app)

pip install -r requirements.txt

requirements.txt:

beautifulsoup4==4.13.5
flet==0.28.3
requests==2.32.5
spotipy==2.25.1
soupsieve==2.8

Development / Build dependencies (needed to build EXE)

pip install -r requirements-dev.txt

requirements-dev.txt:

-r requirements.txt
pyinstaller==6.15.0

This keeps your runtime environment clean while allowing EXE packaging.


πŸ”‘ Spotify API Setup

  1. Go to Spotify Developer Dashboard.
  2. Log in and create a new app.
  3. Set the Redirect URI to:
    https://example.com/callback
    
  4. Copy your Client ID and Client Secret.
  5. Open the app, click Configure Spotify API, and paste the credentials.
  6. On first run, you'll complete login via copy-paste OAuth. Subsequent playlist creation uses the cached token.

πŸ–₯️ Usage

  1. Run the app:

    python main.py
  2. Enter a date (YYYY-MM-DD).

  3. Click 🎢 Create Playlist.

  4. 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 EXE (Windows)

Download the latest pre-built Windows executable from GitHub Releases:

MusicTimeMachine_v01.exe

Instructions:

  1. Download the .exe file.
  2. Double-click to run the app.
  3. Complete the first-time Spotify login as described above (copy-paste OAuth).
  4. Enter a date and click 🎢 Create Playlist.

⚠️ Cached token ensures you won't need to repeat login for future uses.


πŸ—‚οΈ Project Structure

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


πŸ’‘ Notes & Tips

  • 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
    

🀝 Contributing

  1. Fork the repo
  2. Create a branch (git checkout -b feature-name)
  3. Commit changes (git commit -m "Add feature")
  4. Push (git push origin feature-name)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License. See LICENSE for details.

About

Music Time Machine 🎡 A Python GUI application that creates Spotify playlists from Billboard Hot 100 charts.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.