Skip to content

Commit

Permalink
fix coursera & updated proto
Browse files Browse the repository at this point in the history
  • Loading branch information
ilyhalight committed Jan 20, 2024
1 parent 11200be commit 2114a82
Show file tree
Hide file tree
Showing 9 changed files with 82 additions and 58 deletions.
3 changes: 3 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# 1.5.0.5
- Исправлен перевод для Coursera

# 1.5.0.4
- Добавлена поддержка coursehunter

Expand Down
4 changes: 2 additions & 2 deletions dist/vot-cloudflare-min.user.js

Large diffs are not rendered by default.

53 changes: 29 additions & 24 deletions dist/vot-cloudflare.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser
// @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры
// @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译
// @version 1.5.0.4
// @version 1.5.0.5
// @author sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD
// @supportURL https://github.com/ilyhalight/voice-over-translation/issues
// @match *://*.youtube.com/*
Expand Down Expand Up @@ -1900,7 +1900,7 @@ const VideoTranslationRequest = new protobuf.Type("VideoTranslationRequest")
.add(new protobuf.Field("duration", 6, "double"))
.add(new protobuf.Field("unknown2", 7, "int32")) // 1 1
.add(new protobuf.Field("language", 8, "string")) // source language code
.add(new protobuf.Field("unknown3", 9, "int32")) // 0 0
.add(new protobuf.Field("unknown3", 9, "int32")) // 0 - without translationHelp | 1 - with translationHelp (??? But it works without it)
.add(new protobuf.Field("unknown4", 10, "int32")) // 0 0
.add(
new protobuf.Field(
Expand All @@ -1911,7 +1911,9 @@ const VideoTranslationRequest = new protobuf.Type("VideoTranslationRequest")
),
) // array for translation assistance ([0] -> {2: link to video, 1: "video_file_url"}, [1] -> {2: link to subtitles, 1: "subtitles_file_url"})
.add(new protobuf.Field("responseLanguage", 14, "string"))
.add(new protobuf.Field("unknown5", 15, "int32")); // 0
.add(new protobuf.Field("unknown5", 15, "int32")) // 0
.add(new protobuf.Field("unknown6", 16, "int32")) // 1
.add(new protobuf.Field("unknown7", 17, "int32")); // 0

const VideoSubtitlesRequest = new protobuf.Type("VideoSubtitlesRequest")
.add(new protobuf.Field("url", 1, "string"))
Expand Down Expand Up @@ -2001,6 +2003,8 @@ const yandexProtobuf = {
translationHelp,
responseLanguage: responseLang,
unknown5: 0,
unknown6: 1,
unknown7: 0,
}).finish();
},
decodeTranslationResponse(response) {
Expand Down Expand Up @@ -3377,9 +3381,8 @@ function getSubtitlesFileURL(captions, detectedLanguage, responseLang) {
}

function getVideoFileURL(sources) {
const source = sources?.find(
(src) => src.type === "video/webm" || src.type === "video/mp4",
);
// const source = sources?.find((src) => src.type === "video/webm" || src.type === "video/mp4",
const source = sources?.find((src) => src.type === "video/mp4");

return source?.src;
}
Expand Down Expand Up @@ -4070,12 +4073,20 @@ function translateVideo(
);
break;
case 3:
case 6:
/*
status: 3
Иногда, в ответе приходит статус код 3, но видео всё, так же, ожидает перевода.
В конечном итоге, это занимает слишком много времени,
как-будто сервер не понимает, что данное видео уже недавно было переведено
и заместо возвращения готовой ссылки на перевод начинает переводить видео заново
при чём у него это получается за очень длительное время.
status: 6
Случайно встретил 6 статус код при котором видео так же продолжается перевод,
но после него ничего сверхъестественного не происходит.
Он появляется при первом запросе с 17=1, но не исключено,
что может появится и просто так
*/
callback(false, localizationProvider/* localizationProvider */.V.get("videoBeingTranslated"));
break;
Expand Down Expand Up @@ -4796,9 +4807,8 @@ class VideoHandler {

this.votVideoVolumeSlider.input.addEventListener("input", (e) => {
const value = Number(e.target.value);
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${value}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${value}%`;
this.setVideoVolume(value / 100);
if (this.data.syncVolume === 1) {
const translateVolume = Number(
Expand Down Expand Up @@ -4886,9 +4896,8 @@ class VideoHandler {
const presetAutoVolume = Number(e.target.value);
this.data.autoVolume = presetAutoVolume / 100;
await storage/* votStorage */.i.set("autoVolume", presetAutoVolume);
this.votAutoSetVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${presetAutoVolume}%`;
this.votAutoSetVolumeSlider.label.querySelector("strong").innerHTML =
`${presetAutoVolume}%`;
});

this.votShowVideoSliderCheckbox.input.addEventListener(
Expand Down Expand Up @@ -5353,9 +5362,8 @@ class VideoHandler {
const newSlidersVolume = Math.round(this.getVideoVolume() * 100);

this.votVideoVolumeSlider.input.value = newSlidersVolume;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${newSlidersVolume}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${newSlidersVolume}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);

if (this.data.syncVolume === 1) {
Expand Down Expand Up @@ -5392,9 +5400,8 @@ class VideoHandler {

// Set the video volume slider value to the synced value
this.votVideoVolumeSlider.input.value = finalValue;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${finalValue}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${finalValue}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);

// Update the temp variables for future syncing
Expand Down Expand Up @@ -5786,9 +5793,8 @@ class VideoHandler {

if (this.data.autoSetVolumeYandexStyle === 1) {
this.votVideoVolumeSlider.input.value = this.data.autoVolume * 100;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${this.data.autoVolume * 100}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${this.data.autoVolume * 100}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);
}

Expand Down Expand Up @@ -5958,9 +5964,8 @@ class VideoHandler {

if (this.data.autoSetVolumeYandexStyle === 1) {
this.votVideoVolumeSlider.input.value = this.data.autoVolume * 100;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${this.data.autoVolume * 100}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${this.data.autoVolume * 100}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);
}

Expand Down
4 changes: 2 additions & 2 deletions dist/vot-min.user.js

Large diffs are not rendered by default.

53 changes: 29 additions & 24 deletions dist/vot.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser
// @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры
// @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译
// @version 1.5.0.4
// @version 1.5.0.5
// @author sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD
// @supportURL https://github.com/ilyhalight/voice-over-translation/issues
// @match *://*.youtube.com/*
Expand Down Expand Up @@ -1894,7 +1894,7 @@ const VideoTranslationRequest = new protobuf.Type("VideoTranslationRequest")
.add(new protobuf.Field("duration", 6, "double"))
.add(new protobuf.Field("unknown2", 7, "int32")) // 1 1
.add(new protobuf.Field("language", 8, "string")) // source language code
.add(new protobuf.Field("unknown3", 9, "int32")) // 0 0
.add(new protobuf.Field("unknown3", 9, "int32")) // 0 - without translationHelp | 1 - with translationHelp (??? But it works without it)
.add(new protobuf.Field("unknown4", 10, "int32")) // 0 0
.add(
new protobuf.Field(
Expand All @@ -1905,7 +1905,9 @@ const VideoTranslationRequest = new protobuf.Type("VideoTranslationRequest")
),
) // array for translation assistance ([0] -> {2: link to video, 1: "video_file_url"}, [1] -> {2: link to subtitles, 1: "subtitles_file_url"})
.add(new protobuf.Field("responseLanguage", 14, "string"))
.add(new protobuf.Field("unknown5", 15, "int32")); // 0
.add(new protobuf.Field("unknown5", 15, "int32")) // 0
.add(new protobuf.Field("unknown6", 16, "int32")) // 1
.add(new protobuf.Field("unknown7", 17, "int32")); // 0

const VideoSubtitlesRequest = new protobuf.Type("VideoSubtitlesRequest")
.add(new protobuf.Field("url", 1, "string"))
Expand Down Expand Up @@ -1995,6 +1997,8 @@ const yandexProtobuf = {
translationHelp,
responseLanguage: responseLang,
unknown5: 0,
unknown6: 1,
unknown7: 0,
}).finish();
},
decodeTranslationResponse(response) {
Expand Down Expand Up @@ -3371,9 +3375,8 @@ function getSubtitlesFileURL(captions, detectedLanguage, responseLang) {
}

function getVideoFileURL(sources) {
const source = sources?.find(
(src) => src.type === "video/webm" || src.type === "video/mp4",
);
// const source = sources?.find((src) => src.type === "video/webm" || src.type === "video/mp4",
const source = sources?.find((src) => src.type === "video/mp4");

return source?.src;
}
Expand Down Expand Up @@ -4059,12 +4062,20 @@ function translateVideo(
);
break;
case 3:
case 6:
/*
status: 3
Иногда, в ответе приходит статус код 3, но видео всё, так же, ожидает перевода.
В конечном итоге, это занимает слишком много времени,
как-будто сервер не понимает, что данное видео уже недавно было переведено
и заместо возвращения готовой ссылки на перевод начинает переводить видео заново
при чём у него это получается за очень длительное время.
status: 6
Случайно встретил 6 статус код при котором видео так же продолжается перевод,
но после него ничего сверхъестественного не происходит.
Он появляется при первом запросе с 17=1, но не исключено,
что может появится и просто так
*/
callback(false, localizationProvider/* localizationProvider */.V.get("videoBeingTranslated"));
break;
Expand Down Expand Up @@ -4785,9 +4796,8 @@ class VideoHandler {

this.votVideoVolumeSlider.input.addEventListener("input", (e) => {
const value = Number(e.target.value);
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${value}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${value}%`;
this.setVideoVolume(value / 100);
if (this.data.syncVolume === 1) {
const translateVolume = Number(
Expand Down Expand Up @@ -4875,9 +4885,8 @@ class VideoHandler {
const presetAutoVolume = Number(e.target.value);
this.data.autoVolume = presetAutoVolume / 100;
await storage/* votStorage */.i.set("autoVolume", presetAutoVolume);
this.votAutoSetVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${presetAutoVolume}%`;
this.votAutoSetVolumeSlider.label.querySelector("strong").innerHTML =
`${presetAutoVolume}%`;
});

this.votShowVideoSliderCheckbox.input.addEventListener(
Expand Down Expand Up @@ -5342,9 +5351,8 @@ class VideoHandler {
const newSlidersVolume = Math.round(this.getVideoVolume() * 100);

this.votVideoVolumeSlider.input.value = newSlidersVolume;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${newSlidersVolume}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${newSlidersVolume}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);

if (this.data.syncVolume === 1) {
Expand Down Expand Up @@ -5381,9 +5389,8 @@ class VideoHandler {

// Set the video volume slider value to the synced value
this.votVideoVolumeSlider.input.value = finalValue;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${finalValue}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${finalValue}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);

// Update the temp variables for future syncing
Expand Down Expand Up @@ -5775,9 +5782,8 @@ class VideoHandler {

if (this.data.autoSetVolumeYandexStyle === 1) {
this.votVideoVolumeSlider.input.value = this.data.autoVolume * 100;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${this.data.autoVolume * 100}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${this.data.autoVolume * 100}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);
}

Expand Down Expand Up @@ -5937,9 +5943,8 @@ class VideoHandler {

if (this.data.autoSetVolumeYandexStyle === 1) {
this.votVideoVolumeSlider.input.value = this.data.autoVolume * 100;
this.votVideoVolumeSlider.label.querySelector(
"strong",
).innerHTML = `${this.data.autoVolume * 100}%`;
this.votVideoVolumeSlider.label.querySelector("strong").innerHTML =
`${this.data.autoVolume * 100}%`;
ui.updateSlider(this.votVideoVolumeSlider.input);
}

Expand Down
2 changes: 1 addition & 1 deletion src/headers.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "[VOT] - Voice Over Translation",
"description": "A small extension that adds a Yandex Browser video translation to other browsers",
"version": "1.5.0.4",
"version": "1.5.0.5",
"author": "sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD",
"namespace": "vot",
"icon": "https://translate.yandex.ru/icons/favicon.ico",
Expand Down
8 changes: 8 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,20 @@ function translateVideo(
);
break;
case 3:
case 6:
/*
status: 3
Иногда, в ответе приходит статус код 3, но видео всё, так же, ожидает перевода.
В конечном итоге, это занимает слишком много времени,
как-будто сервер не понимает, что данное видео уже недавно было переведено
и заместо возвращения готовой ссылки на перевод начинает переводить видео заново
при чём у него это получается за очень длительное время.
status: 6
Случайно встретил 6 статус код при котором видео так же продолжается перевод,
но после него ничего сверхъестественного не происходит.
Он появляется при первом запросе с 17=1, но не исключено,
что может появится и просто так
*/
callback(false, localizationProvider.get("videoBeingTranslated"));
break;
Expand Down
5 changes: 2 additions & 3 deletions src/utils/courseraUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ function getSubtitlesFileURL(captions, detectedLanguage, responseLang) {
}

function getVideoFileURL(sources) {
const source = sources?.find(
(src) => src.type === "video/webm" || src.type === "video/mp4",
);
// const source = sources?.find((src) => src.type === "video/webm" || src.type === "video/mp4",
const source = sources?.find((src) => src.type === "video/mp4");

return source?.src;
}
Expand Down
8 changes: 6 additions & 2 deletions src/yandexProtobuf.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const VideoTranslationRequest = new protobuf.Type("VideoTranslationRequest")
.add(new protobuf.Field("duration", 6, "double"))
.add(new protobuf.Field("unknown2", 7, "int32")) // 1 1
.add(new protobuf.Field("language", 8, "string")) // source language code
.add(new protobuf.Field("unknown3", 9, "int32")) // 0 0
.add(new protobuf.Field("unknown3", 9, "int32")) // 0 - without translationHelp | 1 - with translationHelp (??? But it works without it)
.add(new protobuf.Field("unknown4", 10, "int32")) // 0 0
.add(
new protobuf.Field(
Expand All @@ -23,7 +23,9 @@ const VideoTranslationRequest = new protobuf.Type("VideoTranslationRequest")
),
) // array for translation assistance ([0] -> {2: link to video, 1: "video_file_url"}, [1] -> {2: link to subtitles, 1: "subtitles_file_url"})
.add(new protobuf.Field("responseLanguage", 14, "string"))
.add(new protobuf.Field("unknown5", 15, "int32")); // 0
.add(new protobuf.Field("unknown5", 15, "int32")) // 0
.add(new protobuf.Field("unknown6", 16, "int32")) // 1
.add(new protobuf.Field("unknown7", 17, "int32")); // 0

const VideoSubtitlesRequest = new protobuf.Type("VideoSubtitlesRequest")
.add(new protobuf.Field("url", 1, "string"))
Expand Down Expand Up @@ -113,6 +115,8 @@ export const yandexProtobuf = {
translationHelp,
responseLanguage: responseLang,
unknown5: 0,
unknown6: 1,
unknown7: 0,
}).finish();
},
decodeTranslationResponse(response) {
Expand Down

0 comments on commit 2114a82

Please sign in to comment.