diff --git a/src/index.js b/src/index.js
index f69e7d9..2999335 100644
--- a/src/index.js
+++ b/src/index.js
@@ -2,19 +2,23 @@
import he from 'he';
import axios from 'axios';
-import { find } from 'lodash';
-// import striptags from 'striptags';
+import {
+ find
+} from 'lodash';
+import striptags from 'striptags';
export async function getSubtitles({
videoID,
lang = 'en',
}: {
- videoID: string,
- lang: 'en',
-}) {
- const { data } = await axios.get(
- `https://youtube.com/get_video_info?video_id=${videoID}`
- );
+ videoID: string,
+ lang: 'en',
+ }) {
+ const {
+ data
+ } = await axios.get(
+ `https://youtube.com/get_video_info?video_id=${videoID}`
+ );
const decodedData = decodeURIComponent(data);
@@ -24,17 +28,25 @@ export async function getSubtitles({
const regex = /({"captionTracks":.*isTranslatable":(true|false)}])/;
const [match] = regex.exec(decodedData);
- const { captionTracks } = JSON.parse(`${match}}`);
+ const {
+ captionTracks
+ } = JSON.parse(`${match}}`);
const subtitle =
- find(captionTracks, { vssId: `.${lang}` }) ||
- find(captionTracks, { vssId: `a.${lang}` });
+ find(captionTracks, {
+ vssId: `.${lang}`
+ }) ||
+ find(captionTracks, {
+ vssId: `a.${lang}`
+ });
// * ensure we have found the correct subtitle lang
if (!subtitle || (subtitle && !subtitle.baseUrl))
throw new Error(`Could not find ${lang} captions for ${videoID}`);
- const { data: transcript } = await axios.get(subtitle.baseUrl);
+ const {
+ data: transcript
+ } = await axios.get(subtitle.baseUrl);
const lines = transcript
.replace('', '')
.replace('', '')
@@ -44,21 +56,22 @@ export async function getSubtitles({
const startRegex = /start="([\d.]+)"/;
const durRegex = /dur="([\d.]+)"/;
- const fontTag = new RegExp('<'+'font'+'[^><]*>|<.'+'font'+'[^><]*>','g');
const [, start] = startRegex.exec(line);
const [, dur] = durRegex.exec(line);
const htmlText = line
.replace(//, '')
.replace(/&/gi, '&')
- .replace(/<\/?[^>]+(>|$)/g, '')
- .replace(fontTag, '');
+ .replace(/<\/?[^>]+(>|$)/g, '');
- // const strippedText = striptags(htmlText);
+ const decodedText = he.decode(htmlText);
+ const text = striptags(decodedText);
- const text = he.decode(htmlText);
-
- return { start, dur, text };
+ return {
+ start,
+ dur,
+ text
+ };
});
return lines;
diff --git a/yarn.lock b/yarn.lock
index 79ef750..436a988 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2956,6 +2956,10 @@ strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+striptags@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.0.tgz#763e534338d9cf542f004a4b1eb099e32d295e44"
+
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"