diff --git a/public/list.html b/public/list.html
index bef0d8b..55ef341 100644
--- a/public/list.html
+++ b/public/list.html
@@ -23,9 +23,8 @@
let charts = document.createElement('ul');
for (const chart of doc.charts) {
- let l = document.createElement('li');
- l.innerText = `${chart.difficulty} ${chart.rating} - ${chart.name}\n` +
- `${chart.steps} steps, ${chart.mines} mines, ${chart.jumps} jumps, ${chart.hands} hands, ${chart.holds} holds, ${chart.rolls} rolls`
+ let l = document.createElement('li');
+ l.innerText = `${chart.difficulty} ${chart.rating} - ${chart.name}`
charts.insertAdjacentElement('beforeend', l);
}
el.insertAdjacentElement('beforeend', charts);
diff --git a/src/lib/smparse.ts b/src/lib/smparse.ts
index 6e955ba..6736c6e 100644
--- a/src/lib/smparse.ts
+++ b/src/lib/smparse.ts
@@ -1,4 +1,6 @@
export function parseSM(data: string) {
+ data = data.replace(/[\n\r]/g,'');
+
// steps
const difficulties = [];
const steps = data.split('#NOTES:');
@@ -16,25 +18,11 @@ export function parseSM(data: string) {
diff.rating = Number(stepsSplit[3]);
diff.radarvalues = stepsSplit[4].split(',').map(v => Number(v));
- const chart = stepsSplit[5];
- diff.rawChart = chart;
-
- diff.steps = chart.split(/[124]/g).length - 1;
- diff.mines = chart.split('M').length - 1;
- diff.jumps = chart.split(/[124]0{0,2}[124]/g).length - 1;
- diff.hands = chart.split(/[124]0{0,1}[124]0{0,1}[124]/g).length - 1;
- diff.holds = chart.split('2').length - 1;
- diff.rolls = chart.split('4').length - 1;
-
- diff.steps -= diff.jumps; // jumps are counted as 1 step
-
difficulties.push(diff);
}
}
}
- data = data.replace(/[\n\r]/g,'');
-
// metadata
const lines = data.split(';').filter(l => l.startsWith('#'));
const obj: any = {};
diff --git a/src/schema.ts b/src/schema.ts
index e902248..b7ea0d6 100644
--- a/src/schema.ts
+++ b/src/schema.ts
@@ -1,118 +1,39 @@
-/* eslint-disable no-unused-vars */
import * as mongoose from 'mongoose';
const Schema = mongoose.Schema;
-export enum SMVersion {
- OPENITG,
- FUCKEXE,
- NOTITG_V1,
- NOTITG_V2,
- NOTITG_V3,
- NOTITG_V3_1,
- NOTITG_V4,
- NOTITG_V4_0_1,
- STEPMANIA_3_95,
- STEPMANIA_5_0,
- STEPMANIA_5_1,
- STEPMANIA_5_2,
- STEPMANIA_5_3,
-}
-
const Sample = new Schema({
start: {type: Number, default: 0},
length: {type: Number, default: 0}
});
-const UserRating = new Schema({
- rating: {type: Number, default: 0},
- createdAt: Date,
- user: {type: String, default: '00000000-0000-4000-a000-000000000000'}
-});
-
const Chart = new Schema({
type: {type: String, default: 'dance-single'},
name: {type: String, default: ''},
difficulty: {type: String, default: 'Challenge'},
- radarvalues: [Number],
-
rating: {type: Number, default: 0},
- ratingsVote: {type: [UserRating], default: []},
-
- spoilered: {type: Boolean, default: false},
- hidden: {type: Boolean, default: false},
-
- steps: {type: Number, default: 0},
- mines: {type: Number, default: 0},
- jumps: {type: Number, default: 0},
- hands: {type: Number, default: 0},
- holds: {type: Number, default: 0},
- rolls: {type: Number, default: 0},
-});
-
-const Comment = new Schema({
- author: {type: String, default: '00000000-0000-4000-a000-000000000000'},
- createdAt: Date,
- content: {type: String, default: ''}
+ radarvalues: [Number]
});
const FileSchema = new Schema({
- id: {type: Number, default: 0},
-
title: {type: String, default: 'unknown'},
titleTranslit: String,
artist: {type: String, default: 'unknown'},
artistTranslit: String,
subtitle: String,
subtitleTranslit: String,
-
credit: String,
uploader: {type: String, default: '00000000-0000-4000-a000-000000000000'},
-
sample: Sample,
bpms: {type: Object, default: {'0': 0}},
-
- charts: {type: [Chart], default: []},
-
- description: {type: String, default: ''},
- createdAt: Date,
- smVersion: {type: Number, default: 0}, // see SMVersion enum
- ytLink: String,
- customLink: String,
- hidden: {type: Boolean, default: false},
-
- comments: {type: [Comment], default: []},
+ charts: [Chart]
});
export const File = mongoose.model('File', FileSchema);
const UserSchema = new Schema({ // this is pretty much just a discord user lol
- id: String, // discord id, cus longass number
- createdAt: Number,
-
- // caching
- username: {type: String, default: 'User'},
- discriminator: {type: String, default: '0000'},
- avatar: String,
-
- // used internally
- uuid: {type: String, default: '00000000-0000-4000-a000-000000000000'},
-
- approvedUpload: {type: Boolean, default: false},
- approvedRate: {type: Boolean, default: false},
- approvedComment: {type: Boolean, default: false},
+ id: String, // cus longass number
+ approved: Boolean
});
-export const User = mongoose.model('User', UserSchema);
-
-const PackSchema = new Schema({
- author: {type: String, default: '00000000-0000-4000-a000-000000000000'},
- files: {type: [Number], default: []}, // ids
- name: {type: String, default: 'Pack'},
- description: {type: String, default: ''},
- createdAt: Date,
-
- hidden: {type: Boolean, default: false},
-});
-
-export const Pack = mongoose.model('Pack', PackSchema);
\ No newline at end of file
+export const User = mongoose.model('User', UserSchema);
\ No newline at end of file
diff --git a/src/upload.ts b/src/upload.ts
index 98006c6..e916f9f 100644
--- a/src/upload.ts
+++ b/src/upload.ts
@@ -2,6 +2,7 @@ import { tmpdir } from 'os';
import * as fs from 'fs';
const StreamZip = require('node-stream-zip');
+import { returnStatic } from './lib/util';
import { parseSM } from './lib/smparse';
import { File } from './schema';