mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-06 11:37:02 +03:00
feat: Option to auto-skip non-music on youtube music only
This commit is contained in:
Submodule maze-utils updated: b22477a864...81b4149888
Submodule public/_locales updated: e9efadcf82...e399706837
@@ -243,6 +243,9 @@ class CategorySkipOptionsComponent extends React.Component<CategorySkipOptionsPr
|
|||||||
return [{
|
return [{
|
||||||
configKey: "autoSkipOnMusicVideos",
|
configKey: "autoSkipOnMusicVideos",
|
||||||
label: chrome.i18n.getMessage("autoSkipOnMusicVideos"),
|
label: chrome.i18n.getMessage("autoSkipOnMusicVideos"),
|
||||||
|
}, {
|
||||||
|
configKey: "skipNonMusicOnlyOnYoutubeMusic",
|
||||||
|
label: chrome.i18n.getMessage("skipNonMusicOnlyOnYoutubeMusic"),
|
||||||
}];
|
}];
|
||||||
default:
|
default:
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ interface SBConfig {
|
|||||||
donateClicked: number;
|
donateClicked: number;
|
||||||
autoHideInfoButton: boolean;
|
autoHideInfoButton: boolean;
|
||||||
autoSkipOnMusicVideos: boolean;
|
autoSkipOnMusicVideos: boolean;
|
||||||
|
skipNonMusicOnlyOnYoutubeMusic: boolean;
|
||||||
colorPalette: {
|
colorPalette: {
|
||||||
red: string;
|
red: string;
|
||||||
white: string;
|
white: string;
|
||||||
@@ -322,6 +323,7 @@ const syncDefaults = {
|
|||||||
donateClicked: 0,
|
donateClicked: 0,
|
||||||
autoHideInfoButton: true,
|
autoHideInfoButton: true,
|
||||||
autoSkipOnMusicVideos: false,
|
autoSkipOnMusicVideos: false,
|
||||||
|
skipNonMusicOnlyOnYoutubeMusic: false,
|
||||||
scrollToEditTimeUpdate: false, // false means the tooltip will be shown
|
scrollToEditTimeUpdate: false, // false means the tooltip will be shown
|
||||||
categoryPillUpdate: false,
|
categoryPillUpdate: false,
|
||||||
showChapterInfoMessage: true,
|
showChapterInfoMessage: true,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ import { ChapterVote } from "./render/ChapterVote";
|
|||||||
import { openWarningDialog } from "./utils/warnings";
|
import { openWarningDialog } from "./utils/warnings";
|
||||||
import { isFirefoxOrSafari, waitFor } from "../maze-utils/src";
|
import { isFirefoxOrSafari, waitFor } from "../maze-utils/src";
|
||||||
import { getErrorMessage, getFormattedTime } from "../maze-utils/src/formating";
|
import { getErrorMessage, getFormattedTime } from "../maze-utils/src/formating";
|
||||||
import { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from "../maze-utils/src/video";
|
import { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from "../maze-utils/src/video";
|
||||||
import { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from "../maze-utils/src/config";
|
import { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from "../maze-utils/src/config";
|
||||||
import { findValidElement } from "../maze-utils/src/dom"
|
import { findValidElement } from "../maze-utils/src/dom"
|
||||||
import { getHash, HashedValue } from "../maze-utils/src/hash";
|
import { getHash, HashedValue } from "../maze-utils/src/hash";
|
||||||
@@ -1891,16 +1891,33 @@ function createButton(baseID: string, title: string, callback: () => void, image
|
|||||||
}
|
}
|
||||||
|
|
||||||
function shouldAutoSkip(segment: SponsorTime): boolean {
|
function shouldAutoSkip(segment: SponsorTime): boolean {
|
||||||
return (!Config.config.manualSkipOnFullVideo || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))
|
if (Config.config.manualSkipOnFullVideo && !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full)) {
|
||||||
&& (utils.getCategorySelection(segment.category)?.option === CategorySkipOption.AutoSkip ||
|
return false;
|
||||||
(Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic")
|
}
|
||||||
&& segment.actionType === ActionType.Skip)
|
|
||||||
|| sponsorTimesSubmitting.some((s) => s.segment === segment.segment));
|
return ( // Normal skip
|
||||||
|
utils.getCategorySelection(segment.category)?.option === CategorySkipOption.AutoSkip
|
||||||
|
// Forbid skipping of non-music if we are not on Youtube Music
|
||||||
|
&& !(segment.category === "music_offtopic" && Config.config.skipNonMusicOnlyOnYoutubeMusic && !isOnYouTubeMusic())
|
||||||
|
)
|
||||||
|
||
|
||||||
|
( // Skip every segment, if it's a music video
|
||||||
|
|
||||||
|
// Forbid autoSkipOnMusicVideos if if we are not on Youtube Music
|
||||||
|
!(Config.config.skipNonMusicOnlyOnYoutubeMusic && !isOnYouTubeMusic())
|
||||||
|
&& Config.config.autoSkipOnMusicVideos
|
||||||
|
&& sponsorTimes?.some((s) => s.category === "music_offtopic")
|
||||||
|
&& segment.actionType === ActionType.Skip
|
||||||
|
)
|
||||||
|
||
|
||||||
|
sponsorTimesSubmitting.some((s) => s.segment === segment.segment);
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldSkip(segment: SponsorTime): boolean {
|
function shouldSkip(segment: SponsorTime): boolean {
|
||||||
return (segment.actionType !== ActionType.Full
|
if (segment.actionType === ActionType.Full) {
|
||||||
&& segment.source !== SponsorSourceType.YouTube
|
return false;
|
||||||
|
}
|
||||||
|
return (segment.source !== SponsorSourceType.YouTube
|
||||||
&& utils.getCategorySelection(segment.category)?.option !== CategorySkipOption.ShowOverlay)
|
&& utils.getCategorySelection(segment.category)?.option !== CategorySkipOption.ShowOverlay)
|
||||||
|| (Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic")
|
|| (Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic")
|
||||||
&& segment.actionType === ActionType.Skip);
|
&& segment.actionType === ActionType.Skip);
|
||||||
|
|||||||
Reference in New Issue
Block a user