Au cours du développement de wasabi, des nouveaux champs seront certainement ajoutés. Si tel est le cas veillez à ajouter ces champs dans les objets correspondant aux modèles mongoose.
Il est conseillé de lire ce que fait chaque API avant de l'utiliser notamment celle concernant /updatedb
et /createdb
.
Vous pouvez trouvez la listes des fichiers/dossiers non présent sur le git ici: https://github.com/ElmahdiK/wasabi_project/blob/master/.gitignore :
mongo/backup_mongo/*
: contient les dumps de la base de données wasabimongo/deezer/*
: fichier csv contenant le matching de nos musiques avec les musiques de Deezer (fichier généré par Deezer)mongo/animux/*
: arborescence contenant les informations permettant d'aligner l'audio avec les lyricsmongo/discogs/*
: fichiers XML contenant la base de données Discogs. A télécharger ici : http://data.discogs.com/public/my_components/MT5/multitrack/*
: environ 70 go de pistes audio démixéespublic/download/*
: environ 70 go de pistes audio démixées en .zippublic/AmpSim3/*
: application AmpSim3 de Michel Buffapublic/AmpSimFA/*
: application AmpSimFa de Michel Buffanode_modules/*
: contient les modules Node-JS. Vous devez lancer la commandenpm install
dans le dossier wasabi pour récupérer les modules du projet (dépendances du fichier package.json)cert_https/*
: contient les certificats HTTPS de l'applicationroutes/conf/login.json
: contient le login/password permettant d'accéder à certaines APIsroutes/conf/confJwt.json
: contient la clé permettant de hasher le token JWT
- Récupérer l'application sur le GIT
- Installer Node-JS : ici
- Installer mongodb : version >= 3.2 : ici
3.1. Lancer mongodb, voir : "Comment lancer les bases de données>MongoDB sous Windows"
3.2. Importer la base de données wasabi :cd wasabi_project/mongo/backup_mongo
et taper la commandemongorestore dump_X
ou X est le nombre le plus grand (chaque dump possède un README). Vous devez demander le dossierwasabi_project/mongo/backup_mongo
à l'admin du projet.
3.3. (Facultatif mais conseillé) Installer mongobooster : ici - Installer elasticsearch : version >= 2.3 : ici
4.1. Lancer elasticsearch, voir : "Comment lancer les bases de données>Elasticsearch sous Windows" - Lancer le serveur Node-JS
5.1. En ligne de commande :cd path/to/wasabi_project
5.2. /!\ Par souci de sécurité le fichier contenant le login / mot de passe n'est pas sur le git vous devez donc créer le fichierroutes/conf/login.json
. Ce fichier contient le json suivant :{"login": "ADemanderALAdmin","password": "ADemanderALAdmin"}
. Idem pour le fichierroutes/conf/confJwt.json
contenant la clé des Tokens JWT ce fichier contient le json suivant :{"secretOrKey": "ADemanderALAdmin"}
. Vous pouvez trouver la listes des fichiers/dossiers non présent sur le git ici : https://github.com/ElmahdiK/wasabi_project/blob/master/.gitignore
5.3. Voir la partie : "Comment installer un certificat https"
5.4. Taper la commande :npm install
(cela installera les dépendances du package.json)
5.5. Taper la commande :npm start
(cela exécutera la commande npm start du package.json)
5.6. Le serveur est maintenant lancé sur https://localhost/ (dans le navigateur) - Remplir la base de données d'elasticsearch :
6.1. Vérifiez dans/routes/conf/conf.js
quelaunch.env.dev_mode
soit à true
6.2. Lancez ensuite l'api REST pour indexer les artistes :https://127.0.0.1/createdb/createdbelasticsearchartist
ethttps://127.0.0.1/createdb/createdbelasticsearchsong
pour indexer les musiques. Nous pouvons maintenant effectuer des recherches via la barre de recherche du site
Comment lancer l'application sous RedHat/Linux Centos 7 (serveur - uniquement en cas de ré-installation)
- Récupérer l'application sur le GIT
1.1. Taper la commande :sudo yum install git
et vérifier qu'il s'est bien installé :git --version
1.2. Taper la commande :git clone https://github.com/ElmahdiK/wasabi_project.git
1.3. /!\ Les dumps de la base de données ne sont pas sur le git. Mettre les dumps de la base de données dans le dossierbackup_mongo
. Créer le dossier danswasabi_project/mongo/
pour cela rendez-vous dans le bon dossiercd wasabi_project/mongo/
puis tapez la commande :mkdir backup_mongo
. Placer les dumps à cet endroit (conseil : envoyer les dumps via filezilla)
1.4. /!\ Par souci de sécurité le fichier contenant le login / mot de passe n'est pas sur le git. Vous devez donc créerroutes/conf/login.json
. Ce fichier contient le json suivant :{"login": "ADemanderALAdmin","password": "ADemanderALAdmin"}
. Idem pour le fichierroutes/conf/confJwt.json
contenant la clé des Tokens JWT ce fichier contient le json suivant :{"secretOrKey": "ADemanderALAdmin"}
. Vous pouvez trouver la liste des fichiers/dossiers non présents sur le git ici : https://github.com/ElmahdiK/wasabi_project/blob/master/.gitignore - Installer Node-JS : ici
- Installer mongodb : version >= 3.2 : ici
3.1. Lancer mongodb, voir : "Comment lancer les bases de données>MongoDB sous Linux RedHat/Centos 7" - Installer elasticsearch: version >= 2.3 : ici
4.1. Lancer elasticsearch, voir : "Comment lancer les bases de données>Elasticsearch sous Linux RedHat/Centos 7" - Installer le module Node-JS: PM2 dans le répertoire wasabi_project :
npm install pm2 -g
5.1. Infos utiles sur PM2: log, start, restart, associer un compte pm2 à un serveur : ici - Lancer le serveur
6.1. En ligne de commande :cd /home/user/wasabi_project
6.2. Dans le dossierwasabi_project
lancez la commandenpm install
pour installer les dépendances du projet
6.3. Taper la commande :npm run start-pm2
6.4. Le serveur est maintenant lancé et accessible sur https://wasabi.i3s.unice.fr - Remplir la base de données d'elasticsearch:
7.1. Vérifiez dans/routes/conf/conf.js
quelaunch.env.dev_mode
soit à true
7.2. Utiliser l'API pour indexer les noms des artistes/createdb/createdbelasticsearchartist
, nous pouvons maintenant chercher les artistes dans la barre de recherche
7.3. Lancer l'API/createdb/createdbelasticsearchsong
pour indexer les noms des musiques avec les noms des artistes et les noms des albums ainsi nous pourrons chercher une musique par son title + nom d'album + nom d'artiste
- Vous pouvez vous connecter sur le serveur via putty : ici ou avec la commande SSH
- Une fois connecté au serveur entrez votre login / mot de passe (à demander à l'admin)
- Une fois connecté sur le compte taper :
sudo su
etscreen -D -r
(documentation de screen) afin de restaurer les diverses sessions de ligne de commande - Vous pouvez naviguer entre ces sessions via
ctrl + a + n
(next screen) ouctrl + a + p
(previous screen) - Le logiciel
htop
sera lancé (l'équivalent du gestionnaire de tâche windows) - Les logs du serveur seront aussi lancés dans une autre session (LOGS obtenus via PM2)
- Mongodb sera lancé.
- La commande
npm run start-pm2
sera aussi lancé - D'autres sessions peuvent aussi être lancés mais n'ont pas de réelle importance
- Vous pouvez vous connecter sur le serveur via putty : ici ou avec la commande SSH
- Une fois connecté au serveur entrez votre login / mot de passe (à demander à l'admin)
- Une fois connecté sur le compte taper :
sudo su
etscreen -D -r
(documentation de screen) afin de restaurer les diverses sessions de ligne de commande - Vous pouvez naviguer entre ces sessions via
ctrl + a + n
- Le logiciel
htop
sera lancé (l'équivalent du gestionnaire de tâche windows) - Ce serveur contient dans
/home/user/dump_mongo_wasabi
les anciens dumps de la base de données - Le serveur contient un site wordpress, pour le démarrer (si lampp n'est pas actif) vous devez vous rendre dans
/opt/lampp
et lancer la commande./lampp start
- Lien utile : http://sharadchhetri.com/2014/03/24/install-xampp-centosrhel-6-5/
- Informations utiles : par défaut, l'accès à la base de données du blog wasabi n'est pas possible depuis le web. Pour changer ce comportement vous devez vous rendre dans
/opt/lampp/etc/extra/httpd-xampp.conf
et remplacerRequire local
parRequire all granted
dans<LocationMatch>
Comment lancer les bases de données =======
- Lancer MongoDB :
mongod --dbpath /var/lib/mongo
- En console taper:
mongod
- Pour lancer elasticsearch :
service elasticsearch start
- Pour arrêter elasticsearch :
service elasticsearch stop
- Lancer le fichier
elasticsearch.bat
dans le dossierbin
de votre répertoire elasticsearch ou chercher via la barre de recherche windowselasticsearch.bat
- Voir : https://musicbrainz.org/doc/MusicBrainz_Server/Setup, lorsque bin/reindex est exécuté, vous pouvez lancer des requêtes via l'API Musicbrainz local
Nous utilisons http://apidocjs.com/ pour décrire nos APIs et générer leurs documentations. Pour cela :
- Rendez-vous sur le répertoire racine du projet :
wasabi_project
- Lancez la commande :
npm run apidoc
plus d'informations : ici cela générera la documentation des APIs contenues dans le dossierwasabi_project/routes
dans le dossierwasabi_project/apidoc
Un dossier wasabi_project/cert_https
doit être créé afin d'y ajouter les certificats fournis par le projet. Ces certificats seront utilisés dans le fichier bin/www
{ key: fs.readFileSync('./' + config.https.wasabi_key), cert: fs.readFileSync('./' + config.https.wasabi_crt) ca: fs.readFileSync('./' + config.https.digi_crt) }
** Permet configurer les listeners du server **
Contient les dumps de l'application
Convention de nommage des dumps :
Le dump courant est le dump avec le numéro le plus élevé dump_x
, le dump_x-2
sera plus ancien que le dump_x-1
. Chaque dump contient un readme
contenant les nouveaux champs ajoutés dans la base de données.
Créer un dump de la base de données :
- Assurez-vous que mongodb est actif pour cela taper en ligne de commande
mongod
- Rendez-vous dans le répertoire des dumps
mongo/backup_mongo/
en ligne de commande - Lancer la commande
mongodump --out dump_x+1
par exemple : si le dernier dump a pour nomdump_5
lancez la commandemongodump --out dump_6
pour créer un nouveau dump. Un dossierdump_6
sera créé. Vous pouvez aussi lancer la commandemongodump
pour créer un dump nommédump
et ensuite le renommer.
Restaurer la base de données via un dump :
- Rendez-vous dans le répertoire des dumps
mongo/backup_mongo/
en ligne de commande - (Facultatif) Si vous n'avez rien à garder dans la base actuelle vous pouvez la drop :
2.1. Taper en ligne de commandemongo wasabi
pour avoir accès à la base de données wasabi
2.2. Taper en ligne de commandedb.dropDatabase()
afin de supprimer la base de données wasabi - Lancer la commande
mongorestore path/to/dump_6
pour restaurer la base de données wasabi
Contient des requêtes utiles
Si la base de données est recréée de zéro via le web-service /createdb
elle contiendra :
Une collection artist une collection album et une collection song, il faudra donc lancer :
-
Les fichiers ci-dessous via la commande mongodb
load("FichierMongoDB.js");
pour cela:
1.1. Assurez-vous que mongodb est lancé avec la commandemongod
1.2. Allez dans votre répertoiremongo/request_mongo
en ligne commande et tapez la commandemongo wasabi
, vous devriez être connecté à la base de données
1.3. Lancer la commandeload("MonFichier.js");
exempleload("FindSameDocument.js");
1.4. Vous pouvez aussi lancer ces scripts via une interface graphique tel que mongobooster : ici -
Le fichier
findSameDocument.js
dans mongo afin de trouver les documents en double (ayant le même nom d'artiste car un nom d'artiste est unique en base de données, cf : comme dans lyrics wikia) dans la base de données -
[doit être exécuté après 2.] Le fichier
ConstructBDAfterCreate.js
dans mongodb afin de créer les index des collectionsartist
,album
etsong
-
Si besoin - [doit être exécuté après 3.] Le fichier
WordCount_Artist.js
faisant le word count des lyrics pour chaque artist (~3 heures d’exécution)(afin de voir les termes les plus utilisés par artistes) -
Si besoin - [doit être exécuté après 3.] Le fichier
WordCount_Album.js
faisant le word count des lyrics pour chaque album (~10 heures d’exécution) (afin de voir les termes les plus utilisés dans un album) -
Si besoin - [doit être exécuté après 3.] Le fichier
WordCount_Song.js
faisant le word count des lyrics pour chaque song (afin de voir les termes les plus utilisés dans une musique) -
[doit être exécuté après 3 et en mode
development
.] Le web serviceextractdbpedia/artist
permettant d'extraire le RDF des artistes ayant un lien vers Wikipédia. Ce web service envoie des requêtes SPARQL sur DBpédia afin d'obtenir le RDF de l'artiste. Un champ rdf contenant le RDF de l'artiste est ensuite ajouté en base de données (durée: plusieurs heures) -
[doit être exécuté après 3 et en mode
development
.] Le web serviceextractdbpedia/album
permettant d'extraire le RDF des musiques ayant un lien vers Wikipédia. Ce web service envoie des requêtes sparql sur DBpédia afin d'obtenir le RDF de la musique. Un champ rdf contenant le RDF de la musique est ensuite ajouté en base de données (durée: plusieurs heures) -
[doit être exécuté après 3 et en mode
development
.] Le web serviceextractdbpedia/song
permettant d'extraire le RDF des albums ayant un lien vers wikipédia. Ce web service envoie des requêtes sparql sur DBpédia afin d'obtenir le RDF de l'album. Un champ rdf contenant le RDF de l'album est ensuite ajouté en base de données (durée: plusieurs heures) -
[doit être exécuté après 9 et en mode
development
.] le web serviceextractdbpedia/createfields/song
transforme les propriétés de notre champ RDF en propriétés dans notre base de données -
[doit être exécuté après 10.] le fichier
CreateIndexAfterDBpediaExtraction
ce fichier permet de créer les index des nouveaux champs insérés dans la base de données -
[doit être exécuté après 11.] le fichier
Create_IsClassic_Field
permettant grâce aux subjects des musiques récupérées du rdf de savoir si la musique est un classique -
[doit être exécuté après 12 et en mode
development
.] le web serviceupdatedb/multitrackspath
ajoute la propriété multitrackspath dans notre base de données. Ce web service a besoin des musiques multitrack sur la machine ou est lancé cette API -
[doit être exécuté après 6 et en mode
development
avec le serveur MusicBrainz local actif.] Le web serviceupdatedb/musicbrainz/artist
-
[doit être exécuté après 6 et en mode
development
avec le serveur MusicBrainz local actif.] Le web serviceupdatedb/musicbrainz/album
-
[doit être exécuté après 6 et en mode
development
avec le serveur MusicBrainz local actif.] Le web serviceupdatedb/musicbrainz/song
-
[doit être exécuté après 6 et en mode
development
avec le serveur MusicBrainz local actif.] Le web serviceupdatedb/musicbrainz/artist/member
-
[doit être exécuté après 17 et en mode
development
.] Vous devez avoir le fichiermongo/deezer/track_dz_wasabi_viaproduct.csv
contenant le mapping entre les IDs de nos musiques et les IDs des musiques chez Deezer. Le web serviceupdatedb/deezer/create_mapping
permettra de créer un champdeezer_mapping
dans la collection song. -
[doit être exécuté après 18 et en mode
development
.] Le web serviceupdatedb/deezer/song
permet de récupérer des informations sur les musiques ayant un champs deezer_mapping non vide via l'API de Deezer. -
[doit être exécuté après 19 et en mode
development
.] Le web service/deezer/check_and_update_id/artist
permet d'associer le bon id d'un artist pour une musique donnée -
[doit être exécuté après 20 et en mode
development
.] Le web serviceupdatedb/deezer/artist
permet de récupérer des informations sur les artistes ayant un champs deezer_mapping non vide via l'API de Deezer. -
[doit être exécuté après 21 et en mode
development
.] Le web service/deezer/check_and_update_id/album
permet d'associer le bon id d'un album pour une musique donnée -
[doit être exécuté après 22 et en mode
development
.] Le web serviceupdatedb/deezer/album
permet de récupérer des informations sur les albums ayant un champ deezer_mapping non vide via l'API de Deezer. -
[doit être exécuté après 23 et en mode
development
.] Le web serviceupdatedb/discogs/artist
permet de mettre à jour les artistes ayant un lien vers discogs. -
[doit être exécuté après 24 et en mode
development
.] Le web serviceupdatedb/discogs/artist/members
permet de mettre à jour les membres ayant un lien vers discogs. -
[doit être exécuté après 25 et en mode
development
.] Le web serviceupdatedb/discogs/add/artist/id
permet d'ajouter le champ id de discogs correspondant à l'artiste. -
[doit être exécuté après 26 et en mode
development
.] Le web serviceupdatedb/discogs/add/album/id
permet d'ajouter le champ id de discogs correspondant à l'album. -
[doit être exécuté après 27 et en mode
development
.] Le web serviceupdatedb/discogs/add/artist/members/id
permet d'ajouter le champ id de discogs correspondant aux membres. -
[doit être exécuté après 28 et en mode
development
.] Le web serviceupdatedb/discogs/album
permet de mettre à jour les albums ayant un lien vers discogs. -
[doit être exécuté après 29 et en mode
development
.] Le web serviceupdatedb/equipboard/try_tor
permet de tester que la connection vers TOR fonctionne. -
[doit être exécuté après 30 et en mode
development
.] Le web serviceupdatedb/equipboard/add/artist/members/url_equipboard
permet de créer à partir du nom d'un membre son url vers equipboard. -
[doit être exécuté après 31 et en mode
development
.] Le web serviceupdatedb/equipboard/artist/equipment
permet de récupérer des informations conernant les equipements des membres. -
[doit être exécuté après 32 et en mode
development
.] Le web serviceupdatedb/equipboard/artist/equipment/description
permet de récupérer des informations conernant les descriptions. -
[doit être exécuté après 33 et en mode
development
.] Le web serviceupdatedb/animux/remove_accent/artist
permet de créer un champ contenant le nom de l'artiste sans accent. -
[doit être exécuté après 34 et en mode
development
.] Le web serviceupdatedb/animux/remove_accent/song
permet de créer un champ contenant le nom de la musique sans accent. -
[doit être exécuté après 35 et en mode
development
.] Le web serviceupdatedb/animux/sanitize_rename/artist
permet de nettoyer les noms des dossiers et de fichiers de l'arborescence animux. -
[doit être exécuté après 36 et en mode
development
.] Le web serviceupdatedb/animux/create_mapping/artist
permet de faire le matching entre les artistes wasabi et les artistes animux. -
[doit être exécuté après 37 et en mode
development
.] Le web serviceupdatedb/animux/create_mapping/artist/not_found
permet d'améliorer le matching entre les artistes wasabi et les artistes animux. -
[doit être exécuté après 38 et en mode
development
.] Le web serviceupdatedb/animux/create_mapping/song
permet de faire le matching entre les songs wasabi et les songs animux. -
[doit être exécuté après 39 et en mode
development
.] Le web serviceupdatedb/lyrics/language_detect
permet de créer un nouveau champ dans la collection 'song' contenant la langue de la musique. -
[doit être exécuté après 40 et en mode
development
.] Le web serviceupdatedb/create_stats/lyrics/language/popularity
permet de créer une collection recensant les langues les plus utilisées dans wasabi. -
[doit être exécuté après 41 et en mode
development
.] Le web serviceupdatedb/create_stats/properties/artist/count
permet de créer une collection recensant les propriétés de la collection 'artist' -
[doit être exécuté après 42 et en mode
development
.] Le web serviceupdatedb/create_stats/properties/album/count
permet de créer une collection recensant les propriétés de la collection 'album' -
[doit être exécuté après 43 et en mode
development
.] Le web serviceupdatedb/create_stats/properties/song/count
permet de créer une collection recensant les propriétés de la collection 'song' -
[doit être exécuté après 44 et en mode
development
.] le web serviceextractdbpedia/createfields/artist
transforme les propriétés de notre champ RDF en propriétés dans notre base de données -
TODO [doit être exécuté après 45 et en mode
development
.] le web serviceextractdbpedia/createfields/album
transforme les propriétés de notre champ RDF en propriétés dans notre base de données
Contient les requêtes sparql utilisées par l'application pour l'extraction du RDF pour les :
- Artistes: sparql_artist_data.rq
- Albums: sparql_album_data.rq
- Musiques: sparql_song_data.rq
Contient les dépendances des modules Node-JS
contient les certificats https
Contient les modèles de la base de données
Composants téléchargés afin de les utiliser dans l'application
Les images du projet
Composant créé pour être utilisé dans l'application
Contient la définition des routes supportées par l'application. C'est ici que se situe l'API REST
conf.js : Fichier de configuration permettant de ne pas réécrire les données redondantes dans l'application
xxxx.js : Contient la logique applicative à appliquer lors de requêtes sur les routes.
Contient les APIs du projet
Contient les APIs utilisées sur le site web https://wasabi.i3s.unice.fr
Contient les APIs utilisées pour la création de la base de données wasabi
Contient les APIs utilisées pour mettre à jour la base de données wasabi
Contient les APIs utilisées pour l'application MT5 de Michel Buffa
Contient les APIs utilisées l'authentification à wasabi
Contient les APIs utilisées pour extraire les données de DBpedia
Contient les APIs utilisées pour extraire les données de Deezer
Contient les APIs utilisées pour extraire les données de Discoveryhub
Contient les APIs utilisées pour extraire les données de Timeside
C'est le fichier qui sera appelé par la commande node bin/www. C'est ici qu'on appellera les nouvelles routes de l'application et qu'on configurera certaines parties de l'application
Fichier décrivant l'application, c'est aussi le gestionnaire de dépendance de Node-JS.