@@ -39,7 +39,6 @@ export default class Netflix extends BaseVideo {
39
39
if ( this . checkPlayerCaptionOff ( ) ) {
40
40
console . log ( "caption is off" ) ;
41
41
} else {
42
- console . log ( this . getPlayer ( ) . getTextTrack ( ) )
43
42
var videoId = this . getVideoId ( ) ;
44
43
this . requestTrack ( lang , videoId ) ; //turn on caption on specified lang
45
44
}
@@ -156,6 +155,8 @@ export default class Netflix extends BaseVideo {
156
155
}
157
156
158
157
static parseSubtitle ( sub , videoId ) {
158
+ var styles = { }
159
+ var regions = { }
159
160
const concatSubtitles = [ ] ;
160
161
const parser = new DOMParser ( ) ;
161
162
const xmlDoc = parser . parseFromString ( sub , "text/xml" ) ;
@@ -177,18 +178,28 @@ export default class Netflix extends BaseVideo {
177
178
} ) ;
178
179
}
179
180
181
+ const styling = xmlDoc . getElementsByTagName ( "styling" ) [ 0 ] ;
182
+ if ( styling ) {
183
+ var styles = Array . from ( styling . getElementsByTagName ( "style" ) ) ;
184
+ styles . forEach ( ( style ) => {
185
+ const newId = `${ style . getAttribute ( "xml:id" ) } _${ lang } ` ;
186
+ style . setAttribute ( "xml:id" , newId ) ;
187
+ } ) ;
188
+ }
189
+
180
190
// parse subtitles
181
191
for ( let i = 0 ; i < subtitles . length ; i ++ ) {
182
192
const subtitle = subtitles [ i ] ;
183
193
const start = parseInt ( subtitle . getAttribute ( "begin" ) . replace ( "t" , "" ) ) ;
184
194
const end = parseInt ( subtitle . getAttribute ( "end" ) . replace ( "t" , "" ) ) ;
185
195
const text = subtitle . textContent ;
186
196
const region = subtitle . getAttribute ( "region" ) + "_" + lang ;
197
+ const style = subtitle . getElementsByTagName ( "span" ) [ 0 ] ?. getAttribute ( "style" ) + "_" + lang ;
187
198
var prev = concatSubtitles ?. [ concatSubtitles . length - 1 ] ;
188
199
if ( prev && prev . start === start && prev . end === end ) {
189
200
prev . text += " " + text ;
190
201
} else {
191
- concatSubtitles . push ( { start, end, text, region } ) ;
202
+ concatSubtitles . push ( { start, end, text, region, style } ) ;
192
203
}
193
204
}
194
205
@@ -197,6 +208,7 @@ export default class Netflix extends BaseVideo {
197
208
lang,
198
209
subtitles : concatSubtitles ,
199
210
regions,
211
+ styles,
200
212
} ;
201
213
if ( ! this . sub [ videoId ] ) {
202
214
this . sub [ videoId ] = { } ;
@@ -217,6 +229,12 @@ export default class Netflix extends BaseVideo {
217
229
layout ?. appendChild ( region ) ;
218
230
} ) ;
219
231
232
+ // Merge styles from sub2 into sub1
233
+ const styling = sub1Meta ?. xmlDoc ?. getElementsByTagName ( "styling" ) ?. [ 0 ] ;
234
+ sub2Meta ?. styles ?. forEach ( ( style ) => {
235
+ styling ?. appendChild ( style ) ;
236
+ } ) ;
237
+
220
238
// fix mismatch length between sub1 sub2
221
239
for ( let [ i , sub1Line ] of sub1 . entries ( ) ) {
222
240
var line1 = sub1Line ;
@@ -260,6 +278,7 @@ export default class Netflix extends BaseVideo {
260
278
p . setAttribute ( "begin" , `${ sub . start } t` ) ;
261
279
p . setAttribute ( "end" , `${ sub . end } t` ) ;
262
280
p . setAttribute ( "region" , sub . region ) ;
281
+ p . setAttribute ( "style" , sub . style ) ;
263
282
264
283
const span = xmlDoc . createElement ( "span" ) ;
265
284
span . setAttribute ( "style" , "style0" ) ;
0 commit comments