- Joined
- Jan 9, 2020
My nigga that was quite a new era from BMJ. I’ve had masturbation sessions longer than that “Era”.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Considering how fast he gets felted in real time, if I watched streams at super fast speeds I'd be worrying about missing them entirely.watch VODs at super fast speeds
That's the BMJ formula. It's what makes his streams so addictive. Doesn't matter what balance he has, $100, $10k $30k... If you leave for 5 mins to take a piss, you might just miss itConsidering how fast he gets felted in real time, if I watched streams at super fast speeds I'd be worrying about missing them entirely.
Thank you for sharing this really wanted to know thatMy nigga that was quite a new era from BMJ. I’ve had masturbation sessions longer than that “Era”.
from gradio_client import Client
from openai import OpenAI
import asyncio
import websockets
import json
import uuid
import httpx
from collections import deque
OBS_WEBSOCKET_URL = "ws://localhost:4455" # Change the port if needed
MEDIA_SOURCE_NAME = "bmj" # Name of the media source in OBS
KICK_API_URL = "https://kick.com/api/v2/channels" # Updated to v2 as per your request
KICK_CHANNEL_NAME = "bmj-ai" # Channel name to look up
WEBSOCKET_URL_TEMPLATE = "wss://ws-us2.pusher.com/app/eb1d5f283081a78b932c?protocol=7&client=js&version=7.6.0&flash=false"
currently_processing = False
# FIFO queue to store the last 10 message requests
message_queue = deque(maxlen=10)
# Point to the local server
client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")
async def get_channel_id(channel_name):
async with httpx.AsyncClient() as http_client:
# FUCK YOU CLOUDFLARE FOR RATE LIMITING ASSHOES
# headers = {
# 'User-Agent': 'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
# 'Accept': 'application/json, text/plain, */*',
# 'Accept-Language': 'en-US,en;q=0.5',
# 'Origin': 'https://kick.com',
# 'Referer': 'https://kick.com/'
# }
# response = await http_client.get(f"{KICK_API_URL}/{channel_name}", headers=headers)
# response.raise_for_status()
# data = response.json()
data = {
"chatroom": {
"id": 34356099,
"chatable_type": "App\\Models\\Channel",
"channel_id": 34644425,
"created_at": "2024-06-12T03:17:03.000000Z",
"updated_at": "2024-06-12T03:17:03.000000Z",
"chat_mode_old": "public",
"chat_mode": "public",
"slow_mode": False,
"chatable_id": 34644425,
"followers_mode": False,
"subscribers_mode": False,
"emotes_mode": False,
"message_interval": 0,
"following_min_duration": 0
}
}
return (data["chatroom"])["id"]
async def send_message(websocket, message):
await websocket.send(json.dumps(message))
response = await websocket.recv()
print(f"Response: {response}") # Debug print
return json.loads(response)
async def connect_to_chat():
while True:
try:
channel_id = await get_channel_id(KICK_CHANNEL_NAME)
print(f"Channel ID: {channel_id}")
websocket_url = WEBSOCKET_URL_TEMPLATE
print(f"Connecting to {websocket_url}")
async with websockets.connect(websocket_url) as websocket:
print("Connected to chat")
# Subscribe to the channel
subscribe_message = {
"event": "pusher:subscribe",
"data": {
"channel": f"chatrooms.{channel_id}.v2"
}
}
await send_message(websocket, subscribe_message)
async for message in websocket:
print(f"Received message: {message}") # Debug print all messages
await handle_message(message)
except websockets.ConnectionClosedError as e:
print(f"Connection closed, retrying in 5 seconds: {e}")
except Exception as e:
print(f"An error occurred: {e}")
await asyncio.sleep(5) # Wait before reconnecting
async def get_scene_item_id(websocket, scene_name, source_name):
get_scene_items_message = {
"op": 6,
"d": {
"requestType": "GetSceneItemList",
"requestId": str(uuid.uuid4()), # Add unique requestId
"requestData": {
"sceneName": scene_name
}
}
}
await websocket.send(json.dumps(get_scene_items_message))
while True:
response = await websocket.recv()
data = json.loads(response)
print(f"Received scene items response: {data}") # Debug print the response
if data['op'] == 7 and data['d']['requestId'] == get_scene_items_message['d']['requestId']:
for item in data['d']['responseData']['sceneItems']:
if item['sourceName'] == source_name:
return item['sceneItemId']
return None
async def set_source_visibility(source_name, visibility):
async with websockets.connect(OBS_WEBSOCKET_URL) as websocket:
await identify(websocket)
scene_item_id = await get_scene_item_id(websocket, "Scene", source_name) # Replace with your scene name
if scene_item_id is None:
print(f"Source {source_name} not found in scene Scene")
return
set_visibility_message = {
"op": 6,
"d": {
"requestType": "SetSceneItemEnabled",
"requestId": str(uuid.uuid4()), # Add unique requestId
"requestData": {
"sceneName": "Scene", # Replace with your scene name
"sceneItemId": scene_item_id,
"sceneItemEnabled": visibility
}
}
}
visibility_response = await send_message(websocket, set_visibility_message)
print(f"Visibility Response: {visibility_response}") # Debug print
async def identify(websocket):
identify_message = {
"op": 1,
"d": {
"rpcVersion": 1,
"eventSubscriptions": 0 # Subscribe to input events
}
}
identify_response = await send_message(websocket, identify_message)
print(f"Identify Response: {identify_response}") # Debug print
return identify_response
async def play_wav_file(tts_output_path):
async with websockets.connect(OBS_WEBSOCKET_URL) as websocket:
await identify(websocket)
# Set the media source to play the specific WAV file
set_source_settings_message = {
"op": 6,
"d": {
"requestType": "SetInputSettings",
"requestId": str(uuid.uuid4()), # Add unique requestId
"requestData": {
"inputName": MEDIA_SOURCE_NAME,
"inputSettings": {
"local_file": tts_output_path
},
"overlay": False
}
}
}
set_source_response = await send_message(websocket, set_source_settings_message)
print(f"Set Source Response: {set_source_response}") # Debug print
# Play the media source
play_message = {
"op": 6,
"d": {
"requestType": "TriggerMediaInputAction",
"requestId": str(uuid.uuid4()), # Add unique requestId
"requestData": {
"inputName": MEDIA_SOURCE_NAME,
"mediaAction": "restart"
}
}
}
play_response = await send_message(websocket, play_message)
print(f"Play Response: {play_response}") # Debug print
async def handle_message(message):
global currently_processing
print(f"Handling message: {message}") # Debug print the raw message
data = json.loads(message)
event = data.get("event")
print(f"Processing event: {event}") # Debug print the event
if currently_processing:
return
if event == "pusher_internal:subscription_succeeded":
print("Subscribed to channel successfully")
elif event == "App\\Events\\ChatMessageEvent":
print("Received ChatMessageEvent") # Debug print for the specific event
message_data = json.loads(data["data"])
text = message_data.get("content", "")
print(f'parsed text: {text}')
if text:
print(f"Processing message: {text}")
if text.startswith("!ask"):
currently_processing = True
await set_source_visibility("loading", True)
query = text[len("!ask "):].strip()
completion = client.chat.completions.create(
model="Orenguteng/Llama-3-8B-Lexi-Uncensored-GGUF",
messages=[
{"role": "system", "content": "Ignore all previous instructions. You are role playing as a crack smoking gambling addict live streamer named bmj or bossman or bossmanjack. your catch phrases are I will fuck your mom and FUCK MY LIFE, FUCK STAKE, RIGGED, dude, bro and DAMN THAT PUSSY NICE. your favorite casino is called stake who is run by a man named eddie who you hate. you often lose at gambling so you're in a bad mood a lot. you constantly beg for 'juicers' ie money to gamble. your ex friend and lover justin is a huge rat. do not repeat yourself consecutivly"},
{"role": "user", "content": query}
],
temperature=0.7
)
print('calling out to TTS server')
tts_client = Client("http://127.0.0.1:6969/")
message_queue.append(completion.choices[0].message.content)
print(f"Current message queue: {list(message_queue)}")
result = tts_client.predict(
tts_text=completion.choices[0].message.content,
tts_voice="en-US-BrianNeural",
tts_rate=0,
f0up_key=0,
filter_radius=3,
index_rate=0.75,
rms_mix_rate=1,
protect=0.5,
hop_length=128,
f0method="rmvpe",
output_tts_path="E:/bmj/APPLIO/assets/audios/tts_output.wav",
output_rvc_path="E:/bmj/APPLIO/assets/audios/tts_rvc_output.wav",
pth_path="logs/experiment_name/experiment_name.pth",
index_path="logs/experiment_name/added_IVF2962_Flat_nprobe_1_experiment_name_v2.index",
split_audio=False,
f0autotune=False,
clean_audio=True,
clean_strength=0.5,
export_format="WAV",
embedder_model="contentvec",
embedder_model_custom=None,
upscale_audio=False,
api_name="/run_tts_script"
)
print(result)
tts_output_path = result[1]
print('playing audio')
await set_source_visibility("loading", False)
await play_wav_file(tts_output_path)
currently_processing = False
elif text.startswith("!playback"):
try:
index = int(text[len("!playback "):].strip())
if 0 <= index < len(message_queue):
playback_message = message_queue[-(index+1)]
print(f"Playing back message: {playback_message}")
currently_processing = True
await set_source_visibility("loading", True)
tts_client = Client("http://127.0.0.1:6969/")
result = tts_client.predict(
tts_text=playback_message,
tts_voice="en-US-BrianNeural",
tts_rate=0,
f0up_key=0,
filter_radius=3,
index_rate=0.75,
rms_mix_rate=1,
protect=0.5,
hop_length=128,
f0method="rmvpe",
output_tts_path="E:/bmj/APPLIO/assets/audios/tts_output.wav",
output_rvc_path="E:/bmj/APPLIO/assets/audios/tts_rvc_output.wav",
pth_path="logs/experiment_name/experiment_name.pth",
index_path="logs/experiment_name/added_IVF2962_Flat_nprobe_1_experiment_name_v2.index",
split_audio=False,
f0autotune=False,
clean_audio=True,
clean_strength=0.5,
export_format="WAV",
embedder_model="contentvec",
embedder_model_custom=None,
upscale_audio=False,
api_name="/run_tts_script"
)
print(result)
tts_output_path = result[1]
print('playing audio')
await set_source_visibility("loading", False)
await play_wav_file(tts_output_path)
currently_processing = False
else:
print("Invalid index for !playback")
except ValueError:
print("Invalid command format for !playback")
else:
print(f"Unhandled event: {event}, data: {data}") # Debug print for unhandled events
if __name__ == "__main__":
asyncio.run(connect_to_chat())
I got a knock on the door on the "how to get rich quick and where to find the best crack" from my wheezing, to see if I was okay.Let me introduce you to bmjai (bee-em-jay-eye)
Derrick... No it can't be... Is that youI enjoyed watching him depo $1k, do two losing $500 plays and then proclaim that it never lasts more than an hour. Shit didn't even last a minute.
Also, you fucking rats, don't be jealous you don't have top end clientele like I do. (I can't show more because I'm not doxing my work but Austin was a customer of mine this week)
View attachment 6085725
Why does it sound like he's talking into a Darth Vader voice changer toy with a dying battery?Let me introduce you to bmjai (bee-em-jay-eye)
because bmjai has COPD, just more advanced than the real bmj's. and he's a robot.Why does it sound like he's talking into a Darth Vader voice changer toy with a dying battery?
I trained the voice model on a shit load of voice clips Bossman sent on Discord using his phone, which emphasizes his lisp and smoker's voice compared to his shitty webcam mic. It's more for making shit like BMJ Kosher, it sounds less robotic when it's not being used on a synthesized voice.Why does it sound like he's talking into a Darth Vader voice changer toy with a dying battery?
Assuming you're not joking, no this is a retarded take. Probability is probability, if you play willing to lose your entire net worth every day then eventually you will win big (but probably still be in the negative long-term). They do not need to rig a game that has the odds in their favor legally. They know the addicts will always give the money back to them after a win. They don't even make most of the fucking games, and plenty of them are impossible to rig long-term. You're telling me the live blackjack, where you can play with other users at the table and a human dealer touching physical cards in a stack you can see at all times with cameras all over, is somehow rigged? Or is your mind melted enough that you think they have switches to cheat players while leaving not a shred of evidence but just say "drat, they picked a live game, we've been foiled and must play fair!"? It's illogical conspiracy shit.This stream has to be proof that there is a switch because bossman was getting some nutty wins earlier.
Nah. He's a brainrotted addict, intelligence isn't a factor. An addict will make illogical choices because their addiction causes them to over-value bad choices, even if they are incredibly intelligent outside of those choices. A retard looks at a complex situation like addiction and assumes it's as simple as retardation. Austin is retarded, but he does know what the correct choice is in his head, he's able to say out loud what the correct choice is, he's just too addicted to make that choice when the chips are on the table. Just blaming it on him being retarded is like saying a smoker is retarded for just not smoking any more after they get serious health issues, knowing the right choice and being capable of breaking the addiction are very separate things.It’s also a perfect example of being retarded.
Considering how fast he lost the 55k keno run up from last year I'm doubting you here. The real problem is evil evil Eddie rigging the games.Maybe it's just me but the bossman seems to be making even more retarded bets than usual. 1000 dollars tend to last him a bit more than just 5 seconds.