TableauBits / Mellotron

Static archive of Matbay songs
https://mellotron.pages.dev
MIT License
1 stars 0 forks source link

Ajouter des endpoints pour query l'existances de chansons #48

Open Ithyx opened 2 years ago

Ithyx commented 2 years ago

Pour intégrer Mellotron dans Yatga, nous pourrions envoyer une requête lors de l'ajout d'une chanson pour prévenir l'utilisateur de si une chanson avec le même nom existe déjà. Cette idée est encore vague, puisqu'il y a certain edge cases à trier, comme:

Pour l'instant, la meilleure réponse que nous avons à ces questions est de rendre cette intégration non autoritaire, et de ne rendre le résultat de la requête qu'une suggestion que l'utilisateur est fortemement invité à regarder (un lien peut être donné pour rendre cette requête facile)

Le travail à faire pour que cette feature soit complète est donc très large:

hvdbm commented 2 years ago

Que faire des matchs partiels ?

Il faudrait décider quand l'indicateur serait affiché. Est-ce qu'il varie au fur et à mesure qu'on tape le titre d'une chanson ou il apparait juste au moment de la validation ? Il faudrait aussi décider qu'est-ce qui est renvoyé. Un bool qui dit si la chanson est présente ou pas ? Un array qui contient les x premiers résultats ?

Une autre approche serait peut-être calculer un % de similitude des strings ? Ça pourrait gérer les matchs partiels, les fautes, etc. Par contre, ça pourrait donner plus de faux positifs.

Que faire si une chanson de 2 artistes différents porte le même nom ?

Vraiment un cas extrême, est-ce qu'on a ce edge case actuellement ? De toute manière, on ne fera pas de recherche avec seulement le nom d'un artiste, celui-ci serait peut-être plus en complément. Autrement, ça serait une limitation de notre application.

Que faire si une chanson peut s'écrire de plusieurs façon ?

Pour ce qui est des traductions multiples, il n'y a pas solution miracle. Si on est très motivé, on pourrait essayer d'appeler une API de traduction automatique, détecter la langue et faire plusieurs traductions (Anglais, Français, Russe, Chinois, Japonais, Coréen, mais encore comment gérer toutes ces langues ?) et faire un score là-dessus, autrement ça serait un risque qu'il faudra accepter.

Doit on prendre en compte le titre ET l'auteur ?

Pour éviter le maximum de faux positif, on pourrait vérifier l'auteur. Cependant, Mellotron n'a rien de prévu pour permettre ce genre de requête pour le moment, la recherche s'effectue sur tout les champs affichés. Ça pourrait venir dans une autre tâche qui viserait à améliorer les requêtes. Ça pourrait peut-être aussi quelque chose que l'utilisateur pourrait décider depuis Yatga.

On pourrait aussi comparer des URLs (sans titre et auteur) pour essayer de trouver des matchs parfaits. Mais encore là, une même chanson peut avoir plusieurs URLs.

rakruk commented 2 years ago

Pour l'instant, la meilleure réponse que nous avons à ces questions est de rendre cette intégration non autoritaire, et de ne rendre le résultat de la requête qu'une suggestion que l'utilisateur est fortemement invité à regarder (un lien peut être donné pour rendre cette requête facile)

Oui, mais si on prémache pas un peu le travail l'utilisateur ne va pas faire grand chose. Ce que j'avais en tête c'était de faire une recherche rapide (simple à implémenter et correcte 50% du temps) pour afficher à l'utilisateur ca: image quand il essaye de mettre une chanson. L'algorithme de recherche retournerait un indice de similitudes pour chacune des autres chansons et on fait un filtre sur les trucs similaires à plus de 80% on dirait.

Que faire si une chanson de 2 artistes différents porte le même nom ?

Je ne pense pas que ce soit un cas si extrême que ca, mais ça ne devrait pas être un problème, car on devrait faire une recherche sur une chanson existante avec chanson = artiste + titre plutôt que chanson = titre.

Que faire si une chanson peut s'écrire de plusieurs façon ?

On se fie au match partiel

Doit on prendre en compte le titre ET l'auteur ?

Oui