Repositori Terorganisir Ramah Pahlawan Kloning dari Lagu-lagu yang disediakan Pengguna
Tautan ke aplikasi web di sini
Keadaan agregasi lagu kustom Guitar Hero/Rock Band/Clone Hero saat ini agak tidak memuaskan, tersebar, dan tidak disukai pendatang baru: ini adalah upaya untuk membuatnya lebih mudah dicari dan ramah pengguna.
Sebagian besar sumber didasarkan pada spreadsheet tangga lagu CH resmi dengan banyak lagu dari charter berbakat, termasuk konversi dari C3, serta setlist resmi GH/RB. Props untuk semua orang yang telah menambahkan ke daftar juga! Saat ini terdapat lebih dari 20.000 grafik yang diindeks, dan jumlahnya masih terus bertambah!
Penafian: Saya tidak bertanggung jawab atas tangga lagu dan lagu yang diindeks berdasarkan paduan suara (kecuali tangga lagu yang dikaitkan dengan "Paturages"). Jika Anda mempunyai masalah dengan hal-hal tersebut, harap menghubungi pihak yang berwenang dan/atau pemilik sumber (tautan ke sumber disediakan untuk setiap lagu).
chorus secara berkala mengimpor tautan ke lagu dari daftar sebagian besar folder Google Drive (disediakan secara manual di folder sumber). Itu merayapi folder yang disediakan, mengunduh file .chart
/ .mid
dan song.ini
(atau seluruh arsip) untuk menguraikannya sebagai informasi, secara resmi menyimpan tautan ( bukan kumpulan lagu itu sendiri ) dan metadatanya dalam database dan membuang yang diunduh. item. Aplikasi web hanya membaca dan mencari dari data yang disimpan dalam database.
Mesin pencari menggunakan ts_vectors
dan trigram PostgreSQL (melalui ekstensi pg_trgm
): mesin ini beroperasi pada penggabungan nama artis/band, lagu, piagam, dan sumber. Tampaknya ini berfungsi cukup baik untuk saat ini!
Ikuti instruksi yang dijelaskan di sini.
npm install
dependensi, npm run start:frontend
untuk mem-boot lingkungan dev.
( Ini mungkin berfungsi atau tidak pada Windows. Silakan hubungi saya jika Anda mengalami masalah. )
Konfigurasikan database PostgreSQL dan dapatkan ID klien dan rahasia Google API Anda. Salin folder conf.example ke folder conf dan isi file kredensial.
npm install
dependensi node. npm run import
untuk mengisi database Anda dengan semua drive. npm start
untuk memulai server dev untuk aplikasi web.
npm run import <short_name>
untuk menjalankan satu skrip impor tertentu saja.
Peringatan yang adil: proses pertama akan memakan waktu lebih dari 12 jam, jadi pastikan untuk menjalankan skrip sebagai tugas latar belakang. Proses berikut ini hanya akan memakan waktu sekitar satu jam, tergantung pada jumlah grafik baru. Jika Anda tidak ingin menghabiskan 12+ jam, silakan minta saya untuk dump database di Discord ( Paturages#9405
) atau di tempat lain.
/api/count
Menghasilkan jumlah total grafik yang diindeks
/api/random
Menghasilkan 20 grafik yang dipilih secara acak
/api/latest
Meraih 20 grafik terbaru
Parameter kueri
from
(Nomor): Offset dari mana 20 grafik diambil /api/search
Pencarian berdasarkan string kueri, menghasilkan 20 hasil
Parameter kueri
query
(String): Istilah pencarian. Ini bisa berupa kata-kata umum atau string "kueri lanjutan" yang terdiri dari:name="some name"
: Nama laguartist="some artist"
: Nama artis/bandalbum="some album"
: Nama albumgenre="some genre"
: Genre lagucharter="some charter"
: Nama piagam (seperti yang didokumentasikan dalam song.ini
notes.chart
)tier_band
, tier_guitar
, tier_bass
, tier_rhythm
, tier_drums
, tier_vocals
, tier_keys
, tier_guitarghl
, tier_bassghl
: Tingkat kesulitan seperti yang didefinisikan dalam song.ini
dengan entri diff_*
(biasanya angka dari 0 hingga 6). Misalnya, tier_guitar=lt3
akan mencari tingkatan yang kurang dari 3, tier_guitar=gt3
akan mencari tingkatan yang lebih tinggi dari 3.diff_guitar
, diff_bass
, diff_rhythm
, diff_drums
, diff_vocals
, diff_keys
, diff_guitarghl
, diff_bassghl
: Bagian tingkat kesulitan mana (mudah, sedang, keras, ahli) yang tersedia. Ini adalah bitmap dengan 4 lebar (1 bit per bagian tingkat kesulitan): 1
mudah, 2
sedang, 4
sulit, 8
ahli. Tambahkan angka untuk membuat kueri multi-bagian.hasForced
, hasOpen
, hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
: cukup jelas, 0
untuk menanyakan ketidakhadiran, 1
untuk menanyakan kehadiran.from
(Nomor): Offset dari mana 20 grafik diambil /api/search
, api/random
dan /api/latest
keduanya menghasilkan JSON dalam format berikut:
roles
(Objek): Kunci adalah nama piagam huruf kecil, nilai adalah "keterangan" mereka, alias apa yang akan muncul ketika mereka diarahkan.songs
(Array of Objects): entitas lagu yang mengandung:name
, artist
, album
, genre
, charter
, year
hasForced
, hasOpen
(Objek berisi bagian yang memilikinya), hasTap
, hasSections
, hasStarPower
, hasSoloSections
, hasStems
, hasVideo
, isPack
, is120
(benar jika bagan hanya memiliki satu penanda BPM dan nilainya 120)length
, effectiveLength
(Angka, dalam detik; panjang efektif adalah durasi antara nada pertama dan terakhir)tier_*
entri (tingkat kesulitan song.ini
)diff_*
entri (bitmap bagian kesulitan, lihat sedikit di atas untuk penjelasan)uploadedAt
, lastModified
("terakhir diubah" adalah stempel waktu modifikasi file terbaru. Nilainya null
jika tidak dapat ditemukan (misalnya folder dan bagan GDrive yang tidak dapat dipindai hanya memiliki uploadedAt
))hashes
: checksum MD5file
: MD5 dari grafik itu sendirinoteCounts
: Berapa banyak nada dalam satu bagian, per bagian tingkat kesulitanlink
: Tautan unduhan. Itu mengarah kedirectLinks
(eksperimental): Tautan ini memungkinkan Anda memicu pengunduhan secara langsung jika Anda mengakses/membuatnya.sources
(Array): Dari mana ia diambil (Anda pasti bisa membantu jika Anda mau!)
Peta jalan saya sebenarnya sudah cukup besar untuk menjamin halaman proyek GitHub-nya sendiri. Coba lihat!