mirror of
https://github.com/jiojciojsioe3/a3cjroijsiojiorj.git
synced 2024-11-15 15:31:51 +08:00
Fix categories for imported songs
This commit is contained in:
parent
962adb1dc7
commit
6d0d5e1632
@ -40,15 +40,19 @@
|
||||
}
|
||||
|
||||
this.categoryAliases = {}
|
||||
|
||||
assets.categories.forEach(cat => {
|
||||
this.categoryAliases[cat.title.toLowerCase()] = cat.title
|
||||
if(cat.aliases != null){
|
||||
this.categoryAliases[cat.title.toLowerCase()] = cat.id
|
||||
if(cat.aliases){
|
||||
cat.aliases.forEach(alias => {
|
||||
this.categoryAliases[alias.toLowerCase()] = cat.title
|
||||
});
|
||||
this.categoryAliases[alias.toLowerCase()] = cat.id
|
||||
})
|
||||
}
|
||||
});
|
||||
if(cat.title_lang){
|
||||
for(var i in cat.title_lang){
|
||||
this.categoryAliases[cat.title_lang[i].toLowerCase()] = cat.id
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
this.assetSelectors = {
|
||||
"bg-pattern-1": ".pattern-bg",
|
||||
@ -130,7 +134,11 @@
|
||||
var equalsPos = line.indexOf("=")
|
||||
if(equalsPos !== -1 && line.slice(0, equalsPos).trim() === "genrename"){
|
||||
var value = line.slice(equalsPos + 1).trim()
|
||||
category = this.categoryAliases[value] || data[i].trim().slice(equalsPos + 1).trim()
|
||||
if(value.toLowerCase() in this.categoryAliases){
|
||||
category = value
|
||||
}else{
|
||||
category = data[i].trim().slice(equalsPos + 1).trim()
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
@ -140,12 +148,16 @@
|
||||
var line = data[i].trim().toLowerCase()
|
||||
if(line.startsWith("#title:")){
|
||||
var value = line.slice(7).trim()
|
||||
if(value in this.categoryAliases){
|
||||
category = this.categoryAliases[value]
|
||||
if(value.toLowerCase() in this.categoryAliases){
|
||||
category = value
|
||||
}
|
||||
}else if(line.startsWith("#genre:")){
|
||||
var value = line.slice(7).trim()
|
||||
category = this.categoryAliases[value] || data[i].trim().slice(7).trim()
|
||||
if(value.toLowerCase() in this.categoryAliases){
|
||||
category = value
|
||||
}else{
|
||||
category = data[i].trim().slice(7).trim()
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
@ -169,7 +181,11 @@
|
||||
var filesLoop = fileObj => {
|
||||
var tjaPath = fileObj.file.webkitRelativePath.toLowerCase().slice(0, fileObj.file.name.length * -1)
|
||||
if(tjaPath.startsWith(metaPath) && (!("categoryLevel" in fileObj) || fileObj.categoryLevel < level)){
|
||||
if(category.toLowerCase() in this.categoryAliases){
|
||||
fileObj.category_id = this.categoryAliases[category.toLowerCase()]
|
||||
}else{
|
||||
fileObj.category = category
|
||||
}
|
||||
fileObj.categoryLevel = level
|
||||
}
|
||||
}
|
||||
@ -189,6 +205,7 @@
|
||||
var file = fileObj.file
|
||||
var index = fileObj.index
|
||||
var category = fileObj.category
|
||||
var category_id = fileObj.category_id
|
||||
var reader = new FileReader()
|
||||
var promise = pageEvents.load(reader).then(event => {
|
||||
var data = event.target.result.replace(/\0/g, "").split("\n")
|
||||
@ -226,7 +243,11 @@
|
||||
songObj.music = this.otherFiles[dir + meta.wave.toLowerCase()] || songObj.music
|
||||
}
|
||||
if(meta.genre){
|
||||
songObj.category = this.categoryAliases[meta.genre.toLowerCase()] || meta.genre
|
||||
if(meta.genre.toLowerCase() in this.categoryAliases){
|
||||
songObj.category_id = this.categoryAliases[meta.genre.toLowerCase()]
|
||||
}else{
|
||||
songObj.category = meta.genre
|
||||
}
|
||||
}
|
||||
if(meta.taikowebskin){
|
||||
songObj.song_skin = this.getSkin(dir, meta.taikowebskin)
|
||||
@ -290,8 +311,15 @@
|
||||
if(subtitleLangAdded){
|
||||
songObj.subtitle_lang = subtitleLang
|
||||
}
|
||||
if(!songObj.category){
|
||||
songObj.category = category || this.getCategory(file, [songTitle || songObj.title, file.name.slice(0, file.name.lastIndexOf("."))])
|
||||
if(!songObj.category_id && !songObj.category){
|
||||
if(!category && category_id === undefined){
|
||||
songObj.category_id = this.getCategory(file, [songTitle || songObj.title, file.name.slice(0, file.name.lastIndexOf("."))])
|
||||
}else if(category){
|
||||
songObj.category = category
|
||||
songObj.orginalCategory = category
|
||||
}else{
|
||||
songObj.category_id = category_id
|
||||
}
|
||||
}
|
||||
if(coursesAdded){
|
||||
this.songs[index] = songObj
|
||||
@ -312,6 +340,7 @@
|
||||
var file = fileObj.file
|
||||
var index = fileObj.index
|
||||
var category = fileObj.category
|
||||
var category_id = fileObj.category_id
|
||||
var reader = new FileReader()
|
||||
var promise = pageEvents.load(reader).then(event => {
|
||||
var data = event.target.result.replace(/\0/g, "").split("\n")
|
||||
@ -352,7 +381,14 @@
|
||||
songObj.title = filename
|
||||
}
|
||||
this.songs[index] = songObj
|
||||
songObj.category = category || this.getCategory(file, [osu.metadata.TitleUnicode, osu.metadata.Title, file.name.slice(0, file.name.lastIndexOf("."))])
|
||||
if(!category && category_id === undefined){
|
||||
songObj.category_id = this.getCategory(file, [osu.metadata.TitleUnicode, osu.metadata.Title, file.name.slice(0, file.name.lastIndexOf("."))])
|
||||
}else if(category){
|
||||
songObj.category = category
|
||||
songObj.orginalCategory = category
|
||||
}else{
|
||||
songObj.category_id = category_id
|
||||
}
|
||||
var hash = md5.base64(event.target.result).slice(0, -2)
|
||||
songObj.hash = hash
|
||||
scoreStorage.songTitles[songObj.title] = hash
|
||||
|
@ -56,6 +56,7 @@ class SongSelect{
|
||||
outline: "#d36aa2"
|
||||
},
|
||||
"default": {
|
||||
sort: null,
|
||||
background: "#ececec",
|
||||
border: ["#fbfbfb", "#8b8b8b"],
|
||||
outline: "#656565",
|
||||
@ -63,16 +64,17 @@ class SongSelect{
|
||||
}
|
||||
}
|
||||
|
||||
for(let category of assets.categories){
|
||||
var songSkinLength = Object.keys(this.songSkin).length
|
||||
for(var i in assets.categories){
|
||||
var category = assets.categories[i]
|
||||
if(!this.songSkin[category.title] && category.songSkin){
|
||||
if(!category.songSkin.sort == null){
|
||||
category.songSkin.sort = Object.keys(this.songSkin).length + 1
|
||||
if(category.songSkin.sort === null){
|
||||
category.songSkin.sort = songSkinLength + 1
|
||||
}
|
||||
this.songSkin[category.title] = category.songSkin
|
||||
}
|
||||
}
|
||||
|
||||
this.songSkin['default'].sort= Object.keys(this.songSkin).length + 1
|
||||
this.songSkin["default"].sort = songSkinLength + 1
|
||||
|
||||
this.font = strings.font
|
||||
|
||||
@ -80,16 +82,26 @@ class SongSelect{
|
||||
for(let song of assets.songs){
|
||||
var title = this.getLocalTitle(song.title, song.title_lang)
|
||||
var subtitle = this.getLocalTitle(title === song.title ? song.subtitle : "", song.subtitle_lang)
|
||||
let category = assets.categories.find(cat=>cat.id == song.category_id)
|
||||
var skin = null
|
||||
var categoryName = ""
|
||||
var originalCategory = ""
|
||||
if(song.category_id !== null && song.category_id !== undefined){
|
||||
var category = assets.categories.find(cat => cat.id === song.category_id)
|
||||
var categoryName = this.getLocalTitle(category.title, category.title_lang)
|
||||
var originalCategory = category.title
|
||||
var skin = this.songSkin[category.title]
|
||||
}else if(song.category){
|
||||
var categoryName = song.category
|
||||
var originalCategory = song.category
|
||||
}
|
||||
this.songs.push({
|
||||
id: song.id,
|
||||
title: title,
|
||||
originalTitle: song.title,
|
||||
subtitle: subtitle,
|
||||
skin: song.category in this.songSkin ? this.songSkin[song.category] : this.songSkin.default,
|
||||
skin: skin || this.songSkin.default,
|
||||
courses: song.courses,
|
||||
originalCategory: song.category,
|
||||
originalCategory: originalCategory,
|
||||
category: categoryName,
|
||||
category_id: song.category_id,
|
||||
preview: song.preview || 0,
|
||||
@ -108,14 +120,14 @@ class SongSelect{
|
||||
this.songs.sort((a, b) => {
|
||||
var catA = a.originalCategory in this.songSkin ? this.songSkin[a.originalCategory] : this.songSkin.default
|
||||
var catB = b.originalCategory in this.songSkin ? this.songSkin[b.originalCategory] : this.songSkin.default
|
||||
if(catA.sort === catB.sort){
|
||||
if(a.order === b.order){
|
||||
return a.id > b.id ? 1 : -1
|
||||
}else{
|
||||
return a.order > b.order ? 1 : -1
|
||||
}
|
||||
}else{
|
||||
if(catA.sort !== catB.sort){
|
||||
return catA.sort > catB.sort ? 1 : -1
|
||||
}else if(a.originalCategory !== b.originalCategory){
|
||||
return a.originalCategory > b.originalCategory ? 1 : -1
|
||||
}else if(a.order !== b.order){
|
||||
return a.order > b.order ? 1 : -1
|
||||
}else{
|
||||
return a.id > b.id ? 1 : -1
|
||||
}
|
||||
})
|
||||
this.songs.push({
|
||||
|
Loading…
Reference in New Issue
Block a user