feat: add improve name button
This commit is contained in:
@ -18,6 +18,29 @@ const CorrectionType = {
|
||||
FIELD: "field"
|
||||
}
|
||||
|
||||
const WORDS = {
|
||||
forced: {
|
||||
default: "Forced",
|
||||
fre: "Forcés",
|
||||
"fre-ca": "Forcés"
|
||||
},
|
||||
full: {
|
||||
default: "Full",
|
||||
fre: "Complets",
|
||||
"fre-ca": "Complets"
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
function containsWord(parts, word) {
|
||||
return Object.values(WORDS[word]).some(w => parts.includes(w))
|
||||
}
|
||||
|
||||
function getWord(word, lang) {
|
||||
const words = WORDS[word]
|
||||
return words[lang] ?? words.default
|
||||
}
|
||||
|
||||
class MismatchCorrection {
|
||||
/**
|
||||
*
|
||||
@ -183,8 +206,13 @@ export default class IntegrityManager {
|
||||
case "subtitle":
|
||||
const stLang = findLanguage(lower)
|
||||
if (stLang !== null) {fields.language = stLang}
|
||||
const forced = parts.includes("forced")
|
||||
if (forced) {fields.flags.forced = forced}
|
||||
const isForced = containsWord(parts, "forced")
|
||||
const isFull = containsWord(parts, "full")
|
||||
if (isForced) {
|
||||
fields.flags.forced = true
|
||||
} else if (isFull) {
|
||||
fields.flags.forced = false
|
||||
}
|
||||
const sdh = parts.includes("sdh")
|
||||
if (sdh) {fields.flags.hearing_impaired = sdh}
|
||||
|
||||
@ -261,20 +289,23 @@ export default class IntegrityManager {
|
||||
case "audio":
|
||||
if (fields.flags.original) {
|
||||
name += " VO"
|
||||
} else if (fields.language === "fr") {
|
||||
}/* else if (fields.language === "fre") {
|
||||
name += " VFF"
|
||||
} else if (fields.language === "fr-ca") {
|
||||
name =+ " VFQ"
|
||||
} else if (fields.language === "fre-ca") {
|
||||
name += " VFQ"
|
||||
}*/
|
||||
if (fields.flags.visual_impaired) {
|
||||
name += " AD"
|
||||
}
|
||||
if (fields.channels) {
|
||||
name += " : " + fields.channels
|
||||
name += " / " + fields.channels
|
||||
}
|
||||
break
|
||||
case "subtitle":
|
||||
if (fields.flags.forced) {
|
||||
name += " Forced"
|
||||
name += " " + getWord("forced", fields.language)
|
||||
} else {
|
||||
name += " Full"
|
||||
name += " " + getWord("full", fields.language)
|
||||
}
|
||||
if (fields.flags.hearing_impaired) {
|
||||
name += " SDH"
|
||||
@ -314,4 +345,20 @@ export default class IntegrityManager {
|
||||
}
|
||||
return input
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Track} track
|
||||
*/
|
||||
improveName(track) {
|
||||
let nameFields = this.parseName(track.table.type, track.fields["name"])
|
||||
const keys = Object.keys(flattenObj(nameFields))
|
||||
Object.entries(flattenObj(track.fields)).forEach(([key, val]) => {
|
||||
if (!keys.includes(key)) {
|
||||
updateObjectFromJoinedKey(nameFields, key, val)
|
||||
}
|
||||
})
|
||||
const name = this.reconstructName(track.table.type, nameFields)
|
||||
track.editValue("name", name)
|
||||
}
|
||||
}
|
@ -19,8 +19,20 @@ export class Track {
|
||||
this.row.dataset.i = this.idx
|
||||
this.table.fields.forEach(field => {
|
||||
const td = this.row.insertCell(-1)
|
||||
const input = this.makeInput(field, this.fields[field.key], this.idx)
|
||||
const input = this.makeInput(field, this.fields[field.key])
|
||||
td.appendChild(input)
|
||||
|
||||
if (field.key === "name") {
|
||||
const btn = document.getElementById("improve-btn").cloneNode(true)
|
||||
btn.id = null
|
||||
btn.classList.remove("template")
|
||||
btn.addEventListener("click", () => {
|
||||
this.improveName()
|
||||
btn.classList.add("clicked")
|
||||
setTimeout(() => btn.classList.remove("clicked"), 1000)
|
||||
})
|
||||
td.appendChild(btn)
|
||||
}
|
||||
})
|
||||
return this.row
|
||||
}
|
||||
@ -111,6 +123,10 @@ export class Track {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
improveName() {
|
||||
this.table.editor.integrity_mgr.improveName(this)
|
||||
}
|
||||
}
|
||||
|
||||
export default class TracksTable {
|
||||
|
@ -29,22 +29,22 @@ export const LANGUAGES = {
|
||||
"fre": {
|
||||
display: "Français FR",
|
||||
code: "fr",
|
||||
aliases: ["fr", "fre", "fra", "french", "francais", "français", "vf", "vff", "france"]
|
||||
aliases: ["fr", "fra", "french", "francais", "français", "vf", "vff", "france"]
|
||||
},
|
||||
"eng": {
|
||||
display: "English",
|
||||
code: "gb",
|
||||
aliases: ["en", "eng", "ang", "english", "anglais", "uk", "gb", "usa", "british", "american", "amérique", "amerique", "angleterre", "royaume-uni"]
|
||||
aliases: ["en", "ang", "english", "anglais", "uk", "gb", "usa", "british", "american", "amérique", "amerique", "angleterre", "royaume-uni"]
|
||||
},
|
||||
"deu": {
|
||||
display: "Deutsch",
|
||||
code: "de",
|
||||
aliases: ["de", "deu", "ger", "german", "allemand", "deutsch", "germany", "allemagne"]
|
||||
aliases: ["de", "ger", "german", "allemand", "deutsch", "germany", "allemagne"]
|
||||
},
|
||||
"kor": {
|
||||
display: "Korean",
|
||||
code: "kr",
|
||||
aliases: ["ko", "kr", "kor", "cor", "korean", "coreen", "coréen", "corée", "coree", "korea"]
|
||||
aliases: ["ko", "kr", "cor", "korean", "coreen", "coréen", "corée", "coree", "korea"]
|
||||
},
|
||||
"jpn": {
|
||||
display: "Japanese",
|
||||
@ -54,7 +54,7 @@ export const LANGUAGES = {
|
||||
"tur": {
|
||||
display: "Turkish",
|
||||
code: "tr",
|
||||
aliases: ["tu", "tr", "tur", "tür", "turkish", "turc", "turquie"]
|
||||
aliases: ["tu", "tr", "tür", "turkish", "turc", "turquie"]
|
||||
},
|
||||
"und": {
|
||||
display: "Undefined",
|
||||
@ -63,6 +63,10 @@ export const LANGUAGES = {
|
||||
}
|
||||
}
|
||||
|
||||
export function getLanguageAliases(langTag) {
|
||||
return (langTag === "und" ? [] : [langTag]).concat(LANGUAGES[langTag].aliases)
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to find a language name in the given string
|
||||
* @param {string} value The string in which to search for a language
|
||||
@ -70,7 +74,7 @@ export const LANGUAGES = {
|
||||
*/
|
||||
export function findLanguage(value) {
|
||||
for (const lang in LANGUAGES) {
|
||||
const aliases = LANGUAGES[lang].aliases
|
||||
const aliases = getLanguageAliases(lang)
|
||||
const matches = aliases.map(a => {
|
||||
return new RegExp("\\b" + a + "\\b").test(value)
|
||||
})
|
||||
@ -82,7 +86,7 @@ export function findLanguage(value) {
|
||||
}
|
||||
|
||||
export function isLanguageTagAlias(langTag, value) {
|
||||
return LANGUAGES[langTag].aliases.includes(value)
|
||||
return getLanguageAliases(langTag).includes(value)
|
||||
}
|
||||
|
||||
export function updateObjectFromJoinedKey(obj, joinedKey, value) {
|
||||
|
Reference in New Issue
Block a user