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