added string converter

This commit is contained in:
imshaikot
2018-01-19 17:53:35 +06:00
parent 5f8ce8fdab
commit ba5f09ed4a
2 changed files with 54 additions and 5 deletions
+12 -3
View File
@@ -7,9 +7,18 @@
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500|Gloria+Hallelujah" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<title>My Web Media Player (React)</title>
<script>
function convert(event) {
const file = event.files[0];
const webvtt = new WebVTTConverter(file);
webvtt
.getURL()
.then()
.catch(err => console.error(err))
}
</script>
<title>SRT to WebVTT Converter</title>
<body>
<input type="file" onchange="convert(this)" />
</body>
</html>
+42 -2
View File
@@ -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, '</$1>')
.replace(/\{\\([ibu])1\}/g, '<$1>')
.replace(/\{([ibu])\}/g, '<$1>')
.replace(/\{\/([ibu])\}/g, '</$1>')
.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;