16 Commits

Author SHA1 Message Date
f9a0197f7f update readme 2025-11-08 23:24:25 +01:00
d8bb70890a update build instructions 2025-11-08 22:26:18 +01:00
45900b2e86 do not upload sources to releases 2025-11-08 22:21:10 +01:00
3058847f31 upload artifacts when publishing 2025-11-08 22:20:35 +01:00
082f30722c do not lint on tag push 2025-11-08 21:52:46 +01:00
39a6fffd50 update version 2025-11-08 20:00:37 +01:00
6109cd5543 fix vidmoly 2025-11-08 19:57:36 +01:00
de38196a77 fix player not accessible when using mv3 2025-11-08 19:56:46 +01:00
d2b6086155 fix player background color 2025-11-08 19:55:54 +01:00
66c638425d fix publish action 2025-11-08 18:38:37 +01:00
b2da03f9a1 fix chrome build artifact 2025-11-08 18:33:19 +01:00
76a4217aab fix readme formatting 2025-11-08 18:29:30 +01:00
cac464cc65 update actions 2025-11-08 18:29:30 +01:00
7bd8f01a1b update readme 2025-11-08 18:29:30 +01:00
b7c5e020b6 update prettier ignored files list 2025-11-08 18:29:30 +01:00
fdd1ca350e update 2025-11-08 18:29:28 +01:00
7 changed files with 179 additions and 62 deletions

View File

@@ -12,7 +12,8 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- uses: actions/setup-node@v6
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: 22
cache: 'npm'
@@ -36,4 +37,4 @@ jobs:
uses: actions/upload-artifact@v5
with:
name: stream-bypass-mv3
path: .output/firefox-mv3
path: .output/chrome-mv3

View File

@@ -2,6 +2,10 @@ name: lint
on:
push:
branches:
- '**'
tags-ignore:
- '*'
pull_request:
jobs:
@@ -11,7 +15,8 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- uses: actions/setup-node@v6
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: 22
cache: 'npm'

85
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
name: publish
on:
push:
tags:
- v*
workflow_dispatch:
inputs:
dry_run:
type: boolean
description: Dry run
default: true
permissions:
contents: write
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: 22
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Zip extensions
run: |
npm run zip:firefox
npm run zip
- name: Resolve zip extension paths
id: paths
run: |
MV2_PATH=$(find .output -type f -name "*-mv2.zip")
MV2_NAME=$(basename $MV2_PATH)
MV3_PATH=$(find .output -type f -name "*-mv3.zip")
MV3_NAME=$(basename $MV3_PATH)
echo "mv2_path=$MV2_PATH" >> "$GITHUB_OUTPUT"
echo "mv2_name=$MV2_NAME" >> "$GITHUB_OUTPUT"
echo "mv3_path=$MV3_PATH" >> "$GITHUB_OUTPUT"
echo "mv3_name=$MV3_NAME" >> "$GITHUB_OUTPUT"
- name: Upload mv2 as artifact
uses: actions/upload-artifact@v5
with:
name: ${{ steps.paths.outputs.mv2_name }}
path: ${{ steps.paths.outputs.mv2_path }}
- name: Upload mv3 as artifact
uses: actions/upload-artifact@v5
with:
name: ${{ steps.paths.outputs.mv3_name }}
path: ${{ steps.paths.outputs.mv3_path }}
- name: Upload to latest release
if: github.event.inputs.dry_run != 'true'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: .output/*mv*.zip
tag: ${{ github.ref }}
overwrite: true
file_glob: true
- name: Submit to stores
env:
DRY_RUN: ${{ github.event.inputs.dry_run }}
FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }}
FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }}
FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }}
CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
run: |
npx wxt submit \
--firefox-zip .output/*-mv2.zip --firefox-sources-zip .output/*-sources.zip \
--chrome-zip .output/*-mv3.zip

View File

@@ -4,7 +4,7 @@ A multi-browser addon / extension for multiple streaming providers which redirec
<p align="center">
<a href="https://github.com/bytedream/stream-bypass/releases/latest">
<img src="https://img.shields.io/github/v/release/ByteDream/stream-bypass?label=Version&style=flat-square" alt="Version">
<img src="https://img.shields.io/github/v/release/bytedream/stream-bypass?label=Version&style=flat-square" alt="Version">
</a>
<a href="https://addons.mozilla.org/de/firefox/addon/stream-bypass/">
<img src="https://img.shields.io/amo/users/stream-bypass?label=Firefox%20Users&style=flat-square" alt="Firefox Addon Store">
@@ -13,7 +13,7 @@ A multi-browser addon / extension for multiple streaming providers which redirec
<img src="https://img.shields.io/chrome-web-store/users/ddfpfjomnakfckhmilacnbokdaknamdb?style=flat-square&label=Chrome%20Users" alt="Chrome Store">
</a>
<a href="https://github.com/bytedream/stream-bypass/releases/latest">
<img src="https://img.shields.io/github/downloads/ByteDream/stream-bypass/total?label=GitHub%20Downloads&style=flat-square" alt="GitHub Downloads">
<img src="https://img.shields.io/github/downloads/bytedream/stream-bypass/total?label=GitHub%20Downloads&style=flat-square" alt="GitHub Downloads">
</a>
</p>
@@ -40,7 +40,7 @@ This has the advantage, that no advertising or popups are shown when trying to i
Additionally, this enables you to download the video by right-clicking it and just choose the download option.
<details id="example">
<summary><b>How it's working:</b></summary>
<summary><b>How it works:</b></summary>
<img src="example.gif" alt="">
</details>
@@ -53,32 +53,39 @@ The best way to install the extension are the official browser extension stores:
- [Firefox Addon Store](https://addons.mozilla.org/de/firefox/addon/stream-bypass/) (Firefox for Android is supported too!)
- [Chrome Web Store](https://chromewebstore.google.com/detail/ddfpfjomnakfckhmilacnbokdaknamdb)
### Manual installation
<details>
<summary><h3 id="manual-installation1">Manual installation</h3></summary>
- Firefox (mv2)
- Download `stream-bypass-<version>-mv2.zip` from the [latest release](https://github.com/ByteDream/stream-bypass/releases/latest) and unzip it (with [7zip](https://www.7-zip.org/) or something like that)
- Download `stream-bypass-<version>-mv2.zip` from the [latest release](https://github.com/bytedream/stream-bypass/releases/latest) and unzip it (e.g. with [7zip](https://www.7-zip.org/))
- Go into your browser and type `about:debugging#/runtime/this-firefox` in the address bar
- Click the `Load Temporary Add-on...` button and choose the `manifest.json` file in the unzipped directory
- Chromium / Google Chrome (mv3)
> As nearly every browser other than Firefox is based on Chromium, this should be the same for most of them
- Download `stream-bypass-<version>-mv3.zip` from the [latest release](https://github.com/ByteDream/stream-bypass/releases/latest) and unzip it (with [7zip](https://www.7-zip.org/) or something like that)
- Download `stream-bypass-<version>-mv3.zip` from the [latest release](https://github.com/bytedream/stream-bypass/releases/latest) and unzip it (e.g. [7zip](https://www.7-zip.org/))
- Go into your browser and type `chrome://extensions` in the address bar
- Turn on the developer mode by checking the switch in the top right corner
- Click `Load unpacked` and choose the unzipped directory
</details>
## ✨ Features
- ✔: Supported.
- ✖: Not supported.
| Feature | Firefox (mv2) | Chrome (mv3) | Firefox for Android (mv2) |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------ | ------------------------- |
| Replace site-speicifc video player with browser native video player | ✔ | ✔ | ✔ |
| Support websites that are accessed via a redirect | ✔ | | ✔ |
| Open video in mpv (with [ff2mpv](https://github.com/ByteDream/stream-bypass/tree/master#ff2mpv-use-mpv-to-directly-play-streams)) | ✔ | ✔ | |
- ✔️: Supported.
- ❌: Not supported.
| Support websites that are accessed via a redirect | ✔ | | ✔ |
| Open video in mpv (with [ff2mpv](https://github.com/bytedream/stream-bypass/tree/master#ff2mpv-use-mpv-to-directly-play-streams)) | ✔ | ✔ | |
## 📜 Supported websites
- ✔: Everything ok.
- ⚠: Works with limitations.
- ✖: Not supported.
| Site | Firefox & Firefox for Android (mv2) | Chrome & Chromium based (mv2) |
| --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| [dropload.io](https://dropload.io) | ✔ | ✔ |
@@ -86,32 +93,28 @@ The best way to install the extension are the official browser extension stores:
| [filemoon.to](https://filemoon.to) | ✔ | ✔ |
| [goodstream.uno](https://goodstream.uno) | ✔ | ✔ |
| [kwik.cx](https://kwik.cx) | ✔ | ✔ |
| [loadx.ws](https://loadx.ws) | ✔ | (background request always required) |
| [luluvdo.com](https://luluvdo.com) | ✔ | (background request always required) |
| [loadx.ws](https://loadx.ws) | ✔ | (background request always required) |
| [luluvdo.com](https://luluvdo.com) | ✔ | (background request always required) |
| [mixdrop.co](https://mixdrop.co) | ✔ | ✔ |
| [mp4upload.com](https://mp4upload.com) | ✔ | ✔ |
| [newgrounds.com](https://newgrounds.com) | ✔ | ✔ |
| [streama2z.com](https://streama2z.com) | ✔ | (redirect always required) |
| [streama2z.com](https://streama2z.com) | ✔ | (redirect always required) |
| [streamtape.com](https://streamtape.com) | ⚠ (correct video url can't always be extract, retrying/reloading the page might fix it) | ⚠ (correct video url can't always be extract, retrying/reloading the page might fix it) |
| [streamzz.to](https://streamzz.to) / [streamz.ws](https://streamz.ws) | ✔ | ✔ |
| [supervideo.tv](https://supervideo.tv) | ✔ | ✔ |
| [upstream.to](https://upstream.to) | ✔ | ✔ |
| [vidmoly.to](https://vidmoly.me) | ✔ | ✔ |
| [vidoza.net](https://vidoza.net) | ✔ | ✔ |
| [voe.sx](https://voe.sx) | ✔ | (redirect always required) |
| [voe.sx](https://voe.sx) | ✔ | (redirect always required) |
| [vupload.com](https://vupload.com) | ✔ | ✔ |
- ✔️: Everything ok.
- ⚠: Works with limitations.
- ❌: Not supported.
_This table might not be 100% accurate, it isn't actively monitored if the addon works for every website!_
Some sites put much effort in obfuscating their code / how they receive the video stream so that it simply cost too much time for me to reverse engineer it and find out how to bypass the native video player of the site.
## 🛠️ Building
If you want to build the addon from source and not using the [installation](#installation) way, follow the instructions.
If you want to build the addon from source and not using the way described in [installation](#-installation), follow the instructions.
Requirements:
@@ -122,18 +125,20 @@ If the requirements are satisfied, you can continue with the following commands:
```shell
# install all dependencies
$ npm install
$ npm i
# build the extension source to the dist/ directory
$ npm run build
# build the extension and start it in a new firefox instance
$ npm run dev:firefox
# same as build + more optimizations and browser specific settings at release/
$ npm run release:firefox # or "release:chrome" to create a release for chromium based browsers
# build the extension with optimizations to the .output/firefox-mv2 directory
$ npm run build:firefox
```
You can omit the `:firefox` suffix, then it's built for Chrome.
##### Install
If you want to use the addon in Chromium or any browser which is based on it, follow the steps in [installation](#-installation).
If you want to use the addon in Chromium or any browser which is based on it, follow the steps in the [manual installation](#-installation).
When using firefox, use the following:
1. Type `about:debugging` in the browser's address bar.
@@ -143,27 +148,34 @@ When using firefox, use the following:
## ⚙️ Settings
### <ins>ff2mpv: use mpv to directly play streams</ins>
> You reach the settings by pressing the tree dots (⋮) in the top right corner of the extension popup.
ff2mpv is located at this repository: https://github.com/woodruffw/ff2mpv
### Hosts
Steps to get it set up:
You can enable or disabled for which hosts the extension should redirect.
### ff2mpv
[ff2mpv](https://github.com/woodruffw/ff2mpv) allows you to play streams directly in [mpv](https://mpv.io/) instead of the browser.
You can enable or disable this behavior.
<details>
<summary><i>Steps to get it set up</i></summary>
- In the [Usage](https://github.com/woodruffw/ff2mpv#usage) section of the ff2mpv repository pick the installation instruction for your operating system (Linux/Windows/macOS; you do not need the browser addon).
- Scroll down to `Install manually`
- Follow instructions for Firefox/Chrome
- Edit the `ff2mpv.json` you created:
- Firefox: Add `{55dd42e8-3dd9-455a-b4fe-86664881b10c}` to `allowed_extensions` ->
- Firefox: Add `{55dd42e8-3dd9-455a-b4fe-86664881b10c}` to `allowed_extensions`:
```
"allowed_extensions": [
"ff2mpv@yossarian.net",
"{55dd42e8-3dd9-455a-b4fe-86664881b10c}"
]
```
- Chrome/Chromium:
- Go To: Settings -> Extensions
- Click on `Details` of the Stream Bypass extension and copy the ID
- Add `chrome-extension://ddfpfjomnakfckhmilacnbokdaknamdb/` to `allowed_origins` ->
- Chrome/Chromium: - Go To: Settings -> Extensions - Click on `Details` of the Stream Bypass extension and copy the ID - Add `chrome-extension://ddfpfjomnakfckhmilacnbokdaknamdb/` to `allowed_origins`:
```
"allowed_origins": [
"chrome-extension://ephjcajbkgplkjmelpglennepbpmdpjg/",
@@ -171,6 +183,8 @@ Steps to get it set up:
]
```
</details>
## ⚖ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for more details.

View File

@@ -13,7 +13,7 @@
}
</style>
</head>
<body class="bg-[#131313]">
<body style="background-color: #131313; overflow: hidden">
<script type="module">
import { mount } from 'svelte';
import Player from './Player.svelte';

View File

@@ -3,9 +3,8 @@ import { HostMatchType, type Host } from '@/lib/host';
export default {
name: 'Vidmoly',
id: 'vidmoly',
domains: ['vidmoly.me', 'vidmoly.to'],
regex: [/(?<=file:").+\.m3u8/gm],
replace: true,
domains: ['vidmoly.me', 'vidmoly.net', 'vidmoly.to'],
regex: [/(?<=file:").+\.m3u8.*(?=")/gm],
match: async function (match: RegExpMatchArray) {
return {

View File

@@ -27,8 +27,21 @@ export default defineConfig({
}
: undefined,
permissions: ['storage', ...(manifestVersion === 2 ? ['webRequest', 'webRequestBlocking', '<all_urls>'] : [])],
optional_permissions: ['nativeMessaging']
optional_permissions: ['nativeMessaging'],
web_accessible_resources: [
{
resources: ['player.html'],
// TODO: Replace this with all hosts domains if target manifest version is 3.
// This isn't working atm because importing '@/lib/host' fails. Ahhhh I love the whole fucking JS/TS
// environment. Maybe I'm also overlooking something and the fix is easy, but that itsn't working out of the
// box is once again terrible DX
matches: ['<all_urls>']
}
]
}),
zip: {
artifactTemplate: '{{name}}-{{version}}-{{manifestVersion}}.zip'
},
vite: () => ({
define: {