Клонировать удобный для героев организованный репозиторий пользовательских песен
Ссылка на веб-приложение здесь
Текущее состояние агрегирования пользовательских песен Guitar Hero/Rock Band/Clone Hero довольно неудовлетворительно, разбросано и неприятно для новичков: это попытка сделать его более доступным для поиска и удобным для пользователя.
Большая часть источников основана на официальной таблице чартов CH с множеством песен из талантливых чартов, включая конвертированные из C3, а также на официальных сетлистах GH/RB. Респект всем, кто добавился в список! На данный момент проиндексировано более 20 000 графиков, и их число продолжает расти!
Отказ от ответственности: я не несу ответственности за чарты и песни, индексированные по припеву (кроме чартов, принадлежащих "Paturages"). Если у вас возникли проблемы с каким-либо из них, обратитесь к уставам и/или владельцам источников (ссылки на источники предоставляются для каждой песни).
chorus периодически импортирует ссылки на песни из списка, в основном папок Google Диска (вручную предоставляемого в папке с исходными кодами). Он сканирует предоставленные папки, загружает файлы .chart
/ .mid
и song.ini
(или целые архивы) для анализа их информации, формально сохраняет ссылки ( а не сами наборы песен ) и их метаданные в базе данных и отбрасывает загруженные файлы. предметы. Веб-приложение просто считывает и ищет данные, сохраненные в базе данных.
Поисковая система использует ts_vectors
и триграммы PostgreSQL (через расширение pg_trgm
): она работает с объединением названий исполнителя/группы, песни, устава и источника. Кажется, сейчас все работает очень хорошо!
Следуйте инструкциям, описанным здесь.
зависимости npm install
, npm run start:frontend
для загрузки среды разработки.
( Это может работать, а может и не работать в Windows. Если у вас возникнут проблемы, свяжитесь со мной. )
Настройте базу данных PostgreSQL и получите идентификатор и секрет клиента Google API. Скопируйте папку conf.example в папку conf и заполните файлы учетных данных.
npm install
зависимости узла. npm run import
, чтобы заполнить вашу базу данных всеми дисками. npm start
, чтобы запустить сервер разработки для веб-приложения.
npm run import <short_name>
чтобы запустить только один конкретный скрипт импорта.
Справедливое предупреждение: самый первый запуск займет более 12 часов, поэтому обязательно запускайте скрипт в фоновом режиме. Следующие прогоны займут около часа, в зависимости от количества новых графиков. Если вы не готовы тратить более 12 часов, не стесняйтесь попросить меня предоставить дамп базы данных на Discord ( Paturages#9405
) или где-нибудь еще.
/api/count
Возвращает общее количество проиндексированных диаграмм.
/api/random
Дает 20 диаграмм, выбранных случайным образом.
/api/latest
Собирает 20 последних графиков.
Параметры запроса
from
(число): смещение, из которого извлекаются 20 диаграмм. /api/search
Поиск по строке запроса, дает 20 результатов.
Параметры запроса
query
(строка): Условия поиска. Это могут быть либо общие слова, либо строка «расширенного запроса», состоящая из:name="some name"
: название песни.artist="some artist"
: название исполнителя/группы.album="some album"
: название альбома.genre="some genre"
: жанр песни.charter="some charter"
: название устава (как указано в файле song.ini
/ notes.chart
).tier_band
, tier_guitar
, tier_bass
, tier_rhythm
, tier_drums
, tier_vocals
, tier_keys
, tier_guitarghl
, tier_bassghl
: Уровень сложности, определенный в song.ini
записями diff_*
(обычно от 0 до 6). Например, tier_guitar=lt3
будет искать уровни меньше 3, tier_guitar=gt3
будет искать уровни выше 3.diff_guitar
, diff_bass
, diff_rhythm
, diff_drums
, diff_vocals
, diff_keys
, diff_guitarghl
, diff_bassghl
: какие части сложности (легкая, средняя, сложная, экспертная) доступны. Это растровое изображение шириной 4 (по одному биту на часть сложности): 1
— легкий, 2
— средний, 4
— сложный, 8
— экспертный. Складывайте числа вместе, чтобы создавать запросы, состоящие из нескольких частей.hasForced
, hasOpen
, hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
: все понятно, 0
для запроса отсутствия, 1
для запроса присутствия.from
(число): смещение, из которого извлекаются 20 диаграмм. /api/search
, api/random
и /api/latest
выдают JSON в следующем формате:
roles
(Объект): Ключ — это имя устава в нижнем регистре, значение — это их «заголовок», то есть то, что будет отображаться при наведении на них курсора.songs
(массив объектов): объекты песни, содержащие:name
, artist
, album
, genre
, charter
, year
hasForced
, hasOpen
(объект, содержащий части, в которых они есть), hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
, isPack
, is120
(истина, если диаграмма имеет только один маркер BPM и он равен 120)length
, effectiveLength
(число в секундах; эффективная длина — это продолжительность между первой и последней нотой)tier_*
(уровень сложности song.ini
)diff_*
(растровые изображения частей сложности, пояснения см. немного выше)uploadedAt
, lastModified
(«последнее изменение» — это временная метка последней модификации файла. Оно равно null
, если его не удалось найти (например, папки и диаграммы GDrive, которые невозможно было отсканировать, имеют только uploadedAt
))hashes
: контрольные суммы MD5file
: MD5 самой диаграммыnoteCounts
: Сколько заметок в части, на каждую часть сложности.link
: Ссылка для скачивания. Он либо направляет наdirectLinks
(экспериментально): эти ссылки должны позволять вам напрямую запускать загрузку, если вы получаете к ним доступ или получаете к ним доступ.sources
(массив): откуда было взято (вы обязательно можете помочь, если захотите!)
Моя дорожная карта на самом деле становится достаточно значительной, чтобы создать собственную страницу проекта на GitHub. Проверьте это!