DEV Community

Cover image for Automate Spotify Playlist Management Using Terraform: A Step-by-Step Guide
Prajwal Kp
Prajwal Kp

Posted on

Automate Spotify Playlist Management Using Terraform: A Step-by-Step Guide

If you're new to Terraform and infrastructure as code (IaC), I recommend going through my previous post here, where I covered the fundamentals of Terraform. Understanding the basics will help you follow along smoothly as we dive into provisioning an AWS EC2 instance using Terraform. Once you're comfortable with the core concepts, you can continue with this guide to apply Terraform in a real-world use case.

Introduction

I am Prajwal KP, a second-year student from Bangalore, passionate about full-stack web development and DevOps.
Here is my LinkedIn, GitHub


Terraform Spotify Playlist Automation

Project Overview

This project automates the creation and management of multiple Spotify playlists using Terraform. It utilizes the Spotify API to interact with your Spotify account and create playlists tailored for different occasions such as morning, evening, party night, etc.

Prerequisites

Before starting, make sure you have the following:

  1. Terraform Installed: Ensure Terraform is installed on your machine.
  2. Docker Installed: Make sure Docker is installed and running.
  3. Spotify Account: You need a Spotify account (free tier is sufficient).
  4. Spotify Developer Account: Register and create an application to get the Client ID and Client Secret.
  5. VS Code Editor: Recommended for editing Terraform files.

Steps to Complete the Project

1. Set Up Terraform Project

  1. Create a new directory for your Terraform project and navigate to it in your terminal.

2. Store Credentials Securely

Create a .env file to store your Spotify application's Client ID and Secret:

SPOTIFY_CLIENT_ID=<your_spotify_client_id>
SPOTIFY_CLIENT_SECRET=<your_spotify_client_secret>
Enter fullscreen mode Exit fullscreen mode

Obtain Spotify API Credentials

To interact with Spotify's API, you need to create a Spotify Developer App:

  • Go to the Spotify Developer Dashboard.
  • Log in with your Spotify account.
  • Click on "Create an App" and fill in the required details.
  • Set the Redirect URLS as http://localhost:27228/spotify_callback
  • U can get the client id here.

Spotify

3. Define Spotify Provider

Create file named provider.tf and paste the below content

terraform {
  required_providers {
    spotify = {
      source  = "conradludgate/spotify"
      version = "0.2.7"
    }
  }
}

provider "spotify" {
  # Configuration options
  api_key = var.spotify_api_key
}
Enter fullscreen mode Exit fullscreen mode

Also create a .env and fill in the details

Now under variables.tf paste the below code

variable "spotify_api_key" {
  type = string
}
Enter fullscreen mode Exit fullscreen mode

Now create terraform.tfvars

spotify_api_key = <Paste_Your_Api_key>
Enter fullscreen mode Exit fullscreen mode

To get this keymake sure to run the below command and verify it.

docker run --rm -it -p 27228:27228 --env-file .env ghcr.io/conradludgate/spotify-auth-proxy
Enter fullscreen mode Exit fullscreen mode

Now finally create playlist.tf

resource "spotify_playlist" "tearraform" {
  name = "Tearraform"
  tracks = ["2plbrEY59IikOBgBGLjaoe", "0VjIjW4GlUZAMYd2vXMi3b"]
}

data "spotify_search_track" "Eminem" {
  artist = "Eminem"
  limit = 10
}

resource "spotify_playlist" "From_Eminem" {
  name = "From Eminem"
  tracks = data.spotify_search_track.Eminem.tracks[*].id
}
Enter fullscreen mode Exit fullscreen mode
Breakdown
  • Create a playlist with specific tracks:
resource "spotify_playlist" "tearraform" {
  name   = "Tearraform"
  tracks = ["2plbrEY59IikOBgBGLjaoe", "0VjIjW4GlUZAMYd2vXMi3b"]
}
Enter fullscreen mode Exit fullscreen mode
  • Creates a playlist named "Tearraform".
  • Adds tracks using Spotify track IDs.

    • Search for Eminem's top 10 tracks:
data "spotify_search_track" "Eminem" {
  artist = "Eminem"
  limit  = 10
}
Enter fullscreen mode Exit fullscreen mode
  • Fetches top 10 tracks by Eminem from Spotify's API.
  • Create a playlist with Eminem's tracks:
resource "spotify_playlist" "From_Eminem" {
  name   = "From Eminem"
  tracks = data.spotify_search_track.Eminem.tracks[*].id
}
Enter fullscreen mode Exit fullscreen mode
  • Creates a playlist named "From Eminem".
  • Dynamically adds the top 10 tracks found in the search.

4. Start Spotify Authorization Proxy

Ensure Docker Desktop is running, then start the authorization proxy server:

docker run --rm -it -p 27228:27228 --env-file .env ghcr.io/conradludgate/spotify-auth-proxy
Enter fullscreen mode Exit fullscreen mode

5. Initialize and Apply Terraform Configuration

  • Initialize the Terraform configuration:
terraform init
Enter fullscreen mode Exit fullscreen mode
  • Plan the Terraform configurations
terraform plan
Enter fullscreen mode Exit fullscreen mode
  • Apply the Terraform configuration:
terraform apply
Enter fullscreen mode Exit fullscreen mode

6. Verify Playlists on Spotify

After applying the Terraform configuration, log in to your Spotify account and verify that the playlists have been created and populated with the specified tracks.

Conclusion

Automating Spotify playlist management with Terraform streamlines the process of creating and maintaining playlists for various occasions. Customize the playlists and tracks according to your preferences to enhance your music listening experience.

Top comments (0)