Repositorio organizado de canciones proporcionadas por el usuario compatible con Clone Hero
Enlace a la aplicación web aquí
El estado actual de la agregación de canciones personalizadas de Guitar Hero/Rock Band/Clone Hero es bastante insatisfactorio, disperso y reacio a los recién llegados: este es un intento de hacerlo más fácil de buscar y de usar.
Una buena parte de las fuentes se basan en la hoja de cálculo oficial de las listas de CH con un montón de canciones de listas talentosas, incluidas conversiones de C3, así como las listas de canciones oficiales de GH/RB. ¡Felicitaciones a todos los que se han agregado a la lista también! Actualmente hay más de 20.000 gráficos indexados y el número sigue creciendo.
Descargo de responsabilidad: No soy responsable de las listas y canciones indexadas por coro (excepto las listas atribuidas a "Paturages"). Si tiene algún problema con alguno de ellos, comuníquese con los estatutos y/o con los propietarios de las fuentes (se proporcionan enlaces a las fuentes para cada canción).
Chorus importa periódicamente enlaces a canciones de una lista de carpetas en su mayoría de Google Drive (proporcionadas manualmente en la carpeta de fuentes). Rastrea las carpetas proporcionadas, descarga los archivos .chart
/ .mid
y song.ini
(o archivos completos) para analizarlos en busca de información, guarda formalmente los enlaces ( no los paquetes de canciones en sí ) y sus metadatos en una base de datos y descarta los archivos descargados. elementos. La aplicación web simplemente lee y busca a partir de los datos guardados en la base de datos.
El motor de búsqueda utiliza ts_vectors
y trigramas de PostgreSQL (a través de la extensión pg_trgm
): opera con la concatenación de nombres de artista/banda, canción, carta y fuente. ¡Parece estar funcionando bastante bien por ahora!
Siga las instrucciones que se describen aquí.
npm install
dependencias, npm run start:frontend
para iniciar el entorno de desarrollo.
( Esto podría funcionar o no en Windows. Comuníquese conmigo si tiene problemas).
Configure una base de datos PostgreSQL y obtenga su ID y secreto de cliente API de Google. Copie la carpeta conf.example a una carpeta conf y complete los archivos de credenciales.
npm install
las dependencias del nodo. npm run import
para llenar su base de datos con todas las unidades. npm start
para iniciar el servidor de desarrollo de la aplicación web.
npm run import <short_name>
para ejecutar solo un script de importación en particular.
Advertencia justa: la primera ejecución tardará más de 12 horas, así que asegúrese de ejecutar el script como tarea en segundo plano. Las siguientes ejecuciones sólo deberían tomar aproximadamente una hora, dependiendo de la cantidad de gráficos nuevos. Si no está dispuesto a pasar más de 12 horas, no dude en pedirme un volcado de la base de datos en Discord ( Paturages#9405
) o en otro lugar.
/api/count
Produce la cantidad total de gráficos indexados.
/api/random
Produce 20 gráficos seleccionados al azar
/api/latest
Agarra los 20 gráficos más recientes
Parámetros de consulta
from
(Número): Compensación desde la cual se obtienen los 20 gráficos /api/search
Busca según una cadena de consulta y arroja 20 resultados.
Parámetros de consulta
query
(Cadena): Los términos de búsqueda. Pueden ser palabras genéricas o una cadena de "consulta avanzada" compuesta por:name="some name"
: nombre de la canciónartist="some artist"
: Nombre del artista/bandaalbum="some album"
: nombre del álbumgenre="some genre"
: género de la cancióncharter="some charter"
: nombre del charter (como se documenta en song.ini
/ notes.chart
)tier_band
, tier_guitar
, tier_bass
, tier_rhythm
, tier_drums
, tier_vocals
, tier_keys
, tier_guitarghl
, tier_bassghl
: nivel de dificultad definido en song.ini
por las entradas diff_*
(número de 0 a 6, normalmente). Por ejemplo, tier_guitar=lt3
buscará niveles inferiores a 3, y tier_guitar=gt3
buscará niveles superiores a 3.diff_guitar
, diff_bass
, diff_rhythm
, diff_drums
, diff_vocals
, diff_keys
, diff_guitarghl
, diff_bassghl
: qué partes de dificultad (fácil, media, difícil, experto) están disponibles. Es un mapa de bits de 4 anchos (1 bit por parte de dificultad): 1
es fácil, 2
es medio, 4
es difícil, 8
es experto. Sume números para realizar consultas de varias partes.hasForced
, hasOpen
, hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
: se explica por sí mismo, 0
para consultar por ausencia, 1
para consultar por presencia.from
(Número): Compensación desde la cual se obtienen los 20 gráficos /api/search
, api/random
y /api/latest
generan JSON en el siguiente formato:
roles
(Objeto): la clave es el nombre del estatuto en minúsculas, el valor es su "título", también conocido como lo que aparecerá cuando se les ubique.songs
(matriz de objetos): entidades de canciones que contienen:name
, artist
, album
, genre
, charter
, year
hasForced
, hasOpen
(Objeto que contiene partes que las tienen), hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
, isPack
, is120
(verdadero si el gráfico solo tiene un marcador de BPM y es 120)length
, effectiveLength
(Número, en segundos; la duración efectiva es la duración entre la primera y la última nota)tier_*
(niveles de dificultad song.ini
)diff_*
(mapas de bits de partes de dificultad, consulte un poco más arriba para obtener una explicación)uploadedAt
, lastModified
("última modificación" es la marca de tiempo de la última modificación del archivo. Es null
cuando no se pudo encontrar (por ejemplo, las carpetas y gráficos de GDrive que no se pudieron escanear solo tienen uploadedAt
))hashes
: sumas de comprobación MD5file
: MD5 del propio gráficonoteCounts
: cuántas notas hay en una parte, por parte de dificultadlink
: enlace de descarga. O dirige adirectLinks
(experimental): estos enlaces deberían permitirle activar directamente una descarga si accede a ellos o los obtiene.sources
(matriz): de dónde se extrajo (¡definitivamente puedes ayudar si quieres!)
En realidad, mi hoja de ruta se está volviendo lo suficientemente considerable como para justificar su propia página de proyecto en GitHub. ¡Échale un vistazo!