-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsrt2vtt.js
More file actions
2 lines (2 loc) · 9.63 KB
/
srt2vtt.js
File metadata and controls
2 lines (2 loc) · 9.63 KB
1
2
// Copied from https://imshaikot.github.io/srt-webvtt/
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.VideoToThumb=n():e.VideoToThumb=n()}("undefined"!=typeof self?self:this,function(){return function(e){function n(r){if(t[r])return t[r].exports;var c=t[r]={i:r,l:!1,exports:{}};return e[r].call(c.exports,c,c.exports,n),c.l=!0,c.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=1)}([function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar WebVTTConverter = function () {\n function WebVTTConverter(resource) {\n _classCallCheck(this, WebVTTConverter);\n\n this.resource = resource;\n }\n\n _createClass(WebVTTConverter, [{\n key: 'blobToBuffer',\n value: function blobToBuffer() {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.addEventListener('loadend', function (event) {\n var buf = event.target.result;\n resolve(new Uint8Array(buf));\n });\n reader.addEventListener('error', function () {\n return reject('Error while reading the Blob object');\n });\n reader.readAsArrayBuffer(_this.resource);\n });\n }\n /**\n * @param {*} blob\n * @param {*} success\n * @param {*} fail\n */\n\n }, {\n key: 'getURL',\n value: function getURL() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n if (!(_this2.resource instanceof Blob)) return reject('Expecting resource to be a Blob but something else found.');\n if (!FileReader) return reject('No FileReader constructor found');\n if (!TextDecoder) return reject('No TextDecoder constructor found');\n return WebVTTConverter.blobToString(_this2.resource, function (decoded) {\n var vttString = 'WEBVTT FILE\\r\\n\\r\\n';\n var text = vttString.concat(WebVTTConverter.toVTT(decoded));\n var blob = new Blob([text], { type: 'text/vtt' });\n _this2.objectURL = URL.createObjectURL(blob);\n return resolve(_this2.objectURL);\n }, function () {\n _this2.blobToBuffer().then(function (buffer) {\n var utf8str = new TextDecoder('utf-8').decode(buffer);\n var vttString = 'WEBVTT FILE\\r\\n\\r\\n';\n var text = vttString.concat(WebVTTConverter.toVTT(utf8str));\n var blob = new Blob([text], { type: 'text/vtt' });\n _this2.objectURL = URL.createObjectURL(blob);\n return resolve(_this2.objectURL);\n });\n });\n });\n }\n }, {\n key: 'release',\n value: function release() {\n URL.createObjectURL(this.objectURL);\n }\n }], [{\n key: 'blobToString',\n value: function blobToString(blob, success, fail) {\n var reader = new FileReader();\n reader.addEventListener('loadend', function (event) {\n var text = event.target.result;\n success(text);\n });\n reader.addEventListener('error', function () {\n return fail();\n });\n reader.readAsText(blob);\n }\n /**\n * @param {*} utf8str\n */\n\n }, {\n key: 'toVTT',\n value: function toVTT(utf8str) {\n 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').concat('\\r\\n\\r\\n');\n }\n /**\n * @param {*} str\n */\n\n }, {\n key: 'toTypedArray',\n value: function toTypedArray(str) {\n var result = [];\n str.split('').forEach(function (each) {\n result.push(parseInt(each.charCodeAt(), 16));\n });\n return Uint8Array.from(result);\n }\n }]);\n\n return WebVTTConverter;\n}();\n\nwindow.WebVTTConverter = WebVTTConverter;\nexports.default = WebVTTConverter;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9pbmRleC5qcz8xNjg3Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFdlYlZUVENvbnZlcnRlciB7XG4gIGNvbnN0cnVjdG9yKHJlc291cmNlKSB7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlO1xuICB9XG5cbiAgYmxvYlRvQnVmZmVyKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgYnVmID0gZXZlbnQudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgcmVzb2x2ZShuZXcgVWludDhBcnJheShidWYpKTtcbiAgICAgIH0pO1xuICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKCkgPT4gcmVqZWN0KCdFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBCbG9iIG9iamVjdCcpKTtcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcih0aGlzLnJlc291cmNlKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQHBhcmFtIHsqfSBibG9iXG4gICAqIEBwYXJhbSB7Kn0gc3VjY2Vzc1xuICAgKiBAcGFyYW0geyp9IGZhaWxcbiAgICovXG4gIHN0YXRpYyBibG9iVG9TdHJpbmcoYmxvYiwgc3VjY2VzcywgZmFpbCkge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBldmVudC50YXJnZXQucmVzdWx0O1xuICAgICAgc3VjY2Vzcyh0ZXh0KTtcbiAgICB9KTtcbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiBmYWlsKCkpO1xuICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpO1xuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IHV0ZjhzdHJcbiAgICovXG4gIHN0YXRpYyB0b1ZUVCh1dGY4c3RyKSB7XG4gICAgcmV0dXJuIHV0ZjhzdHJcbiAgICAgIC5yZXBsYWNlKC9cXHtcXFxcKFtpYnVdKVxcfS9nLCAnPC8kMT4nKVxuICAgICAgLnJlcGxhY2UoL1xce1xcXFwoW2lidV0pMVxcfS9nLCAnPCQxPicpXG4gICAgICAucmVwbGFjZSgvXFx7KFtpYnVdKVxcfS9nLCAnPCQxPicpXG4gICAgICAucmVwbGFjZSgvXFx7XFwvKFtpYnVdKVxcfS9nLCAnPC8kMT4nKVxuICAgICAgLnJlcGxhY2UoLyhcXGRcXGQ6XFxkXFxkOlxcZFxcZCksKFxcZFxcZFxcZCkvZywgJyQxLiQyJylcbiAgICAgIC5jb25jYXQoJ1xcclxcblxcclxcbicpO1xuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IHN0clxuICAgKi9cbiAgc3RhdGljIHRvVHlwZWRBcnJheShzdHIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBzdHIuc3BsaXQoJycpLmZvckVhY2goKGVhY2gpID0+IHtcbiAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KGVhY2guY2hhckNvZGVBdCgpLCAxNikpO1xuICAgIH0pO1xuICAgIHJldHVybiBVaW50OEFycmF5LmZyb20ocmVzdWx0KTtcbiAgfVxuXG4gIGdldFVSTCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCEodGhpcy5yZXNvdXJjZSBpbnN0YW5jZW9mIEJsb2IpKSByZXR1cm4gcmVqZWN0KCdFeHBlY3RpbmcgcmVzb3VyY2UgdG8gYmUgYSBCbG9iIGJ1dCBzb21ldGhpbmcgZWxzZSBmb3VuZC4nKTtcbiAgICAgIGlmICghKEZpbGVSZWFkZXIpKSByZXR1cm4gcmVqZWN0KCdObyBGaWxlUmVhZGVyIGNvbnN0cnVjdG9yIGZvdW5kJyk7XG4gICAgICBpZiAoIVRleHREZWNvZGVyKSByZXR1cm4gcmVqZWN0KCdObyBUZXh0RGVjb2RlciBjb25zdHJ1Y3RvciBmb3VuZCcpO1xuICAgICAgcmV0dXJuIFdlYlZUVENvbnZlcnRlci5ibG9iVG9TdHJpbmcoXG4gICAgICAgIHRoaXMucmVzb3VyY2UsXG4gICAgICAgIChkZWNvZGVkKSA9PiB7XG4gICAgICAgICAgY29uc3QgdnR0U3RyaW5nID0gJ1dFQlZUVCBGSUxFXFxyXFxuXFxyXFxuJztcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gdnR0U3RyaW5nLmNvbmNhdChXZWJWVFRDb252ZXJ0ZXIudG9WVFQoZGVjb2RlZCkpO1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZTogJ3RleHQvdnR0JyB9KTtcbiAgICAgICAgICB0aGlzLm9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5vYmplY3RVUkwpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ibG9iVG9CdWZmZXIoKVxuICAgICAgICAgICAgLnRoZW4oKGJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1dGY4c3RyID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcpLmRlY29kZShidWZmZXIpO1xuICAgICAgICAgICAgICBjb25zdCB2dHRTdHJpbmcgPSAnV0VCVlRUIEZJTEVcXHJcXG5cXHJcXG4nO1xuICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gdnR0U3RyaW5nLmNvbmNhdChXZWJWVFRDb252ZXJ0ZXIudG9WVFQodXRmOHN0cikpO1xuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGU6ICd0ZXh0L3Z0dCcgfSk7XG4gICAgICAgICAgICAgIHRoaXMub2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5vYmplY3RVUkwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgICBVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMub2JqZWN0VVJMKTtcbiAgfVxufVxuXG53aW5kb3cuV2ViVlRUQ29udmVydGVyID0gV2ViVlRUQ29udmVydGVyO1xuZXhwb3J0IGRlZmF1bHQgV2ViVlRUQ29udmVydGVyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGluZGV4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQXFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUEvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFHQTtBQUNBO0FBT0E7QUFDQTs7Ozs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQW9DQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n")},function(e,n,t){t(0),e.exports=t(0)}])});