castsponsorskip

command module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2023 License: GPL-3.0 Imports: 2 Imported by: 0

README

CastSponsorSkip

A Go program that skips sponsored YouTube content and skippable ads on all local Google Cast devices, using the SponsorBlock API. This project was inspired by sponsorblockcast, but written from scratch to decrease memory and CPU usage, and to work around some of its problems (see Differences from sponsorblockcast).

When run, this program will watch all Google Cast devices on the LAN. If a Cast device begins playing a YouTube video, sponsored segments are fetched from the SponsorBlock API. When the device reaches a sponsored segment, the CastSponsorSkip will quickly seek to the end of the segment.

Additionally, CastSponsorSkip will look for skippable YouTube ads, and automatically hit the skip button when it becomes available.

Installation

Docker
Click to expand

You can install Docker directly or use Docker Compose (Or use Podman, Portainer, etc). Please note you MUST use the host network as shown below for cli or in the example docker-compose file.

Docker

Run the below commands as root or a member of the docker group:

docker run --network=host --name=castsponsorskip ghcr.io/gabe565/castsponsorskip
Docker Compose

First you will need a docker-compose.yaml file, such as the one included in this repo. Run the below commands as root or a member of the docker group:

docker compose up -d
APT (Ubuntu, Debian)
Click to expand
  1. If you don't have it already, install the ca-certificates package

    sudo apt install ca-certificates
    
  2. Add gabe565 apt repository

    echo 'deb [trusted=yes] https://apt.gabe565.com /' | sudo tee /etc/apt/sources.list.d/gabe565.list
    
  3. Update apt repositories

    sudo apt update
    
  4. Install CastSponsorSkip

    sudo apt install castsponsorskip
    
RPM (CentOS, RHEL)
Click to expand
  1. If you don't have it already, install the ca-certificates package

    sudo yum install ca-certificates
    
  2. Add gabe565 rpm repository to /etc/yum.repos.d/gabe565.repo

    [gabe565]
    name=gabe565
    baseurl=https://rpm.gabe565.com
    enabled=1
    gpgcheck=0
    
  3. Install CastSponsorSkip

    sudo yum install castsponsorskip
    
AUR (Arch Linux)
Click to expand

Install castsponsorskip-bin with your AUR helper of choice.

Homebrew (macOS, Linux)
Click to expand

Install CastSponsorSkip from gabe565/homebrew-tap:

brew install gabe565/tap/castsponsorskip
Manual Installation
Click to expand

Download and run the latest release binary for your system and architecture.

Usage

Run castsponsorskip from a terminal or activate the service with systemd:

systemctl enable --now castsponsorskip
Homebrew Instructions

Use brew services to start CastSponsorSkip:

brew services start castsponsorskip

Configuration

You can configure the following parameters by setting the appropriate command line flag or environment variable:

Flag Env Description Default
--paused-interval SBC_PAUSED_INTERVAL Time to wait between each poll of the Cast device status when paused. 1m
--playing-interval SBC_PLAYING_INTERVAL Time to wait between each poll of the Cast device status when playing. 1s
--categories SBC_CATEGORIES (or SBCCATEGORIES) Comma-separated (or space-separated) SponsorBlock categories to skip, see category list. sponsor
--interface SBC_INTERFACE Optionally configure the network interface to use. All interfaces

To modify the variables when running as a systemd service, create an override for the service with:

sudo systemctl edit castsponsorskip.service

This will open a blank override file where you can specify environment variables like so:

[Service]
Environment="SBC_PAUSED_INTERVAL=1m"
Environment="SBC_PLAYING_INTERVAL=1s"
Environment="SBC_CATEGORIES=sponsor,selfpromo"

To modify the variables when running as a Docker container, you can add arguments to the docker run command like so:

docker run --network=host --env SBC_PAUSED_INTERVAL=5m --env SBC_PLAYING_INTERVAL=2s --name=castsponsorskip ghcr.io/gabe565/castsponsorskip

When using docker-compose.yaml, you can simply edit the environment directive as shown in the example file.

Differences from sponsorblockcast

  • Compiles to a single binary. No dependencies are required other than CastSponsorSkip.
  • Scans Cast device status much less frequently when a YouTube video is not playing, resulting in decreased CPU usage and less stress on the Cast device.
  • Written Go, which is the same language as go-chromecast. This means go-chromecast functions can be called directly instead of relying on shell scripts, child commands, or string parsing.
  • go-chromecast only needs to be loaded once within a single Go program, resulting on lower memory usage.
  • Dependency updates are automated with Renovate.

I own 12 Google Cast devices, and have compared CPU and memory usage of the two programs. Note that CPU usage is measured in "milliCPU", meaning that 1m is equal to 1/1000 of a CPU. Here are the averages:

Program CPU Memory
sponsorblockcast 75m 70Mi
castsponsorskip 1m 10Mi

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL