Skip to content

Commit

Permalink
additional proxy format
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinBytesTheDust committed Dec 8, 2024
1 parent b980514 commit e953101
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 37 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ main_gui.spec
main.spec
tests
cvamp.log
.vscode
51 changes: 28 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,63 @@
# Crude Viewer Amplifier (CVAmp)

[![](https://img.shields.io/github/downloads/kevinbytesthedust/cvamp/total)](https://github.com/KevinBytesTheDust/cvamp/releases/latest)
[![](https://github.com/KevinBytesTheDust/cvamp/actions/workflows/pytest.yml/badge.svg)](https://github.com/KevinBytesTheDust/cvamp/actions/workflows/pytest.yml)
[![](https://github.com/KevinBytesTheDust/cvamp/actions/workflows/format_lint.yml/badge.svg)](https://github.com/KevinBytesTheDust/cvamp/actions/workflows/format_lint.yml)
[![](https://github.com/KevinBytesTheDust/cvamp/actions/workflows/build.yml/badge.svg)](https://github.com/KevinBytesTheDust/cvamp/actions/workflows/build.yml)

![grafik](https://github.com/user-attachments/assets/66110d35-1683-4f95-a48f-a737c5dcedd0)

>Disclaimer: For educational purpose only. Any discussion of illegal use will be deleted immediately!
>Full disclaimer below.
> Disclaimer: For educational purpose only. Any discussion of illegal use will be deleted immediately!
> Full disclaimer below.
### Getting Started
1. Download the one-file executable for Windows, Linux and MacOS from the [latest CVAmp release](https://github.com/KevinBytesTheDust/cvamp/releases/latest).
2. Provide your own proxies or get 10 free for testing [here](https://blueloperlabs.ch/proxy/wf). See our [Proxies Guide](https://github.com/KevinBytesTheDust/cvamp/wiki/Webshare.io-Proxies-Guide) for setup.
Or try unlimited traffic through [this new proxy provider](https://blueloperlabs.ch/proxy-ps/tf).


1. Download the one-file executable for Windows, Linux and MacOS from the [latest CVAmp release](https://github.com/KevinBytesTheDust/cvamp/releases/latest).
2. Provide your proxies or follow our comprehensive [Proxies Guide](https://github.com/KevinBytesTheDust/cvamp/wiki/Webshare.io-Proxies-Guide).
a. Get 10 free proxies for testing and 10% off your first proxy purchase at [Webshare.io](https://blueloperlabs.ch/proxy/wf).
b. Or try unlimited traffic through [this new proxy provider](https://blueloperlabs.ch/proxy-ps/tf).

Read the comprehensive [wiki](https://github.com/KevinBytesTheDust/cvamp/wiki) for a [detailed tutorial](https://github.com/KevinBytesTheDust/cvamp/wiki/Detailed-Tutorial), [usage tips](https://github.com/KevinBytesTheDust/cvamp/wiki/Advanced-features-and-controls) and [troubleshooting steps](https://github.com/KevinBytesTheDust/cvamp/wiki/Troubleshooting).
Ask questions in the [discussions](https://github.com/KevinBytesTheDust/cvamp/discussions) or [report issues](https://github.com/KevinBytesTheDust/cvamp/issues).

Get exclusive Feature Previews as a [:gem: Supporter & Feature Tester](https://blueloperlabs.ch/supporter/wf).

### Mandatory Requirements
- You need to provide your own private HTTP proxies to the [proxy_list.txt](proxy/proxy_list.txt)
Get 10 free proxies for testing [here](https://blueloperlabs.ch/proxy/wf) or follow the [Webshare.io Proxies Guide](https://github.com/KevinBytesTheDust/cvamp/wiki/Webshare.io-Proxies-Guide).

- Provide your own private HTTP proxies to the [proxy_list.txt](proxy/proxy_list.txt) or follow our [Proxies Guide](https://github.com/KevinBytesTheDust/cvamp/wiki/Webshare.io-Proxies-Guide).
a. Get 10 free proxies for testing and 10% off your first proxy purchase at [Webshare.io](https://blueloperlabs.ch/proxy/wf).
b. Or try unlimited traffic through [this new proxy provider](https://blueloperlabs.ch/proxy-ps/tf).

- Chrome needs to be already installed on your system.

### Platform Support Overview

| Platform | Twitch | Youtube | Chzzk | Kick |
|-----------------------|:--------------------------------------------------------------------:|:------------------:|:------------------:|:--------------------------------------------------------------------:|
| General Functionality | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) |
| Lowest Quality Select | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) |
| Status Boxes Updates | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) |
| Login/Authentication |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Automatic Follow |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Automatic Chat |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Low CPU Usage Mode |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Platform | Twitch | Youtube | Chzzk | Kick |
| --------------------- | :-------------------------------------------------------------------: | :----------------: | :----------------: | :-------------------------------------------------------------------: |
| General Functionality | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) |
| Lowest Quality Select | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) |
| Status Boxes Updates | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) |
| Login/Authentication |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Automatic Follow |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Automatic Chat |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |
| Low CPU Usage Mode |[:gem:](https://github.com/KevinBytesTheDust/cvamp/discussions/296) | :x: | :x: | :x: |

:heavy_check_mark: Supported, :warning: Problems, :x: Unsupported, ⏳ In Development, [:gem: Preview Available](https://github.com/KevinBytesTheDust/cvamp/discussions/296)
:heavy_check_mark: Supported, :warning: Problems, :x: Unsupported, ⏳ In Development, [:gem: Preview Available](https://github.com/KevinBytesTheDust/cvamp/discussions/296)

### In Action

![image](https://github.com/user-attachments/assets/94611ec5-c6c7-4473-9bb4-3f41dad3b563)

#### Controls and Color codes of the square boxes

⬛ - Instance is spawned. 🟨 - Instance is buffering. 🟩 - Instance is actively watching.
⬛ - Instance is spawned. 🟨 - Instance is buffering. 🟩 - Instance is actively watching.

🖱️ Left click: Refresh page.
🖱️ Right click: Destroy instance.
🖱️ Left click + CTRL: Take screenshot.

### Misc

- CPU load and bandwidth can get heavy. Channels with 160p work best.
- Tested on Windows 10 with headless ~100, headful ~30. Linux and macOS is experimental.

Expand All @@ -60,8 +68,5 @@ Read the comprehensive [wiki](https://github.com/KevinBytesTheDust/cvamp/wiki) f
Support my creativity and [sponsor me a coffee :coffee:](https://blueloperlabs.ch/supporter/wf)

### Full disclaimer
This project was established to contribute to open-source collaboration and showcase the educational value of reverse engineering. Although its primary purpose is for learning and understanding, users must be aware that altering viewer metrics on platforms such as Twitch violates their Terms of Service and could lead to legal repercussions. We urge users to engage with this tool responsibly. Misuse is solely at your discretion and risk. Discussions promoting illegal activities will be promptly removed.




This project was established to contribute to open-source collaboration and showcase the educational value of reverse engineering. Although its primary purpose is for learning and understanding, users must be aware that altering viewer metrics on platforms such as Twitch violates their Terms of Service and could lead to legal repercussions. We urge users to engage with this tool responsibly. Misuse is solely at your discretion and risk. Discussions promoting illegal activities will be promptly removed.
34 changes: 20 additions & 14 deletions cvamp/proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ def __init__(self, proxy_file_name="proxy_list.txt"):

def build_proxy_list(self):
try:
if self.pathed_file_name.endswith(".json"):
raise NotImplementedError("JSON file not implemented yet")
elif self.pathed_file_name.endswith(".txt"):
if self.pathed_file_name.endswith(".txt"):
self.build_proxy_list_txt()
else:
print("File type not supported")
Expand All @@ -25,30 +23,38 @@ def build_proxy_list(self):

def build_proxy_list_txt(self):
with open(self.pathed_file_name, "r") as fp:
proxy_list = fp.read().splitlines()
proxy_list = [line.strip() for line in fp if line.strip()]

for proxy in proxy_list:
proxy_parts = proxy.split(":")
if len(proxy_parts) == 4:
username = proxy_parts[2]
password = proxy_parts[3]
ip_port = ":".join(proxy_parts[0:2])

if username != "username":
ip, port, username, password = proxy_parts
if username.lower() != "username":
self.proxy_list.append(
{
"server": "http://" + ip_port,
"server": f"http://{ip}:{port}",
"username": username,
"password": password,
}
)

random.shuffle(self.proxy_list)
else:
logger.warning(f"Skipping proxy with placeholder username: {proxy}")
elif len(proxy_parts) == 2:
ip, port = proxy_parts
self.proxy_list.append(
{
"server": f"http://{ip}:{port}",
"username": "",
"password": "",
}
)
else:
logger.warning(f"Invalid proxy format: {proxy}")

def get_proxy_as_dict(self) -> dict:
if not self.proxy_list:
return {}

proxy = self.proxy_list.pop(0)
self.proxy_list.append(proxy)
proxy = self.proxy_list.pop(-1)
self.proxy_list.insert(0, proxy)
return proxy

0 comments on commit e953101

Please sign in to comment.