diff --git a/index.html b/index.html index 9bd093e..161bc2d 100644 --- a/index.html +++ b/index.html @@ -7,9 +7,18 @@ - - My Web Media Player (React) + + SRT to WebVTT Converter - + diff --git a/index.js b/index.js index 89897bd..f12fd6b 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,43 @@ -export default class { - constructor(resource) {} +class WebVTTConverter { + constructor(resource) { + this.resource = resource; + } + + blobToBuffer() { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.addEventListener('loadend', event => { + const buf = event.target.result; + resolve(new Uint8Array(buf)); + }); + reader.addEventListener('error', () => reject('Error while reading the Blob object')); + reader.readAsArrayBuffer(this.resource) + }); + } + + toVTT(utf8str) { + return utf8str + .replace(/\{\\([ibu])\}/g, '') + .replace(/\{\\([ibu])1\}/g, '<$1>') + .replace(/\{([ibu])\}/g, '<$1>') + .replace(/\{\/([ibu])\}/g, '') + .replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g, '$1.$2') + '\r\n\r\n'; + } + + getURL() { + return new Promise((resolve, reject) => { + if (!(this.resource instanceof Blob)) return reject('Expecting resource to be a Blob but something else found.'); + if (!(FileReader)) return reject('No FileReader constructor found'); + if (!TextDecoder) return reject('No TextDecoder constructor found'); + this.blobToBuffer() + .then(buffer => { + const utf8str = new TextDecoder('utf-8').decode(buffer); + const vttString = 'WEBVTT FILE\r\n\r\n'; + }); + }); + } } + +window.WebVTTConverter = WebVTTConverter; + +export default WebVTTConverter;