+function buildVideosRedundancy (objs: VideosRedundancy[]): VideosRedundancy[] {
+ if (!objs) return []
+
+ return objs.map(obj => Object.assign(obj, { size: bytes.parse(obj.size) }))
+}
+
+function buildLanguages () {
+ const iso639 = require('iso-639-3')
+
+ const languages: { [ id: string ]: string } = {}
+
+ const additionalLanguages = {
+ 'sgn': true, // Sign languages (macro language)
+ 'ase': true, // American sign language
+ 'sdl': true, // Arabian sign language
+ 'bfi': true, // British sign language
+ 'bzs': true, // Brazilian sign language
+ 'csl': true, // Chinese sign language
+ 'cse': true, // Czech sign language
+ 'dsl': true, // Danish sign language
+ 'fsl': true, // French sign language
+ 'gsg': true, // German sign language
+ 'pks': true, // Pakistan sign language
+ 'jsl': true, // Japanese sign language
+ 'sfs': true, // South African sign language
+ 'swl': true, // Swedish sign language
+ 'rsl': true, // Russian sign language: true
+
+ 'epo': true, // Esperanto
+ 'tlh': true, // Klingon
+ 'jbo': true, // Lojban
+ 'avk': true // Kotava
+ }
+
+ // Only add ISO639-1 languages and some sign languages (ISO639-3)
+ iso639
+ .filter(l => {
+ return (l.iso6391 !== null && l.type === 'living') ||
+ additionalLanguages[l.iso6393] === true
+ })
+ .forEach(l => languages[l.iso6391 || l.iso6393] = l.name)
+
+ // Override Occitan label
+ languages['oc'] = 'Occitan'
+
+ return languages
+}
+