Cloner un référentiel organisé adapté aux héros de chansons fournies par l'utilisateur
Lien vers l'application Web ici
L'état actuel de l'agrégation de chansons personnalisées Guitar Hero/Rock Band/Clone Hero est plutôt insatisfaisant, dispersé et hostile aux nouveaux arrivants : il s'agit d'une tentative de la rendre plus consultable et conviviale.
Une bonne partie des sources sont basées sur la feuille de calcul officielle des charts CH avec une tonne de chansons issues de charters talentueux, y compris des conversions de C3, ainsi que sur les setlists officielles GH/RB. Bravo à tous ceux qui ont ajouté à la liste également ! Il existe actuellement plus de 20 000 cartes indexées, et ce nombre ne cesse de croître !
Disclaimer : Je ne suis pas responsable des palmarès et des chansons qui sont répertoriés par refrain (sauf les palmarès attribués à "Paturages"). Si vous rencontrez un problème avec l'un d'entre eux, veuillez contacter les chartes et/ou les propriétaires des sources (des liens vers les sources sont fournis pour chaque chanson).
Chorus importe périodiquement des liens vers des chansons à partir d'une liste composée principalement de dossiers Google Drive (fournie manuellement dans le dossier sources). Il explore les dossiers fournis, télécharge les fichiers .chart
/ .mid
et song.ini
(ou des archives entières) pour les analyser pour obtenir des informations, enregistre formellement les liens ( et non les regroupements de chansons eux-mêmes ) et leurs métadonnées dans une base de données et supprime les fichiers téléchargés. articles. L'application Web lit et recherche simplement les données enregistrées dans la base de données.
Le moteur de recherche utilise les ts_vectors
et trigrammes de PostgreSQL (via l'extension pg_trgm
) : il opère sur la concaténation des noms d'artiste/groupe, de chanson, de charte et de source. Cela semble plutôt bien fonctionner pour l'instant !
Suivez les instructions décrites ici.
Dépendances npm install
, npm run start:frontend
pour démarrer l'environnement de développement.
( Cela peut fonctionner ou non sous Windows. Veuillez me contacter si vous rencontrez des problèmes. )
Configurez une base de données PostgreSQL et obtenez votre ID client et votre secret de l'API Google. Copiez le dossier conf.example dans un dossier conf et remplissez les fichiers d'informations d'identification.
npm install
les dépendances du nœud. npm run import
pour remplir votre base de données avec tous les lecteurs. npm start
pour démarrer le serveur de développement de l'application Web.
npm run import <short_name>
pour exécuter un seul script d'importation particulier.
Juste avertissement : la toute première exécution prendra plus de 12 heures, alors assurez-vous d'exécuter le script en tâche de fond. Les exécutions suivantes ne devraient prendre qu'une heure environ, en fonction du nombre de nouveaux graphiques. Si vous n'êtes pas prêt à passer par les 12+ heures, n'hésitez pas à me demander un dump de base de données sur Discord ( Paturages#9405
) ou ailleurs.
/api/count
Donne le nombre total de graphiques indexés
/api/random
Donne 20 graphiques choisis au hasard
/api/latest
Récupère les 20 graphiques les plus récents
Paramètres de requête
from
(Number) : Décalage à partir duquel les 20 graphiques sont récupérés /api/search
Recherche selon une chaîne de requête, donne 20 résultats
Paramètres de requête
query
(String) : les termes de recherche. Il peut s'agir soit de mots génériques, soit d'une chaîne de « requête avancée » composée de :name="some name"
: Nom de la chansonartist="some artist"
: Nom de l'artiste/du groupealbum="some album"
: Nom de l'albumgenre="some genre"
: Genre de la chansoncharter="some charter"
: Nom de la charte (tel que documenté dans leur song.ini
/ notes.chart
)tier_band
, tier_guitar
, tier_bass
, tier_rhythm
, tier_drums
, tier_vocals
, tier_keys
, tier_guitarghl
, tier_bassghl
: Niveau de difficulté tel que défini dans song.ini
par les entrées diff_*
(nombre de 0 à 6, généralement). Par exemple, tier_guitar=lt3
recherchera les niveaux inférieurs à 3, tier_guitar=gt3
recherchera les niveaux supérieurs à 3.diff_guitar
, diff_bass
, diff_rhythm
, diff_drums
, diff_vocals
, diff_keys
, diff_guitarghl
, diff_bassghl
: Quelles parties de difficulté (facile, moyenne, difficile, expert) sont disponibles. Il s'agit d'un bitmap de 4 largeurs (1 bit par partie de difficulté) : 1
est facile, 2
est moyen, 4
est difficile, 8
est expert. Additionnez des nombres pour créer des requêtes en plusieurs parties.hasForced
, hasOpen
, hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
: explicite, 0
pour demander l'absence, 1
pour demander la présence.from
(Number) : Décalage à partir duquel les 20 graphiques sont récupérés /api/search
, api/random
et /api/latest
génèrent tous deux du JSON au format suivant :
roles
(Objet) : La clé est le nom de la charte en minuscules, la valeur est leur "légende", c'est-à-dire ce qui va apparaître lorsqu'ils seront survolés.songs
(Array of Objects) : entités de chanson contenant :name
, artist
, album
, genre
, charter
, year
hasForced
, hasOpen
(objet contenant les parties qui les contiennent), hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
, isPack
, is120
(vrai si le graphique n'a qu'un seul marqueur BPM et qu'il est 120)length
, effectiveLength
(Nombre, en secondes ; la durée effective est la durée entre la première et la dernière note)tier_*
(niveau de difficulté song.ini
)diff_*
(bitmaps des parties de difficulté, voir un peu ci-dessus pour explication)uploadedAt
, lastModified
("dernière modification" est l'horodatage de la dernière modification du fichier. Il est null
lorsqu'il est introuvable (par exemple, les dossiers et graphiques GDrive qui n'auraient pas pu être analysés ont uniquement uploadedAt
))hashes
: sommes de contrôle MD5file
: MD5 de la carte elle-mêmenoteCounts
: combien de notes y a-t-il dans une partie, par partie de difficultélink
: Lien de téléchargement. Soit il dirige versdirectLinks
(expérimental) : ces liens devraient vous permettre de déclencher directement un téléchargement si vous y accédez/les obtenez.sources
(Array) : d'où il a été extrait (vous pouvez certainement aider si vous le souhaitez !)
Ma feuille de route devient en fait suffisamment considérable pour justifier sa propre page de projet GitHub. Vérifiez-le!