mirror of
https://github.com/bytedream/stream-bypass.git
synced 2025-05-09 20:25:14 +02:00
Added 7 new sites and general refactoring
This commit is contained in:
parent
4907448aa6
commit
b45c1410f2
@ -24,7 +24,7 @@ The addon was tested on
|
||||
|
||||
### Firefox
|
||||
|
||||
Install the `.xpi` (firefox addon) file from the [latest release](https://github.com/ByteDream/stream-bypass/releases/latest).
|
||||
Install the addon directly from the [firefox addon store](https://addons.mozilla.org/de/firefox/addon/stream-bypass/).
|
||||
|
||||
### Chromium / Google Chrome
|
||||
|
||||
|
@ -1,4 +1,11 @@
|
||||
evoload.io
|
||||
mixdrop.co
|
||||
streamtape.com
|
||||
streamzz.to
|
||||
thevideome.com
|
||||
vidlox.me
|
||||
vidoza.net
|
||||
vivo.st
|
||||
vivo.sx
|
||||
voe.sx
|
||||
vupload.com
|
||||
|
11
build.py
Executable file → Normal file
11
build.py
Executable file → Normal file
@ -55,18 +55,13 @@ def copy_built():
|
||||
subprocess.call(['tsc', '-p', 'src'])
|
||||
|
||||
build_path = Path('build')
|
||||
if build_path.is_dir():
|
||||
for file in build_path.rglob('*'):
|
||||
if file.is_dir():
|
||||
shutil.rmtree(str(file))
|
||||
else:
|
||||
file.unlink()
|
||||
else:
|
||||
if not build_path.is_dir():
|
||||
build_path.mkdir()
|
||||
for file in Path('src').rglob('*'):
|
||||
build_file = build_path.joinpath(str(file)[4:])
|
||||
if file.is_dir():
|
||||
build_file.mkdir(parents=True)
|
||||
if not build_file.exists():
|
||||
build_file.mkdir(parents=True)
|
||||
elif file.suffix == '.sass':
|
||||
css_file = str(file)[:-4] + 'css'
|
||||
subprocess.call(['sass', '--no-source-map', file, css_file])
|
||||
|
28
src/index.ts
28
src/index.ts
@ -1,3 +1,7 @@
|
||||
function hasSuffix(content: string, suffix: string) {
|
||||
return content.indexOf(suffix, content.length - suffix.length) !== -1
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
chrome.storage.local.get(['all', 'disabled'], function (result) {
|
||||
let keys = Object.keys(result)
|
||||
@ -12,10 +16,26 @@ chrome.storage.local.get(['all', 'disabled'], function (result) {
|
||||
let matchClass = match[2] as Match
|
||||
|
||||
let re
|
||||
if (regex === null) {
|
||||
location.assign(matchClass === null ? document.body.innerHTML : matchClass.match(new RegExp('').exec(document.body.innerHTML)))
|
||||
} else if ((re = regex.exec(document.body.innerHTML)) !== null) {
|
||||
location.assign(matchClass === null ? re[0] : matchClass.match(re))
|
||||
if (regex !== null) {
|
||||
if ((re = document.body.innerHTML.match(regex)) === null) {
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
re = document.body.innerHTML.match(regex)
|
||||
}
|
||||
|
||||
return
|
||||
|
||||
if (matchClass === null) {
|
||||
if (regex === null) {
|
||||
location.assign(document.body.innerHTML)
|
||||
} else {
|
||||
location.assign(hasSuffix(re[0], 'm3u8') ? `https://bharadwajpro.github.io/m3u8-player/player/#${re[0]}`: re[0])
|
||||
}
|
||||
} else {
|
||||
matchClass.match(re).then(function (path) {
|
||||
location.assign(hasSuffix(path, 'm3u8') ? `https://bharadwajpro.github.io/m3u8-player/player/#${path}`: path)
|
||||
})
|
||||
}
|
||||
}
|
||||
return
|
||||
|
@ -3,15 +3,22 @@
|
||||
"name": "Stream Bypass",
|
||||
"author": "ByteDream",
|
||||
"description": "",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"homepage_url": "https://github.com/ByteDream/stream-bypass",
|
||||
"content_scripts": [
|
||||
{
|
||||
"all_frames": true,
|
||||
"matches": [
|
||||
"*://evoload.io/*",
|
||||
"*://mixdrop.co/*",
|
||||
"*://streamtape.com/*",
|
||||
"*://streamzz.to/*",
|
||||
"*://thevideome.com/*",
|
||||
"*://vidlox.me/*",
|
||||
"*://vidoza.net/*",
|
||||
"*://vivo.st/*",
|
||||
"*://vivo.sx/*",
|
||||
"*://voe.sx/*",
|
||||
"*://vupload.com/*"
|
||||
],
|
||||
"js": [
|
||||
|
43
src/match.ts
43
src/match.ts
@ -1,15 +1,43 @@
|
||||
interface Match {
|
||||
match(match: RegExpMatchArray): string
|
||||
match(match: RegExpMatchArray): Promise<string>
|
||||
}
|
||||
|
||||
class Evoload implements Match {
|
||||
async match(match: RegExpMatchArray): Promise<string> {
|
||||
const code = window.location.pathname.split('/').slice(-1)[0]
|
||||
const response = await fetch('https://evoload.io/SecurePlayer', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({code: code})
|
||||
})
|
||||
|
||||
const json = await response.json()
|
||||
return json['stream']['src']
|
||||
}
|
||||
}
|
||||
|
||||
class Mixdrop implements Match {
|
||||
async match(match: RegExpMatchArray): Promise<string> {
|
||||
return `https://a-${match[1]}.${match[4]}.${match[5]}/v/${match[2]}.${match[6]}?s=${match[12]}&e=${match[13]}`
|
||||
}
|
||||
}
|
||||
|
||||
class Streamtape implements Match {
|
||||
match(match: RegExpMatchArray): string {
|
||||
async match(match: RegExpMatchArray): Promise<string> {
|
||||
return `https://streamtape.com/get_video?${match[0]}`
|
||||
}
|
||||
}
|
||||
|
||||
class TheVideoMe implements Match {
|
||||
async match(match: RegExpMatchArray): Promise<string> {
|
||||
return `https://thevideome.com/${match[5]}.mp4`
|
||||
}
|
||||
}
|
||||
|
||||
class Vivo implements Match {
|
||||
match(match: RegExpMatchArray): string {
|
||||
async match(match: RegExpMatchArray): Promise<string> {
|
||||
return this.rot47(decodeURIComponent(match[1]))
|
||||
}
|
||||
|
||||
@ -29,15 +57,22 @@ class Vivo implements Match {
|
||||
}
|
||||
|
||||
class Vupload implements Match {
|
||||
match(match: RegExpMatchArray): string {
|
||||
async match(match: RegExpMatchArray): Promise<string> {
|
||||
return `https://www3.megaupload.to/${match[0]}/v.mp4`
|
||||
}
|
||||
}
|
||||
|
||||
// every match HAS to be on an separate line
|
||||
const matches = [
|
||||
['evoload.io', null, new Evoload()],
|
||||
['mixdrop.co', new RegExp(/(?<=\|)\w{2,}/gm), new Mixdrop()],
|
||||
['streamtape.com', new RegExp(/id=\S*(?=')/gm), new Streamtape()],
|
||||
['streamzz.to', new RegExp(/https?:\/\/get.streamz.tw\/getlink-\w+\.dll/gm), null],
|
||||
['thevideome.com', new RegExp(/(?<=\|)\w{2,}/gm), new TheVideoMe()],
|
||||
['vidlox.me', new RegExp(/(?<=\[")\S+?(?=")/gm), null],
|
||||
['vidoza.net', new RegExp(/(?<=src:(\s*)?")\S*(?=")/gm), null],
|
||||
['vivo.st', new RegExp(/source:\s*'(\S+)'/gm), new Vivo()],
|
||||
['vivo.sx', new RegExp(/source:\s*'(\S+)'/gm), new Vivo()],
|
||||
['voe.sx', new RegExp(/https?:\/\/\S*m3u8(?=")/gm), null],
|
||||
['vupload.com', new RegExp(/(?<=class\|)\w*/gm), new Vupload()]
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user