Loading...

Welcome !

Hello, thank you for visiting my portfolio, which I have anonymized for the occasion.
For a better experience, I can advise you to view it on a computer and navigate using the menu in the top right corner.
I wish you a pleasant visit!
logo John Doe

Spotify Overlay

Spotify Overlay est donc une application Java pour Ordinateur. Elle permet d'afficher les paroles de la musique en cours de lecture sur Spotify sous la forme d'un overlay, qui peut être activé/désactivé avec une simple touche.
C'est-à-dire qu'elle permet d'afficher les paroles d'une musique sans perturber les autres actions que vous souhaitez faire, en effet, vous pouvez toujours cliquer, voir, défiler, jouer au travers de cet overlay. De ce fait, il peut être utilisé en codant, en jouant, ou autre comme vous pouvez le voir sur les images ci-dessous.

Java
Web
API
Desktop App
analyse step icon
Analyse de l'objectif et recherche de moyens pour y parvenir

Comme bien souvent, le projet commence sur la base d'un problème, ici, la volonté de pouvoir afficher ou cacher les paroles d'une musique de manière rapide et sans perturber nos autres actions.
Dans ma recherche de solution, j'ai d'abord exploré le code du mod Minecraft Snoopy, qui permet d'afficher le nom de la musique en cours de lecture sur le jeu. Cependant, il récupérait seulement le nom via le nom que prenait le processus Spotify, j'ai donc dû chercher une autre solution.
Je me suis alors intéressé à la synchronisation que réalise Spotify entre l'application et le navigateur lorsqu'ils sont connectés au même compte. Mon idée était donc d'ouvrir un navigateur fictif, de me connecter au compte de l'utilisateur, puis d'afficher le contenu de la section des paroles de la page web Spotify. C'est alors que j'ai remarqué un décalage entre la musique en cours de lecture et la version navigateur de Spotify, retour à la case départ.
La dernière solution qui s'offrait alors à moi fut de collecter les données de la musique en cours de lecture, puis de récupérer ses paroles, et enfin de trouver quelle partie des paroles était en train d'être chantée.

development step icon
Développement du fonctionnement de l'application

La solution trouvée, le développement a pu commencer.
Lors de son lancement, l'application connaît d'abord une phase d'initialisation. J'ai d'abord eu besoin de me connecter au compte Spotify de l'utilisateur, afin de récupérer certains tokens nécessaires au fonctionnement de l'application, à savoir le sp_dc et la sp_key. J'ai aussi eu besoin de lancer un serveur local, puis d'accepter l'utilisation de l'API pour que l'application puisse obtenir un access token et un refresh token pour l'API. À cause des protections anti-robot de la plateforme, j'ai eu besoin de lancer un navigateur virtuel pour effectuer toutes les opérations précédentes, dans mon cas, j'ai utilisé GeckoDriver. Cela fait, le serveur local et le navigateur peuvent être fermés jusqu'au prochain lancement de l'application.
Maintenant initialisée, l'application entre dans sa phase de fonctionnement. Elle requiert régulièrement l'API de Spotify pour récupérer la musique en cours de lecture, son id et sa progression, en vérifiant si elle doit rafraîchir les tokens en vue d'une utilisation plus longue. Elle convertit ensuite l'id en id local pour Spotify, en effet, Spotify utilise différents formats d'identifiants dans l'API et en interne. Enfin, elle utilise les tokens sp_dc et sp_key pour se faire passer pour la plateforme elle-même et récupérer les paroles de la musique. Il ne lui reste alors plus qu'à trouver les bonnes paroles en fonction de la progression de la musique. Le rendu est quant à lui réalisé avec Java Swing, et JNA a permis de faire passer toutes les actions au travers de cette fenêtre.

usability step icon
Déploiement de l'application

Le déploiement fut rapide, car l'application n'a pour but initial d'être distribuée de manière publique. De ce fait, il existe uniquement un fichier de configuration pour entrer les identifiants du compte Spotify, la localisation du fichier GeckoDriver et le port du serveur local.

improvement_ideas step icon
Idées d'améliorations

Les perspectives d'améliorations peuvent être nombreuses. Parmi les plus majeures, l'on peut en sélectionner certaines:
● L'ajout d'un mode de configuration pour remplacer le simple fichier, permettant par la même, de déplacer et de dimensionner l'overlay. Ce mode permettrait ainsi d'améliorer et de simplifier l'utilisation de l'application, mais aussi d'ajouter une sécurité visant à crypter les identifiants Spotify dans la configuration, en ajoutant un mot de passe ou un code PIN à l'application.
● L'ajout d'un lanceur sous la forme d'un .exe, permettant de lancer l'application à partir de la barre des tâches ou du menu démarrer, mais aussi de simplifier l'installation et la suppression de l'application.
● Bien que je n'ai pas encore su identifier la source du problème, je sais que l'application peut parfois avoir du mal à mettre à jour l'overlay lorsque qu'il y a plusieurs changements de musique de suite. Régler ce dysfonctionnement permettrait d'éviter certaines gênes à l'utilisateur et ainsi améliorer son utilisation.