Skip to content

Commit f1118e3

Browse files
committed
fix netflix
1 parent 8e995be commit f1118e3

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

src/subtitle/netflix.js

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ export default class Netflix extends BaseVideo {
3636
await this.interceptCaption(); // start caption intercept
3737
await this.waitUntilForever(() => this.getVideoId());
3838

39+
console.log("guesslang"+lang)
3940
if (this.checkPlayerCaptionOff()) {
4041
console.log("caption is off");
4142
} else {
4243
var videoId = this.getVideoId();
44+
console.log("videoId" + videoId);
4345
this.requestTrack(lang, videoId); //turn on caption on specified lang
4446
}
4547
}
@@ -54,16 +56,22 @@ export default class Netflix extends BaseVideo {
5456
static setPlayerCaption(lang) {
5557
this.getPlayer().setTimedTextTrack(lang);
5658
}
57-
static setPlayerCaptionOff() {
58-
var offTrack = this.getPlayer()
59+
60+
static getOffTrack() {
61+
var trackList = this.getPlayer()
5962
.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());
6270
}
6371
static checkPlayerCaptionOff() {
64-
const textTrackList = this.getPlayer().getTimedTextTrackList();
6572
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;
6775
}
6876

6977
static getPlayer() {
@@ -79,6 +87,9 @@ export default class Netflix extends BaseVideo {
7987
return String(this.getPlayer().getMovieId());
8088
}
8189
static async guessVideoLang() {
90+
if (this.setting["detectSubtitle"] == "targetsinglesub") {
91+
return this.setting["translateTarget"];
92+
}
8293
return this.getPlayer()?.getAudioTrack()?.bcp47;
8394
}
8495
static async guessSubtitleLang(url, subtitle) {
@@ -102,7 +113,8 @@ export default class Netflix extends BaseVideo {
102113
var sub1 = this.parseSubtitle(xml, videoId);
103114
var responseSub = sub1;
104115

105-
if (sub1.lang != targetLang) {
116+
if (sub1.lang != targetLang &&
117+
this.setting["detectSubtitle"] == "dualsub") {
106118
var sub2 = await this.requestSubtitleWithReset(targetLang);
107119
var mergedSub = this.mergeSubtitles(sub1, sub2);
108120
responseSub = mergedSub;
@@ -134,10 +146,13 @@ export default class Netflix extends BaseVideo {
134146
}
135147
var player = this.getPlayer();
136148
var subList = player.getTimedTextTrackList();
149+
var offTrack = this.getOffTrack();
150+
137151
const selectedTimedTextTrack = subList
138152
.sort((a, b) => (a.trackType === "ASSISTIVE" ? -1 : 1))
139153
.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));
141156

142157
if (!selectedTimedTextTrack) {
143158
return null;

0 commit comments

Comments
 (0)