https://github.com/tilap/stream-helper-extension
https://github.com/tilap/stream-helper-extension
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tilap/stream-helper-extension
- Owner: tilap
- License: mit
- Created: 2026-04-08T13:40:49.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-08T14:27:56.000Z (3 months ago)
- Last Synced: 2026-04-08T16:24:00.760Z (3 months ago)
- Language: JavaScript
- Size: 51.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Stream Helper Extension (Chrome, MV3)
Chrome extension for the Senpai streaming website.
## Features
- Automatically skips / bypasses the ad-flow on supported pages.
- Adds a button near the embedded player to copy a `yt-dlp` command to your clipboard.
## Installation (macOS)
- Open `chrome://extensions`
- Enable **Developer mode**
- Click **Load unpacked**
- Select this folder
## Requirements
- Node.js **18+** (the updater uses the built-in `fetch` API)
## Supported pages
The content script is injected only on:
- `https:///movie/*`
- `https:///episode/*`
- `https:///episode/*/*`
Where `` is derived from `SENPAI_ORIGIN`.
## Maintenance: when the website changes domain
### Automatic update (recommended)
Fetches the currently advertised official domain from `https://senpai-stream.wiki/`, then updates both `domain-config.js` and `manifest.json`:
```bash
node update.mjs
```
### Manual update
If you already know the new domain:
```bash
node update.mjs https://new-domain.com
```
### Test the live fetch
This performs a real fetch to `https://senpai-stream.wiki/` and prints the resolved origin + host (or exits with an error):
```bash
node test-fetch-domain.mjs
```
### Why update `manifest.json`?
Chrome requires static match patterns in the manifest for content scripts. If the domain changes but `manifest.json` isn’t updated, the content script won’t be injected on the new host.
### After running the updater
After updating the domain, go to `chrome://extensions` and click **Reload** on the extension.
## How it works (MV3)
- The extension uses a **content script** (`content.js`) declared in `manifest.json`.
- It observes DOM changes to detect the "Continue" ad step and the player iframe, then performs the same clicks a user would.
- The download button copies a `yt-dlp` command to the clipboard (best-effort URL extraction; cross-origin iframes may limit what can be read directly).
## Debugging
`content.js` has a `DEBUG` flag. When enabled, it shows a small overlay and prints extra logs to the console.
## Permissions
This extension currently declares **no special permissions** and relies on static `content_scripts` matches.
## Security & privacy
- **No tracking**: the extension does not include analytics.
- **No network exfiltration**: it does not send page data to external servers.
- **Local-only behavior**: it modifies the current page DOM and may copy a generated command to your clipboard when you click the button.
- **Least privilege**: the extension is scoped to specific URL match patterns, not ``.