Sujet du Devoir Projet

Master Internet, Données et Connaissances

Jean-Marc Lecarpentier

Enseignement des technologies du Web

 

Sujet du Devoir Projet

Banque de sons MP3

Date de rendu du devoir : lundi 7 janvier 2019, 9h

Objectif du devoir

L'objectif du devoir est de réaliser une banque de sons sans base de données.

Une archive contenant des MP3 pour tester est fournie pour démarrer.

Fonctionnalités et points techniques obligatoires

Points techniques obligatoires

Le site doit être responsive et utiliser CSS Grid et/ou Flexbox.

La programmation doit implémenter les concepts généraux vus en cours.

Le code doit respecter les guides de bonnes pratiques PSR. Chaque devoir sera passé au crible de PHP Code Sniffer pour évaluer la qualité du code.

Fonctionnalités Partie publique

La page d'accueil de l'application affiche les sons présentes dans le dossier sons/ (vous pouvez renommer les fichiers si besoin). Pour chaque MP3, un lien envoie vers la page de détails d'un son.

La page de détails d'un son affiche un player et les métadonnées que le son contient. Les métadonnées sont extraites du MP3 avec exiftool ou getID3 ou bien même les outils mentionnés plus bas pour l'écriture de métadonnées, et le code source de la page doit inclure les Microdata, les données Open Graph et Twitter Cards. Vous veillerez à afficher les données de copyright de façon explicite.

On peut acheter chaque son en payant par carte bancaire (factice bien sûr) et en donnant son adresse mail. Le version de base ne permet que d'acheter un seul son à la fois (pas de notion de panier). Une fois le paiement effectué, l'utilisateur reçoit un mail de confirmation avec un lien de téléchargement du son (on pourra utiliser Swiftmailer pour l'envoi des mails). Un journal des paiements (réussis et échoués) est stocké sur le serveur.

Fonctionnalités Partie à accès restreint

L'utilisateur connecté a la possibilité d'ajouter une image par upload. Les métadonnées du son sont extraites de celui-ci et proposées dans un formulaire pour modification et/ou validation. Les données ainsi modifiées sont alors réinscrites dans le fichier MP3 pour s'assurer de la cohérence des données.

Pour inscrire les métadonnées ID3, les outils exiftool ou getID3 ne sont pas adaptés. Les outils suivants peuvent être utilisés :

  • eyeD3, exécutable et API en Python. C'est probablement la plus simple pour ceux qui connaissent Python mais pas C++
  • TagLib, bibliothèque C++
  • id3lib, autre bibliothèque C++
  • FFmpeg (logiciel de traitement audio/video) permet de modifier un certain nombre de métadonnées, voir les exemples sur ce blog ou dans cette discussion sur Stack Overflow. FFmpeg est installé sur le serveur web et peut être exécuté par PHP.

Une page liste les sons disponibles et permet de les modifier/supprimer.

Une page permet d'afficher le journal des paiements.

Page technique sur l'implémentation

Une page contiendra la composition de l'éventuel binôme ainsi que les détails techniques sur l'implémentation du devoir que vous avez réalisé. Indiquer les compléments réalisés. En particulier 2 comptes seront créés pour Alexandre et Jean-Marc et vous indiquerez sur cette page leur login et mot de passe.

Compléments optionnels

La liste ci-dessous est non exhaustive.

Générer les pages avec le moteur de templates Twig.

Lorsque le fichier MP3 contient les lyrics, pouvoir les afficher. Si de plus les lyrics contiennent les informations de synchronisation, avoir un lecteur audio qui affiche les textes synchronisés avec le son.

Pouvoir ajouter/modifier l'image d'un fichier MP3.

À rendre

Le devoir peut être fait individuellement ou en binôme. Vous devez rendre :

  • une version opérationnelle dans votre espace web personnel à l'URL dev-NUMETU.users.info.unicaen.fr/devoir-idc2018/
  • une archive zip de votre code source (sans les fichiers MP3 !) sur la plate-forme ecampus

Date de rendu du devoir : lundi 7 janvier 2019, 9h