@@ -36,10 +36,12 @@ export default class Netflix extends BaseVideo {
36
36
await this . interceptCaption ( ) ; // start caption intercept
37
37
await this . waitUntilForever ( ( ) => this . getVideoId ( ) ) ;
38
38
39
+ console . log ( "guesslang" + lang )
39
40
if ( this . checkPlayerCaptionOff ( ) ) {
40
41
console . log ( "caption is off" ) ;
41
42
} else {
42
43
var videoId = this . getVideoId ( ) ;
44
+ console . log ( "videoId" + videoId ) ;
43
45
this . requestTrack ( lang , videoId ) ; //turn on caption on specified lang
44
46
}
45
47
}
@@ -54,16 +56,22 @@ export default class Netflix extends BaseVideo {
54
56
static setPlayerCaption ( lang ) {
55
57
this . getPlayer ( ) . setTimedTextTrack ( lang ) ;
56
58
}
57
- static setPlayerCaptionOff ( ) {
58
- var offTrack = this . getPlayer ( )
59
+
60
+ static getOffTrack ( ) {
61
+ var trackList = this . getPlayer ( )
59
62
. getTimedTextTrackList ( )
60
- . find ( ( track ) => track . trackId . includes ( "NONE" ) ) ;
61
- this . getPlayer ( ) . setTimedTextTrack ( offTrack ) ;
63
+ var offTrack = trackList . find ( ( track ) => track . trackId . includes ( "NONE" ) ) ||
64
+ trackList . find ( ( track ) => track . trackId . includes ( "1;1;0;" ) ) ||
65
+ trackList ?. [ 0 ] ;
66
+ return offTrack ;
67
+ }
68
+ static setPlayerCaptionOff ( ) {
69
+ this . getPlayer ( ) . setTimedTextTrack ( this . getOffTrack ( ) ) ;
62
70
}
63
71
static checkPlayerCaptionOff ( ) {
64
- const textTrackList = this . getPlayer ( ) . getTimedTextTrackList ( ) ;
65
72
var currentTrack = this . getPlayer ( ) . getTextTrack ( ) ;
66
- return ! currentTrack || currentTrack . trackId === textTrackList [ 0 ] ?. trackId ;
73
+ var offTrack = this . getOffTrack ( ) ;
74
+ return ! currentTrack || currentTrack . trackId === offTrack ?. trackId ;
67
75
}
68
76
69
77
static getPlayer ( ) {
@@ -79,6 +87,9 @@ export default class Netflix extends BaseVideo {
79
87
return String ( this . getPlayer ( ) . getMovieId ( ) ) ;
80
88
}
81
89
static async guessVideoLang ( ) {
90
+ if ( this . setting [ "detectSubtitle" ] == "targetsinglesub" ) {
91
+ return this . setting [ "translateTarget" ] ;
92
+ }
82
93
return this . getPlayer ( ) ?. getAudioTrack ( ) ?. bcp47 ;
83
94
}
84
95
static async guessSubtitleLang ( url , subtitle ) {
@@ -102,7 +113,8 @@ export default class Netflix extends BaseVideo {
102
113
var sub1 = this . parseSubtitle ( xml , videoId ) ;
103
114
var responseSub = sub1 ;
104
115
105
- if ( sub1 . lang != targetLang ) {
116
+ if ( sub1 . lang != targetLang &&
117
+ this . setting [ "detectSubtitle" ] == "dualsub" ) {
106
118
var sub2 = await this . requestSubtitleWithReset ( targetLang ) ;
107
119
var mergedSub = this . mergeSubtitles ( sub1 , sub2 ) ;
108
120
responseSub = mergedSub ;
@@ -134,10 +146,13 @@ export default class Netflix extends BaseVideo {
134
146
}
135
147
var player = this . getPlayer ( ) ;
136
148
var subList = player . getTimedTextTrackList ( ) ;
149
+ var offTrack = this . getOffTrack ( ) ;
150
+
137
151
const selectedTimedTextTrack = subList
138
152
. sort ( ( a , b ) => ( a . trackType === "ASSISTIVE" ? - 1 : 1 ) )
139
153
. filter ( ( textTrack ) => textTrack . isImageBased === false )
140
- . find ( ( textTrack ) => textTrack . bcp47 === lang ) ;
154
+ . filter ( ( textTrack ) => textTrack . trackId !== offTrack ?. trackId )
155
+ . find ( ( textTrack ) => textTrack . bcp47 === lang || textTrack . bcp47 . includes ( lang ) ) ;
141
156
142
157
if ( ! selectedTimedTextTrack ) {
143
158
return null ;
0 commit comments