Workflow n8n

Automatisation Spotify avec n8n : gestion de playlists dynamiques

Ce workflow n8n a pour objectif de gérer automatiquement vos playlists Spotify en fonction de vos morceaux aimés. Dans un contexte où la musique est omniprésente, ce type d'automatisation permet aux utilisateurs de créer et de maintenir une playlist de téléchargements à jour sans effort. Par exemple, il peut être utilisé par des artistes, des DJs ou des amateurs de musique qui souhaitent garder une trace de leurs morceaux préférés tout en évitant les doublons. Le workflow débute par un déclencheur programmé qui active le processus à intervalles réguliers. Ensuite, il vérifie si une playlist de téléchargements existe déjà. Si ce n'est pas le cas, une nouvelle playlist est créée. Les morceaux aimés sont récupérés et analysés pour identifier ceux qui doivent être ajoutés à la playlist de téléchargements. Les morceaux déjà présents sont filtrés pour éviter les doublons, et les morceaux les plus anciens sont supprimés si la limite de la playlist est atteinte. Ce processus est géré grâce à des noeuds spécifiques de Spotify intégrés dans n8n, tels que 'Get Liked Tracks', 'Add tracks to Downloads', et 'Remove oldest tracks from Downloads'. En fin de compte, cette automatisation n8n permet de gagner du temps, d'optimiser l'expérience musicale et d'assurer que votre playlist reste toujours à jour avec vos morceaux préférés.

Tags clés :automatisationSpotifyn8nplaylistsmusique
Catégorie: Scheduled · Tags: automatisation, Spotify, n8n, playlists, musique0

Workflow n8n Spotify, playlists, musique : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n Spotify, playlists, musique : détail des nœuds

  • If no playlist

    Ce noeud vérifie si aucune playlist n'existe selon les conditions spécifiées.

  • Create Downloads Playlist

    Ce noeud crée une nouvelle playlist de téléchargements sur Spotify avec les paramètres fournis.

  • Get Liked Tracks

    Ce noeud récupère les morceaux aimés de l'utilisateur sur Spotify en fonction de la limite spécifiée.

  • Loop Over Items

    Ce noeud permet de traiter les éléments en les divisant en plusieurs lots.

  • Aggregate

    Ce noeud agrège les données selon les options et les champs spécifiés.

  • Split Out

    Ce noeud extrait un champ spécifique des données pour un traitement ultérieur.

  • Add tracks to Downloads

    Ce noeud ajoute des morceaux à la playlist de téléchargements sur Spotify.

  • Get Downloads Playlist

    Ce noeud récupère la playlist de téléchargements existante sur Spotify.

  • Filter out new tracks

    Ce noeud filtre les nouveaux morceaux à partir des données fournies par le code JavaScript.

  • Get tracks to remove

    Ce noeud détermine les morceaux à supprimer en utilisant le code JavaScript.

  • Remove oldest tracks from Downloads

    Ce noeud supprime les morceaux les plus anciens de la playlist de téléchargements sur Spotify.

  • Filter out Downloads Playlist

    Ce noeud filtre la playlist de téléchargements selon les options et conditions spécifiées.

  • Get Updated Downloads Playlist

    Ce noeud récupère la playlist de téléchargements mise à jour sur Spotify.

  • Get all Playlists

    Ce noeud récupère toutes les playlists de l'utilisateur sur Spotify.

  • Schedule Trigger

    Ce noeud déclenche le workflow selon un calendrier défini.

  • Sticky Note1

    Ce noeud crée une note autocollante avec le contenu spécifié.

  • Sticky Note2

    Ce noeud crée une seconde note autocollante avec le contenu spécifié.

  • Sticky Note

    Ce noeud crée une note autocollante avec des paramètres de couleur et de taille.

  • Sticky Note3

    Ce noeud crée une note autocollante avec des paramètres de couleur et de taille.

  • Sticky Note4

    Ce noeud crée une note autocollante avec des paramètres de couleur et de taille.

  • Sticky Note5

    Ce noeud crée une note autocollante avec des paramètres de couleur et de taille.

  • If no Downloads Playlist found

    Ce noeud vérifie si aucune playlist de téléchargements n'a été trouvée selon les conditions spécifiées.

  • Globals

    Ce noeud définit des variables globales pour le workflow.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "84ba6d895254e080ac2b4916d987aa66b000f88d4d919a6b9c76848f9b8a7616",
    "templateId": "2285",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "96c1dcb2-1fbe-4be5-b8e3-b5d2626bb5e8",
      "name": "If no playlist",
      "type": "n8n-nodes-base.if",
      "position": [
        1180,
        635.2020978272825
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4cd09fd5-f5bf-4f82-94f4-938e6d6fc1db",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.isEmpty() }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d17fdd6c-b998-4d41-9e44-34133577067b",
      "name": "Create Downloads Playlist",
      "type": "n8n-nodes-base.spotify",
      "position": [
        1840,
        435.2020978272825
      ],
      "parameters": {
        "name": "Downloads",
        "resource": "playlist",
        "operation": "create",
        "additionalFields": {}
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2250ac0d-5a7c-460c-a9b2-d3b1bcb44ac7",
      "name": "Get Liked Tracks",
      "type": "n8n-nodes-base.spotify",
      "position": [
        2500,
        735.2020978272825
      ],
      "parameters": {
        "limit": "={{ $('Globals').item.json.download_limit }}",
        "resource": "library"
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ce3eed87-3d8a-4c37-84b7-7f08dd8d91bb",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2960,
        735.2020978272825
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "0d5b326e-7bfa-48b6-a618-083e8e374632",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1400,
        735.2020978272825
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "name"
            },
            {
              "fieldToAggregate": "uri"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "113305f3-8003-4771-a260-2136d62d45ca",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1840,
        735.2020978272825
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "name, uri"
      },
      "typeVersion": 1
    },
    {
      "id": "8684eaf3-104e-40b6-91b3-738b15f2b361",
      "name": "Add tracks to Downloads",
      "type": "n8n-nodes-base.spotify",
      "position": [
        3220,
        835.2020978272825
      ],
      "parameters": {
        "id": "={{ $('Filter out Downloads Playlist').item.json.uri }}",
        "trackID": "={{ $('Get Liked Tracks').item.json.track.uri }}",
        "resource": "playlist",
        "additionalFields": {
          "position": 0
        }
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a9f44907-b324-4a89-b81c-7b514b0a52cb",
      "name": "Get Downloads Playlist",
      "type": "n8n-nodes-base.spotify",
      "position": [
        2280,
        735.2020978272825
      ],
      "parameters": {
        "id": "={{ $json.uri }}",
        "resource": "playlist",
        "operation": "get"
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "75f69264-9653-46de-a571-f080238d0df1",
      "name": "Filter out new tracks",
      "type": "n8n-nodes-base.code",
      "position": [
        2720,
        735.2020978272825
      ],
      "parameters": {
        "jsCode": "var downloades_uris = [];\nfor (const download of $('Get Downloads Playlist').first().json.tracks.items) {\n  downloades_uris.push(download.track.uri);\n}\n\nvar result = [];\nfor (const item of $input.all()) {\n  if (!downloades_uris.includes(item.json.track.uri)) {\n    result.push(item);\n  }\n}\n\nreturn result.reverse();"
      },
      "typeVersion": 2
    },
    {
      "id": "54fa426a-f37c-4e9a-a817-f31a9e820d76",
      "name": "Get tracks to remove",
      "type": "n8n-nodes-base.code",
      "position": [
        3440,
        640
      ],
      "parameters": {
        "jsCode": "var liked_uris = [];\nfor (const liked of $('Get Liked Tracks').all()) {\n  liked_uris.push(liked.json.track.uri);\n}\n\nvar result = [];\nfor (const item of $input.first().json.tracks.items) {\n  if (!liked_uris.includes(item.track.uri)) {\n    result.push(item);\n  }\n}\n\nreturn result;"
      },
      "executeOnce": true,
      "typeVersion": 2
    },
    {
      "id": "3368ac49-64bc-4c51-8796-0fb5843ad899",
      "name": "Remove oldest tracks from Downloads",
      "type": "n8n-nodes-base.spotify",
      "position": [
        3660,
        635.2020978272825
      ],
      "parameters": {
        "id": "={{ $('Get Downloads Playlist').item.json.uri }}",
        "trackID": "={{ $json.track.uri }}",
        "resource": "playlist",
        "operation": "delete"
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6ba744e0-f925-4901-8a01-b6da9c6b9e61",
      "name": "Filter out Downloads Playlist",
      "type": "n8n-nodes-base.filter",
      "position": [
        2060,
        735.2020978272825
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "04fec444-230c-4b55-a887-d4dd290c99ee",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "Downloads"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d1a583cb-1c60-44f3-9111-755805e81bf1",
      "name": "Get Updated Downloads Playlist",
      "type": "n8n-nodes-base.spotify",
      "position": [
        3220,
        635.2020978272825
      ],
      "parameters": {
        "id": "={{ $('Filter out Downloads Playlist').item.json.uri }}",
        "resource": "playlist",
        "operation": "get"
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "1f976308-b9db-4c59-8321-582a84c45374",
      "name": "Get all Playlists",
      "type": "n8n-nodes-base.spotify",
      "position": [
        960,
        635.2020978272825
      ],
      "parameters": {
        "resource": "playlist",
        "operation": "getUserPlaylists",
        "returnAll": true
      },
      "credentials": {
        "spotifyOAuth2Api": {
          "id": "MXfVMBGiR5OTHLNn",
          "name": "Spotify account"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "c715d18a-981f-4cfa-b3ca-3ee9753ef7ca",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        460,
        635.2020978272825
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b3afc8a7-39dc-429a-b440-8d2394ab528e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        475.2020978272825
      ],
      "parameters": {
        "width": 251.77358490566033,
        "height": 334.6415094339622,
        "content": "## Set Globals\nDefine the `download_limit` of how many songs should be kept in the Downloads playlist.\n*This setup currently supports a maximum of 50.*"
      },
      "typeVersion": 1
    },
    {
      "id": "1867b7d6-771c-4915-b8ef-227b3ad21c09",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        380,
        475.2020978272825
      ],
      "parameters": {
        "width": 251.77358490566033,
        "height": 334.6415094339622,
        "content": "## Setup Trigger\nDefine the update interval. By default the playlist gets updated ones a day."
      },
      "typeVersion": 1
    },
    {
      "id": "3f48a599-e41f-42ec-94c3-03315039612b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        380,
        240
      ],
      "parameters": {
        "color": 5,
        "width": 511.919459860262,
        "height": 227.98938005910577,
        "content": "## Information\nThis workflow automatically creates a playlist in Spotify named \"Downloads\". It keeps a list of a defined amount of the latest liked songs up to date.\n\nThis enables only the Downloads playlist to set for automatic downloading and thus free up space on the device.\n\n**Beware that it can take several minutes until a newly created Spotify developer app is fully functioning.**"
      },
      "typeVersion": 1
    },
    {
      "id": "6b101255-c9ef-407c-9cf4-d9afde6d8613",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        900,
        395.2020978272825
      ],
      "parameters": {
        "color": 7,
        "width": 1535.0943396226407,
        "height": 509.28301886792553,
        "content": "Get the \"Downloads\" playlist by name. Create it, if it does not exist."
      },
      "typeVersion": 1
    },
    {
      "id": "ae08fb14-34e5-454f-95f7-5de3a17dc6f7",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2440,
        655.2020978272825
      ],
      "parameters": {
        "color": 7,
        "width": 435.1879320261786,
        "height": 247.95572576973242,
        "content": "Get all latest liked songs and check whether they already exist in the Downloads playlist."
      },
      "typeVersion": 1
    },
    {
      "id": "5603cad0-6b4d-479c-89e4-af0c950a95c3",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        575.2020978272825
      ],
      "parameters": {
        "color": 7,
        "width": 955.93368580286,
        "height": 452.51466620839244,
        "content": "Add new tracks to the Downloads playlist. Remove tracks if they exceed the defined limit."
      },
      "typeVersion": 1
    },
    {
      "id": "6c40ce51-3361-4baf-b81e-b6e9b94a0a1c",
      "name": "If no Downloads Playlist found",
      "type": "n8n-nodes-base.if",
      "position": [
        1620,
        735.2020978272825
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "faf80ff7-8870-4f2e-94c0-998535caeac4",
              "operator": {
                "type": "array",
                "operation": "notContains",
                "rightType": "any"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "Downloads"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "637e0927-387f-46f9-8402-f87300f1fb6d",
      "name": "Globals",
      "type": "n8n-nodes-base.set",
      "position": [
        720,
        640
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "077181f9-80b9-40c2-81db-69d49376da7d",
              "name": "download_limit",
              "type": "number",
              "value": 50
            }
          ]
        }
      },
      "typeVersion": 3.3
    }
  ],
  "pinData": {},
  "connections": {
    "Globals": {
      "main": [
        [
          {
            "node": "Get all Playlists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "If no Downloads Playlist found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Filter out Downloads Playlist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If no playlist": {
      "main": [
        [
          {
            "node": "Create Downloads Playlist",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Get Updated Downloads Playlist",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Add tracks to Downloads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Liked Tracks": {
      "main": [
        [
          {
            "node": "Filter out new tracks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Globals",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all Playlists": {
      "main": [
        [
          {
            "node": "If no playlist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get tracks to remove": {
      "main": [
        [
          {
            "node": "Remove oldest tracks from Downloads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter out new tracks": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Downloads Playlist": {
      "main": [
        [
          {
            "node": "Get Liked Tracks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add tracks to Downloads": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Downloads Playlist": {
      "main": [
        [
          {
            "node": "Get all Playlists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter out Downloads Playlist": {
      "main": [
        [
          {
            "node": "Get Downloads Playlist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Updated Downloads Playlist": {
      "main": [
        [
          {
            "node": "Get tracks to remove",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If no Downloads Playlist found": {
      "main": [
        [
          {
            "node": "Create Downloads Playlist",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Spotify, playlists, musique : pour qui est ce workflow ?

Ce workflow s'adresse aux artistes, DJs, et passionnés de musique qui utilisent Spotify et souhaitent automatiser la gestion de leurs playlists. Il est conçu pour des utilisateurs ayant un niveau technique moyen et peut être utilisé par des équipes de marketing musical ou des professionnels de l'événementiel.

Workflow n8n Spotify, playlists, musique : problème résolu

Ce workflow résout le problème de la gestion manuelle des playlists sur Spotify, qui peut être fastidieuse et chronophage. En automatisant ce processus, les utilisateurs évitent les doublons dans leurs playlists et s'assurent que leurs morceaux préférés sont toujours à jour. Cela réduit également le risque de perdre des morceaux aimés dans une mer de nouvelles découvertes musicales, offrant ainsi une expérience d'écoute plus fluide et agréable.

Workflow n8n Spotify, playlists, musique : étapes du workflow

Étape 1 : Le workflow est déclenché selon un calendrier défini.

  • Étape 1 : Il vérifie si une playlist de téléchargements existe déjà.
  • Étape 2 : Si aucune playlist n'est trouvée, une nouvelle playlist est créée.
  • Étape 3 : Les morceaux aimés sont récupérés à partir de Spotify.
  • Étape 4 : Les morceaux sont filtrés pour exclure ceux déjà présents dans la playlist de téléchargements.
  • Étape 5 : Les morceaux les plus anciens sont supprimés si nécessaire.
  • Étape 6 : Les nouveaux morceaux sont ajoutés à la playlist de téléchargements.
  • Étape 7 : La playlist mise à jour est vérifiée pour garantir qu'elle est conforme aux attentes de l'utilisateur.

Workflow n8n Spotify, playlists, musique : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier le nom de la playlist créée dans le noeud 'Create Downloads Playlist'. Vous pouvez également ajuster le nombre de morceaux récupérés dans le noeud 'Get Liked Tracks' en modifiant le paramètre 'limit'. Si vous souhaitez intégrer d'autres services, vous pouvez ajouter des noeuds supplémentaires pour interagir avec d'autres API. Assurez-vous également de vérifier les conditions dans les noeuds 'If no playlist' et 'If no Downloads Playlist found' pour les adapter à vos besoins spécifiques. Enfin, pour sécuriser le flux, envisagez d'ajouter des notifications en cas d'erreur ou d'échec d'une étape.