Refactor subtitle loading function

This commit is contained in:
Harvey Zack committed 2023-11-24 01:02:00 +08:00
1 parent 7ba3098212
commit d579e7e86d
3 files changed
+64 -12

No files matched your search

@@ -158,7 +158,7 @@ function unescape(str) {
const reg = new RegExp(`(${Object.keys(map).join("|")})`, "g");
return str.replace(reg, (tag)=>map[tag] || tag);
}
async function loadSubtitleAsVtt(option, art) {
async function loadVtt(option, art) {
const { getExt, srtToVtt, assToVtt } = art.constructor.utils;
const response = await fetch(option.url);
const buffer = await response.arrayBuffer();
@@ -193,14 +193,16 @@ function mergeTrees(trees, subtitles) {
}
return result;
}
const all = "_ALL_";
function artplayerPluginMultipleSubtitles({ subtitles, onMerge = ()=>null }) {
return async (art)=>{
const vtts = await Promise.all(subtitles.map((option)=>loadSubtitleAsVtt(option, art)));
const parser = new (0, _parser.WebVTTParser)();
const trees = vtts.map((vtt)=>parser.parse(vtt, "metadata"));
const seri = new (0, _parser.WebVTTSerializer)();
const vtts = await Promise.all(subtitles.map((option)=>loadVtt(option, art)));
const trees = vtts.map((vtt)=>parser.parse(vtt, "metadata"));
const tree = onMerge(trees, subtitles) || mergeTrees(trees, subtitles);
if (tree?.cues?.length) {
function setTree(tree) {
if (!tree?.cues) return;
const vtt = seri.serialize(tree.cues);
const url = URL.createObjectURL(new Blob([
vtt
@@ -214,12 +216,34 @@ function artplayerPluginMultipleSubtitles({ subtitles, onMerge = ()=>null }) {
type: "vtt",
onVttLoad: unescape
});
} else throw new Error("No subtitle found");
}
setTree(tree);
let _track = all;
return {
name: "multipleSubtitles",
get track () {
return _track;
},
set track (name){
if (name === all || name === "") {
_track = all;
setTree(tree);
} else {
const index = subtitles.findIndex((item)=>item.name === name);
if (index === -1) throw new Error(`The subtitle "${name}" is not found`);
else {
_track = name;
setTree(trees[index]);
}
}
}
};
};
}
artplayerPluginMultipleSubtitles.env = "development";
artplayerPluginMultipleSubtitles.version = "1.0.0";
artplayerPluginMultipleSubtitles.build = "2023-11-24 00:15:21";
artplayerPluginMultipleSubtitles.all = all;
artplayerPluginMultipleSubtitles.WebVTTParser = (0, _parser.WebVTTParser);
artplayerPluginMultipleSubtitles.WebVTTSerializer = (0, _parser.WebVTTSerializer);
if (typeof window !== "undefined") window["artplayerPluginMultipleSubtitles"] = artplayerPluginMultipleSubtitles;
@@ -1 +1 @@
{"mappings":"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 truncated
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAgEwB;AAhExB;AAEA,SAAS,SAAS,GAAG;IACjB,MAAM,MAAM;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,UAAU;IACd;IACA,MAAM,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;IAC1D,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAQ,GAAG,CAAC,IAAI,IAAI;AACjD;AAEA,eAAe,QAAQ,MAAM,EAAE,GAAG;IAC9B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,WAAW,CAAC,KAAK;IAC5D,MAAM,WAAW,MAAM,MAAM,OAAO,GAAG;IACvC,MAAM,SAAS,MAAM,SAAS,WAAW;IACzC,MAAM,UAAU,IAAI,YAAY,OAAO,QAAQ,IAAI;IACnD,MAAM,OAAO,QAAQ,MAAM,CAAC;IAC5B,OAAQ,OAAO,IAAI,IAAI,OAAO,OAAO,GAAG;QACpC,KAAK;YACD,OAAO,SAAS;QAEpB,KAAK;YACD,OAAO,SAAS;QAEpB,KAAK;YACD,OAAO;QAEX;YACI,OAAO;IACf;AACJ;AAEA,SAAS,WAAW,KAAK,EAAE,SAAS;IAChC,MAAM,SAAS,IAAI,CAAA,GAAA,oBAAY,AAAD;IAC9B,MAAM,SAAS,OAAO,KAAK,CAAC,IAAI;IAEhC,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;QACnC,MAAM,OAAO,KAAK,CAAC,EAAE;QACrB,MAAM,SAAS,SAAS,CAAC,EAAE;QAE3B,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAK;YACvC,MAAM,MAAM,KAAK,IAAI,CAAC,EAAE;YACxB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAK;gBAC/C,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACrC,SAAS,KAAK,GAAG,CAAC,yBAAyB,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,SAAS,KAAK,CAAC,MAAM,CAAC;YACvF;QACJ;QAEA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,GACvB,OAAO,IAAI,GAAG,KAAK,IAAI;aAEvB,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,IACpC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAK,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM,YAAY,EAAE;IAGpF;IAEA,OAAO;AACX;AAEA,MAAM,MAAM;AACG,SAAS,iCAAiC,EAAE,SAAS,EAAE,UAAU,IAAM,IAAI,EAAE;IACxF,OAAO,OAAO;QACV,MAAM,SAAS,IAAI,CAAA,GAAA,oBAAY,AAAD;QAC9B,MAAM,OAAO,IAAI,CAAA,GAAA,wBAAgB,AAAD;QAEhC,MAAM,OAAO,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,SAAW,QAAQ,QAAQ;QACzE,MAAM,QAAQ,KAAK,GAAG,CAAC,CAAC,MAAQ,OAAO,KAAK,CAAC,KAAK;QAClD,MAAM,OAAO,QAAQ,OAAO,cAAc,WAAW,OAAO;QAE5D,SAAS,QAAQ,IAAI;YACjB,IAAI,CAAC,MAAM,MAAM;YACjB,MAAM,MAAM,KAAK,SAAS,CAAC,KAAK,IAAI;YACpC,MAAM,MAAM,IAAI,eAAe,CAAC,IAAI,KAAK;gBAAC;aAAI,EAAE;gBAAE,MAAM;YAAW;YACnE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;YAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC;gBACd,GAAG,IAAI,MAAM,CAAC,QAAQ;gBACtB;gBACA,MAAM;gBACN,WAAW;YACf;QACJ;QAEA,QAAQ;QACR,IAAI,SAAS;QAEb,OAAO;YACH,MAAM;YACN,IAAI,SAAQ;gBACR,OAAO;YACX;YACA,IAAI,OAAM,KAAM;gBACZ,IAAI,SAAS,OAAO,SAAS,IAAI;oBAC7B,SAAS;oBACT,QAAQ;gBACZ,OAAO;oBACH,MAAM,QAAQ,UAAU,SAAS,CAAC,CAAC,OAAS,KAAK,IAAI,KAAK;oBAC1D,IAAI,UAAU,IACV,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,cAAc,CAAC;yBAClD;wBACH,SAAS;wBACT,QAAQ,KAAK,CAAC,MAAM;oBACxB;gBACJ;YACJ;QACJ;IACJ;AACJ;AAEA,iCAAiC,GAAG;AACpC,iCAAiC,OAAO;AACxC,iCAAiC,KAAK;AAEtC,iCAAiC,GAAG,GAAG;AACvC,iCAAiC,YAAY,GAAG,CAAA,GAAA,oBAAY,AAAD;AAC3D,iCAAiC,gBAAgB,GAAG,CAAA,GAAA,wBAAgB,AAAD;AAEnE,IAAI,OAAO,WAAW,aAClB,MAAM,CAAC,mCAAmC,GAAG;;;ACzHjD,mDAAmD;AACnD,oDAAoD;AAEpD,2EAA2E;AAE3E,kBAAkB,GACjB,CAAA;IACG,IAAI,qBAAqB;QACrB,WAAW;QACX,aAAa;QACb,cAAc;QACd,WAAW;QACX,cAAc;QACd,eAAe;QACf,MAAM;QACN,WAAW;IACf;IAEA,IAAI,eAAe,SAAU,QAAQ;QACjC,IAAI,CAAC,UACD,WAAW;YACP,QAAQ;YACR,OAAO;YACP,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,SAAS;QACb;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,SAAU,KAAK,EAAE,IAAI;YAC9B,mCAAmC;YACnC,QAAQ,MAAM,OAAO,CAAC,OAAO;YAC7B,IAAI,UAAU,cACV,YAAY,KAAK,GAAG,IACpB,UAAU,GACV,QAAQ,MAAM,KAAK,CAAC,UACpB,mBAAmB,OACnB,SAAS,EAAE,EACX,OAAO,EAAE,EACT,SAAS,EAAE;YACf,SAAS,IAAI,OAAO,EAAE,GAAG;gBACrB,OAAO,IAAI,CAAC;oBAAE,SAAS;oBAAS,MAAM,UAAU;oBAAG,KAAK;gBAAI;YAChE;YAEA,IAAI,OAAO,KAAK,CAAC,QAAQ,EACrB,aAAa,KAAK,MAAM,EACxB,YAAY,UACZ,MAAM,GACN,mBAAmB,UAAU,MAAM;YAEvC,mBAAmB,GACnB,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU;gBACtB,MAAM;gBACN,oBAAoB;YACxB;YACA,aAAa,GACb,IACI,aAAa,oBACb,KAAK,OAAO,CAAC,eAAe,IAAI,OAC/B,aAAa,oBAAoB,IAAI,CAAC,iBAAiB,KAAK,OAAO,IAAI,CAAC,iBAAiB,KAAK,KAE/F,IAAI;YAGR;YAEA,UAAU,GACV,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;gBACxD,IAAI;gBACJ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;oBACrC,mBAAmB;oBACnB;gBACJ;gBACA;YACJ;YAEA,YAAY,GACZ,MAAO,KAAK,CAAC,QAAQ,IAAI,UAAW;gBAChC,IAAI;gBACJ,MAAO,CAAC,oBAAoB,KAAK,CAAC,QAAQ,IAAI,GAC1C;gBAEJ,IAAI,CAAC,oBAAoB,KAAK,CAAC,QAAQ,IAAI,WAAW;gBAEtD,gBAAgB,GAChB,MAAM,OAAO,MAAM,CAAC,CAAC,GAAG,oBAAoB;oBACxC,IAAI;oBACJ,WAAW;oBACX,SAAS;oBACT,aAAa;oBACb,WAAW;oBACX,aAAa;oBACb,cAAc;oBACd,WAAW;oBACX,cAAc;oBACd,eAAe;oBACf,MAAM;oBACN,WAAW;oBACX,MAAM;oBACN,MAAM;gBACV;gBAEA,IAAI,eAAe;gBAEnB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;oBACrC,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ;oBAEvB;;;WAGT,GACS,IAAI,iBAAiB,IAAI,CAAC,IAAI,EAAE,GAAG;wBAC/B,8BAA8B;wBAC9B;wBACA,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;4BACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI;4BAC7C;wBACJ;wBACA;oBACJ;oBAEA,UAAU,GACV,IAAI,kBAAkB,IAAI,CAAC,IAAI,EAAE,GAAG;wBAChC,IAAI,QAAQ,EAAE;wBACd,IAAI,UAAU;wBACd;wBACA,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;4BACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;gCACrC,IAAI;gCACJ,UAAU;4BACd;4BACA,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ;4BACzB;wBACJ;wBACA,IAAI,KAAK,MAAM,EAAE;4BACb,IAAI;4BACJ;wBACJ;wBACA,IAAI,CAAC,SACD,OAAO,IAAI,CAAC,MAAM,IAAI,Line truncated
@@ -12,7 +12,7 @@ function unescape(str) {
return str.replace(reg, (tag) => map[tag] || tag);
}
async function loadSubtitleAsVtt(option, art) {
async function loadVtt(option, art) {
const { getExt, srtToVtt, assToVtt } = art.constructor.utils;
const response = await fetch(option.url);
const buffer = await response.arrayBuffer();
@@ -61,14 +61,18 @@ function mergeTrees(trees, subtitles) {
return result;
}
const all = '_ALL_';
export default function artplayerPluginMultipleSubtitles({ subtitles, onMerge = () => null }) {
return async (art) => {
const vtts = await Promise.all(subtitles.map((option) => loadSubtitleAsVtt(option, art)));
const parser = new WebVTTParser();
const trees = vtts.map((vtt) => parser.parse(vtt, 'metadata'));
const seri = new WebVTTSerializer();
const vtts = await Promise.all(subtitles.map((option) => loadVtt(option, art)));
const trees = vtts.map((vtt) => parser.parse(vtt, 'metadata'));
const tree = onMerge(trees, subtitles) || mergeTrees(trees, subtitles);
if (tree?.cues?.length) {
function setTree(tree) {
if (!tree?.cues) return;
const vtt = seri.serialize(tree.cues);
const url = URL.createObjectURL(new Blob([vtt], { type: 'text/vtt' }));
art.option.subtitle.escape = false;
@@ -78,15 +82,39 @@ export default function artplayerPluginMultipleSubtitles({ subtitles, onMerge =
type: 'vtt',
onVttLoad: unescape,
});
} else {
throw new Error('No subtitle found');
}
setTree(tree);
let _track = all;
return {
name: 'multipleSubtitles',
get track() {
return _track;
},
set track(name) {
if (name === all || name === '') {
_track = all;
setTree(tree);
} else {
const index = subtitles.findIndex((item) => item.name === name);
if (index === -1) {
throw new Error(`The subtitle "${name}" is not found`);
} else {
_track = name;
setTree(trees[index]);
}
}
},
};
};
}
artplayerPluginMultipleSubtitles.env = process.env.NODE_ENV;
artplayerPluginMultipleSubtitles.version = process.env.APP_VER;
artplayerPluginMultipleSubtitles.build = process.env.BUILD_DATE;
artplayerPluginMultipleSubtitles.all = all;
artplayerPluginMultipleSubtitles.WebVTTParser = WebVTTParser;
artplayerPluginMultipleSubtitles.WebVTTSerializer = WebVTTSerializer;