mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-12 14:37:23 +03:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c4946a3fe | ||
|
|
7d2e4c8515 | ||
|
|
3b2fe51973 | ||
|
|
b2ac881b9b | ||
|
|
4a134d7604 | ||
|
|
ad7d3a320b | ||
|
|
0c3aa922ca | ||
|
|
875ec357d9 | ||
|
|
510c3723ad | ||
|
|
f5910407ba | ||
|
|
2691dc5df5 | ||
|
|
31ef4f39bf | ||
|
|
4044a22e04 | ||
|
|
3c2c140eb5 | ||
|
|
5cdbc233e4 | ||
|
|
86f8809de7 | ||
|
|
5163b3362f | ||
|
|
443fb1f448 | ||
|
|
7cd7089980 | ||
|
|
61f5d7a902 | ||
|
|
6ab88e9fa0 | ||
|
|
3bddd0405c | ||
|
|
e4b05a316a | ||
|
|
451ceb370b |
12
.github/workflows/ci.yml
vendored
12
.github/workflows/ci.yml
vendored
@@ -10,10 +10,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
# Initialization
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
- run: npm ci
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
# Create Chrome artifacts
|
||||
- name: Create Chrome artifacts
|
||||
run: npm run build:chrome
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ChromeExtension
|
||||
path: dist
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
# Create Firefox artifacts
|
||||
- name: Create Firefox artifacts
|
||||
run: npm run build:firefox
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: FirefoxExtension
|
||||
path: dist
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
# Create Beta artifacts (Builds with the name changed to beta)
|
||||
- name: Create Chrome Beta artifacts
|
||||
run: npm run build:chrome -- --env stream=beta
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ChromeExtensionBeta
|
||||
path: dist
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
|
||||
- name: Create Firefox Beta artifacts
|
||||
run: npm run build:firefox -- --env stream=beta
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: FirefoxExtensionBeta
|
||||
path: dist
|
||||
|
||||
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@@ -12,10 +12,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
# Initialization
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
- name: Copy configuration
|
||||
@@ -108,7 +108,7 @@ jobs:
|
||||
# Firefox Beta
|
||||
- name: Create Firefox Beta artifacts
|
||||
run: npm run build:firefox -- --env stream=beta
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: FirefoxExtensionBeta
|
||||
path: dist
|
||||
@@ -125,7 +125,7 @@ jobs:
|
||||
run: sudo apt-get install rename
|
||||
- name: Rename signed file
|
||||
run: cd ./web-ext-artifacts ; rename 's/.*/FirefoxSignedInstaller.xpi/' *
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: FirefoxExtensionSigned.xpi
|
||||
path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi
|
||||
|
||||
6
.github/workflows/tests.yml
vendored
6
.github/workflows/tests.yml
vendored
@@ -9,10 +9,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
# Initialization
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
- run: npm ci
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
|
||||
- name: Upload results on fail
|
||||
if: ${{ failure() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Test Results
|
||||
path: ./test-results
|
||||
6
.github/workflows/update-oss-attribution.yml
vendored
6
.github/workflows/update-oss-attribution.yml
vendored
@@ -12,10 +12,10 @@ jobs:
|
||||
update-oss:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
- name: Install and generate attribution
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
cd ci && npx ts-node prettify.ts
|
||||
|
||||
- name: Create pull request to update list
|
||||
uses: peter-evans/create-pull-request@2b011faafdcbc9ceb11414d64d0573f37c774b04
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
# v4.2.3
|
||||
with:
|
||||
commit-message: Update OSS Attribution
|
||||
|
||||
4
.github/workflows/updateInvidous.yml
vendored
4
.github/workflows/updateInvidous.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
check-list:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Download instance lists
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
run: npm run ci:invidious
|
||||
|
||||
- name: Create pull request to update list
|
||||
uses: peter-evans/create-pull-request@2b011faafdcbc9ceb11414d64d0573f37c774b04
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
# v4.2.3
|
||||
with:
|
||||
commit-message: Update Invidious List
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
"icons/close.png",
|
||||
"icons/skipIcon.svg",
|
||||
"icons/refresh.svg",
|
||||
"icons/beep.ogg",
|
||||
"icons/beep.oga",
|
||||
"icons/pause.svg",
|
||||
"icons/stop.svg",
|
||||
"icons/skip.svg",
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"icons/close.png",
|
||||
"icons/skipIcon.svg",
|
||||
"icons/refresh.svg",
|
||||
"icons/beep.ogg",
|
||||
"icons/beep.oga",
|
||||
"icons/pause.svg",
|
||||
"icons/stop.svg",
|
||||
"icons/skip.svg",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "__MSG_fullName__",
|
||||
"short_name": "SponsorBlock",
|
||||
"version": "5.9.2",
|
||||
"version": "5.9.6",
|
||||
"default_locale": "en",
|
||||
"description": "__MSG_Description__",
|
||||
"homepage_url": "https://sponsor.ajay.app",
|
||||
|
||||
Submodule maze-utils updated: f12ac4f5f8...7325eadedd
Submodule public/_locales updated: 6abf21bf47...8a2fa2acbb
@@ -118,13 +118,13 @@ html, body {
|
||||
|
||||
.option-group > div {
|
||||
min-height: 50px;
|
||||
padding: 20px 0;
|
||||
padding: 15px 0;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
border-image: linear-gradient(to right, var(--border-color), #00000000 80%) 1;
|
||||
}
|
||||
|
||||
.categoryExtraOptions {
|
||||
padding-bottom: 20px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
#music_offtopic_autoSkipOnMusicVideos {
|
||||
@@ -271,11 +271,11 @@ input[type='number'] {
|
||||
|
||||
.small-description {
|
||||
font-size: 13px;
|
||||
padding: 15px 0 0 20px;
|
||||
padding: 5px 0 0 20px;
|
||||
}
|
||||
|
||||
.small-description td {
|
||||
padding: 10px 0 20px 20px;
|
||||
padding: 2.5px 0 10px 20px;
|
||||
}
|
||||
|
||||
.indent {
|
||||
@@ -283,7 +283,7 @@ input[type='number'] {
|
||||
}
|
||||
|
||||
.categoryTableElement td {
|
||||
padding-top: 10px;
|
||||
padding-top: 5px;
|
||||
border-top: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
@@ -353,7 +353,8 @@ input[type='number'] {
|
||||
|
||||
font-size: 14px;
|
||||
|
||||
display: table;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.switch-container .switch-label {
|
||||
|
||||
@@ -511,7 +511,7 @@ function handleMobileControlsMutations(): void {
|
||||
function getPreviewBarAttachElement(): HTMLElement | null {
|
||||
const progressElementOptions = [{
|
||||
// For newer mobile YouTube (Sept 2024)
|
||||
selector: ".YtChapteredProgressBarHost",
|
||||
selector: ".YtProgressBarLineHost, .YtChapteredProgressBarHost",
|
||||
isVisibleCheck: true
|
||||
}, {
|
||||
// For newer mobile YouTube (May 2024)
|
||||
@@ -1721,7 +1721,7 @@ function skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, u
|
||||
|
||||
if (autoSkip && Config.config.audioNotificationOnSkip
|
||||
&& !isSubmittingSegment && !getVideo()?.muted) {
|
||||
const beep = new Audio(chrome.runtime.getURL("icons/beep.ogg"));
|
||||
const beep = new Audio(chrome.runtime.getURL("icons/beep.oga"));
|
||||
beep.volume = getVideo().volume * 0.1;
|
||||
const oldMetadata = navigator.mediaSession.metadata
|
||||
beep.play();
|
||||
@@ -2523,9 +2523,10 @@ function addHotkeyListener(): void {
|
||||
}
|
||||
|
||||
function hotkeyListener(e: KeyboardEvent): void {
|
||||
if (["textarea", "input"].includes(document.activeElement?.tagName?.toLowerCase())
|
||||
|| document.activeElement?.["contentEditable"]
|
||||
|| document.activeElement?.id?.toLowerCase()?.match(/editable|input/)) return;
|
||||
if ((["textarea", "input"].includes(document.activeElement?.tagName?.toLowerCase())
|
||||
|| (document.activeElement as HTMLElement)?.isContentEditable
|
||||
|| document.activeElement?.id?.toLowerCase()?.match(/editable|input/))
|
||||
&& document.hasFocus()) return;
|
||||
|
||||
const key: Keybind = {
|
||||
key: e.key,
|
||||
@@ -2633,11 +2634,11 @@ function showTimeWithoutSkips(skippedDuration: number): void {
|
||||
}
|
||||
|
||||
// YouTube player time display
|
||||
const displayClass =
|
||||
isOnInvidious() ? "vjs-duration" :
|
||||
isOnMobileYouTube() ? "ytm-time-display" :
|
||||
"ytp-time-display.notranslate";
|
||||
const display = document.querySelector(`.${displayClass}`);
|
||||
const selector =
|
||||
isOnInvidious() ? ".vjs-duration" :
|
||||
isOnMobileYouTube() ? ".YtwPlayerTimeDisplayContent" :
|
||||
".ytp-time-display.notranslate .ytp-time-wrapper";
|
||||
const display = document.querySelector(selector);
|
||||
if (!display) return;
|
||||
|
||||
const durationID = "sponsorBlockDurationAfterSkips";
|
||||
@@ -2647,9 +2648,13 @@ function showTimeWithoutSkips(skippedDuration: number): void {
|
||||
if (duration === null) {
|
||||
duration = document.createElement('span');
|
||||
duration.id = durationID;
|
||||
if (!isOnInvidious()) duration.classList.add(displayClass);
|
||||
|
||||
display.appendChild(duration);
|
||||
if (isOnMobileYouTube()) {
|
||||
duration.style.paddingLeft = "4px";
|
||||
display.insertBefore(duration, display.lastChild);
|
||||
} else {
|
||||
display.appendChild(duration);
|
||||
}
|
||||
}
|
||||
|
||||
const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);
|
||||
|
||||
@@ -647,8 +647,21 @@ class PreviewBar {
|
||||
if (changedData.scale !== null) {
|
||||
const transformScale = (changedData.scale) / progressBar.clientWidth;
|
||||
|
||||
const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));
|
||||
customChangedElement.style.transform =
|
||||
`scaleX(${Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft))}`;
|
||||
`scaleX(${scale})`;
|
||||
if (customChangedElement.style.backgroundSize) {
|
||||
const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);
|
||||
customChangedElement.style.backgroundSize = `${backgroundSize}px`;
|
||||
|
||||
if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {
|
||||
customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;
|
||||
} else {
|
||||
// Passed this section
|
||||
customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;
|
||||
}
|
||||
}
|
||||
|
||||
if (firstUpdate) {
|
||||
customChangedElement.style.transition = "none";
|
||||
setTimeout(() => customChangedElement.style.removeProperty("transition"), 50);
|
||||
|
||||
@@ -64,8 +64,18 @@ function thumbnailHoverListener(e: MouseEvent) {
|
||||
}
|
||||
}
|
||||
|
||||
function getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {
|
||||
if (isOnInvidious()) {
|
||||
return thumbnail.parentElement as HTMLAnchorElement | null;
|
||||
} else if (thumbnail.nodeName.toLowerCase() === "yt-thumbnail-view-model") {
|
||||
return thumbnail.closest("yt-lockup-view-model")?.querySelector("a.yt-lockup-metadata-view-model-wiz__title");
|
||||
} else {
|
||||
return thumbnail.querySelector("#thumbnail");
|
||||
}
|
||||
}
|
||||
|
||||
function extractVideoID(thumbnail: HTMLImageElement): VideoID | null {
|
||||
const link = (isOnInvidious() ? thumbnail.parentElement : thumbnail.querySelector("#thumbnail")) as HTMLAnchorElement
|
||||
const link = getLink(thumbnail);
|
||||
if (!link || link.nodeName !== "A" || !link.href) return null; // no link found
|
||||
|
||||
return parseYouTubeVideoIDFromURL(link.href)?.videoID;
|
||||
|
||||
Reference in New Issue
Block a user