Skip to content

Instantly share code, notes, and snippets.

@mohemohe
Last active August 6, 2021 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mohemohe/29ed488f33747dbd9644366a4babc48a to your computer and use it in GitHub Desktop.
Save mohemohe/29ed488f33747dbd9644366a4babc48a to your computer and use it in GitHub Desktop.
youtube-subtitle.js
(async () => {
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
const subtitleButton = document.querySelector('.ytp-subtitles-button');
if (!subtitleButton) {
return;
}
const subtitleButtonState = subtitleButton.getAttribute('aria-pressed') === 'true';
subtitleButton.click();
if (subtitleButtonState) {
return;
}
const settingButton = document.querySelector('.ytp-settings-button');
if (!settingButton) {
return;
}
settingButton.click();
await wait(250);
const subtitleMenuItem = document.querySelector('.ytp-settings-menu .ytp-menuitem-label-count');
if (!subtitleMenuItem) {
return;
}
subtitleMenuItem.click();
await wait(250);
const subtitleListNodes = document.querySelectorAll('.ytp-settings-menu .ytp-menuitem-label');
const subtitles = Array.from(subtitleListNodes).map(_ => _.innerText);
const japaneseSubtitleIndex = subtitles.findIndex(_ => _ === '日本語');
if (japaneseSubtitleIndex !== -1) {
subtitleListNodes[japaneseSubtitleIndex].click();
return;
}
const machineTranslateSubtitleIndex = subtitles.findIndex(_ => _ === '自動翻訳');
if (machineTranslateSubtitleIndex!== -1) {
subtitleListNodes[machineTranslateSubtitleIndex].click();
}
await wait(250);
const machineTranslateSubtitleListNodes = document.querySelectorAll('.ytp-settings-menu .ytp-menuitem-label');
const machineTranslateSubtitles = Array.from(machineTranslateSubtitleListNodes).map(_ => _.innerText);
const machineTranslateJapaneseSubtitleIndex = machineTranslateSubtitles.findIndex(_ => _ === '日本語');
if (machineTranslateJapaneseSubtitleIndex !== -1) {
machineTranslateSubtitleListNodes[machineTranslateJapaneseSubtitleIndex].click();
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment