mirror of
https://github.com/dmunozv04/iSponsorBlockTV.git
synced 2025-12-09 13:26:44 +03:00
Compare commits
37 Commits
v2.6.0
...
5616a6a3a6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5616a6a3a6 | ||
|
|
1116a1f1d5 | ||
|
|
a92c0255dc | ||
|
|
12bed77cca | ||
|
|
dab84dec96 | ||
|
|
aaf1f64ec7 | ||
|
|
49ea01dd9c | ||
|
|
2a2949f552 | ||
|
|
85b4124a52 | ||
|
|
da7dcf67fe | ||
|
|
b4d1feb3a9 | ||
|
|
6afd1bcbaa | ||
|
|
516326e0ff | ||
|
|
461b8bfde7 | ||
|
|
580ac5e3e1 | ||
|
|
52a221c4e0 | ||
|
|
e6dff63b19 | ||
|
|
8bab77237d | ||
|
|
31a6d260e5 | ||
|
|
34256b5c5e | ||
|
|
91842c18f2 | ||
|
|
accb685bf3 | ||
|
|
f68311cbf6 | ||
|
|
aa76d130d8 | ||
|
|
258239338e | ||
|
|
21f52537d8 | ||
|
|
f6bfd9af98 | ||
|
|
4a57cce9bb | ||
|
|
6524361d5d | ||
|
|
27ecc54d93 | ||
|
|
3b7617ef14 | ||
|
|
aa35610c67 | ||
|
|
d581f7ee07 | ||
|
|
8e01755550 | ||
|
|
56b42e26ff | ||
|
|
c88861822c | ||
|
|
315ac2c726 |
13
.github/workflows/build_docker_images.yml
vendored
13
.github/workflows/build_docker_images.yml
vendored
@@ -6,7 +6,8 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- '*'
|
- '*'
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- 'v*.*.*'
|
||||||
|
- 'v*.*.*-*'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- '*'
|
- '*'
|
||||||
@@ -27,7 +28,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
# Get the repository's code
|
# Get the repository's code
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Generate docker tags
|
# Generate docker tags
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
@@ -40,7 +41,9 @@ jobs:
|
|||||||
tags: |
|
tags: |
|
||||||
type=raw,value=develop,priority=900,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }}
|
type=raw,value=develop,priority=900,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }}
|
||||||
type=ref,enable=true,priority=600,prefix=pr-,suffix=,event=pr
|
type=ref,enable=true,priority=600,prefix=pr-,suffix=,event=pr
|
||||||
type=ref,event=tag
|
type=semver,pattern=v{{version}}
|
||||||
|
type=semver,pattern=v{{major}}
|
||||||
|
type=semver,pattern=v{{major}}.{{minor}}
|
||||||
type=ref,event=branch
|
type=ref,event=branch
|
||||||
type=schedule
|
type=schedule
|
||||||
|
|
||||||
@@ -53,7 +56,7 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request' && env.DOCKERHUB_USERNAME != ''
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
@@ -71,7 +74,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
platforms: linux/amd64, linux/arm64, linux/arm/v7
|
platforms: linux/amd64, linux/arm64, linux/arm/v7, linux/386, linux/arm/v6
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|||||||
24
.github/workflows/release.yml
vendored
24
.github/workflows/release.yml
vendored
@@ -11,12 +11,9 @@ name: Release Package
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- '*'
|
- 'main'
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- 'v*'
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- '*'
|
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
@@ -33,10 +30,10 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
|
|
||||||
@@ -103,17 +100,17 @@ jobs:
|
|||||||
CARGO_BUILD_TARGET: ${{ matrix.job.target }}
|
CARGO_BUILD_TARGET: ${{ matrix.job.target }}
|
||||||
PYAPP_DISTRIBUTION_VARIANT_CPU: ${{ matrix.job.cpu_variant }}
|
PYAPP_DISTRIBUTION_VARIANT_CPU: ${{ matrix.job.cpu_variant }}
|
||||||
PYAPP_REPO: pyapp # Use local copy of pyapp (needed for cross-compiling)
|
PYAPP_REPO: pyapp # Use local copy of pyapp (needed for cross-compiling)
|
||||||
PYAPP_VERSION: v0.27.0
|
PYAPP_VERSION: v0.28.0
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Clone PyApp
|
- name: Clone PyApp
|
||||||
run: git clone --depth 1 --branch $PYAPP_VERSION https://github.com/ofek/pyapp $PYAPP_REPO
|
run: git clone --depth 1 --branch $PYAPP_VERSION https://github.com/ofek/pyapp $PYAPP_REPO
|
||||||
|
|
||||||
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
|
|
||||||
@@ -144,7 +141,7 @@ jobs:
|
|||||||
hatch --version
|
hatch --version
|
||||||
|
|
||||||
- name: Get artifact
|
- name: Get artifact
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: sdist-and-wheel
|
name: sdist-and-wheel
|
||||||
path: ${{ github.workspace }}/dist
|
path: ${{ github.workspace }}/dist
|
||||||
@@ -162,9 +159,10 @@ jobs:
|
|||||||
mv dist/binary/iSponsorBlockTV* dist/binary/iSponsorBlockTV-${{ matrix.job.release_suffix }}
|
mv dist/binary/iSponsorBlockTV* dist/binary/iSponsorBlockTV-${{ matrix.job.release_suffix }}
|
||||||
|
|
||||||
- name: Attest build provenance
|
- name: Attest build provenance
|
||||||
uses: actions/attest-build-provenance@v2
|
uses: actions/attest-build-provenance@v3
|
||||||
with:
|
with:
|
||||||
subject-path: dist/binary/*
|
subject-path: dist/binary/*
|
||||||
|
continue-on-error: true # Continue if attestation fails (it will fail on forks)
|
||||||
|
|
||||||
- name: Upload built binary package
|
- name: Upload built binary package
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@@ -183,7 +181,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Get artifact
|
- name: Get artifact
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: sdist-and-wheel
|
name: sdist-and-wheel
|
||||||
path: dist
|
path: dist
|
||||||
@@ -202,7 +200,7 @@ jobs:
|
|||||||
if: github.event_name == 'release' && github.event.action == 'published'
|
if: github.event_name == 'release' && github.event.action == 'published'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v5
|
||||||
name: Get artifact
|
name: Get artifact
|
||||||
with:
|
with:
|
||||||
path: dist
|
path: dist
|
||||||
|
|||||||
4
.github/workflows/update_docker_readme.yml
vendored
4
.github/workflows/update_docker_readme.yml
vendored
@@ -18,11 +18,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
# Get the repository's code
|
# Get the repository's code
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Update description
|
# Update description
|
||||||
- name: Update repo description
|
- name: Update repo description
|
||||||
uses: peter-evans/dockerhub-description@v4
|
uses: peter-evans/dockerhub-description@v5
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Inspired by textual pre-commit config
|
# Inspired by textual pre-commit config
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v5.0.0
|
rev: v6.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-ast # simply checks whether the files parse as valid python
|
- id: check-ast # simply checks whether the files parse as valid python
|
||||||
- id: check-builtin-literals # requires literal syntax when initializing empty or zero python builtin types
|
- id: check-builtin-literals # requires literal syntax when initializing empty or zero python builtin types
|
||||||
@@ -19,13 +19,13 @@ repos:
|
|||||||
- id: mixed-line-ending # replaces or checks mixed line ending
|
- id: mixed-line-ending # replaces or checks mixed line ending
|
||||||
- id: trailing-whitespace # checks for trailing whitespace
|
- id: trailing-whitespace # checks for trailing whitespace
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.12.7
|
rev: v0.14.7
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args: [ --fix, --exit-non-zero-on-fix ]
|
args: [ --fix, --exit-non-zero-on-fix ]
|
||||||
- id: ruff-format
|
- id: ruff-format
|
||||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||||
rev: v0.45.0
|
rev: v0.46.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: markdownlint
|
- id: markdownlint
|
||||||
args: ["--fix"]
|
args: ["--fix"]
|
||||||
|
|||||||
36
README.md
36
README.md
@@ -5,10 +5,11 @@
|
|||||||
[](https://github.com/dmunozv04/iSponsorBlockTV/releases/latest)
|
[](https://github.com/dmunozv04/iSponsorBlockTV/releases/latest)
|
||||||
[](https://github.com/dmunozv04/isponsorblocktv)
|
[](https://github.com/dmunozv04/isponsorblocktv)
|
||||||
|
|
||||||
Skip sponsor segments in YouTube videos playing on a YouTube TV device (see
|
iSponsorBlockTV is a self-hosted application that connects to your YouTube TV
|
||||||
below for compatibility details).
|
app (see compatibility below) and automatically skips segments (like Sponsors
|
||||||
|
or intros) in YouTube videos using the [SponsorBlock](https://sponsor.ajay.app/)
|
||||||
This project is written in asynchronous python and should be pretty quick.
|
API. It can also auto mute and press the "Skip Ad" button the moment it becomes
|
||||||
|
available on YouTube ads.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@ Open an issue/pull request if you have tested a device that isn't listed here.
|
|||||||
|
|
||||||
| Device | Status |
|
| Device | Status |
|
||||||
|:-------------------|:------:|
|
|:-------------------|:------:|
|
||||||
| Apple TV | ✅ |
|
| Apple TV | ✅* |
|
||||||
| Samsung TV (Tizen) | ✅ |
|
| Samsung TV (Tizen) | ✅ |
|
||||||
| LG TV (WebOS) | ✅ |
|
| LG TV (WebOS) | ✅ |
|
||||||
| Android TV | ✅ |
|
| Android TV | ✅ |
|
||||||
@@ -35,17 +36,22 @@ Open an issue/pull request if you have tested a device that isn't listed here.
|
|||||||
| Xbox One/Series | ✅ |
|
| Xbox One/Series | ✅ |
|
||||||
| Playstation 4/5 | ✅ |
|
| Playstation 4/5 | ✅ |
|
||||||
|
|
||||||
|
*Ad muting won't work when using AirPlay to send the audio to another speaker.
|
||||||
|
|
||||||
|
** Shorts aren't fully supported due to limitations on YouTube's side.
|
||||||
|
A single short can be seen by either selecting the "Disconnect" option in the
|
||||||
|
warning shown
|
||||||
|
or by long pressing the thumbnail to open the menu and clicking play from there
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Run iSponsorBlockTV on a computer that has network access.
|
Run iSponsorBlockTV on a computer that has network access. It doesn't need to
|
||||||
|
be on the same network as the device, only access to youtube.com is required.
|
||||||
|
|
||||||
Auto discovery will require the computer to be on the same network as the device
|
Auto discovery will require the computer to be on the same network as the device
|
||||||
during setup.
|
during setup.
|
||||||
The device can also be manually added to iSponsorBlockTV with a YouTube TV code.
|
The device can also be manually added to iSponsorBlockTV with a YouTube TV code.
|
||||||
This code can be found in the settings page of your YouTube application.
|
This code can be found in the settings page of your YouTube TV application.
|
||||||
|
|
||||||
It connects to the device, watches its activity and skips any sponsor segment
|
|
||||||
using the [SponsorBlock](https://sponsor.ajay.app/) API.
|
|
||||||
It can also skip/mute YouTube ads.
|
|
||||||
|
|
||||||
## Libraries used
|
## Libraries used
|
||||||
|
|
||||||
@@ -71,11 +77,9 @@ It can also skip/mute YouTube ads.
|
|||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
- [dmunozv04](https://github.com/dmunozv04) - creator and maintainer
|
[](https://github.com/dmunozv04/iSponsorBlockTV/graphs/contributors)
|
||||||
- [HaltCatchFire](https://github.com/HaltCatchFire) - updated dependencies and
|
|
||||||
improved skip logic
|
Made with [contrib.rocks](https://contrib.rocks).
|
||||||
- [Oxixes](https://github.com/oxixes) - added support for channel whitelist and
|
|
||||||
minor improvements
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
version: '3.3'
|
|
||||||
services:
|
services:
|
||||||
iSponsorBlockTV:
|
iSponsorBlockTV:
|
||||||
image: ghcr.io/dmunozv04/isponsorblocktv
|
image: ghcr.io/dmunozv04/isponsorblocktv
|
||||||
container_name: iSponsorBlockTV
|
container_name: iSponsorBlockTV
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- /PATH_TO_YOUR_DATA_DIR:/app/data
|
- /PATH_TO_YOUR_DATA_DIR:/app/data
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "iSponsorBlockTV"
|
name = "iSponsorBlockTV"
|
||||||
version = "2.6.0"
|
version = "2.6.1"
|
||||||
authors = [
|
authors = [
|
||||||
{"name" = "dmunozv04"}
|
{"name" = "dmunozv04"}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
aiohttp==3.12.14
|
aiohttp==3.12.15
|
||||||
appdirs==1.4.4
|
appdirs==1.4.4
|
||||||
async-cache==1.1.1
|
async-cache==1.1.1
|
||||||
pyytlounge==2.3.0
|
pyytlounge==2.3.0
|
||||||
rich==14.1.0
|
rich==14.1.0
|
||||||
ssdp==1.3.0
|
ssdp==1.3.1
|
||||||
textual==5.3.0
|
textual==5.3.0
|
||||||
textual-slider==0.2.0
|
textual-slider==0.2.0
|
||||||
xmltodict==0.14.2
|
xmltodict==0.15.1
|
||||||
rich_click==1.8.9
|
rich_click==1.8.9
|
||||||
|
|||||||
Reference in New Issue
Block a user