mirror of
https://github.com/zoriya/srt-webvtt.git
synced 2026-05-30 00:34:56 +00:00
added string converter
This commit is contained in:
+12
-3
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user