Mods
This commit is contained in:
parent
eb91ffa980
commit
cb8788569f
71
main.py
71
main.py
|
@ -1,4 +1,6 @@
|
||||||
import requests, websockets, asyncio, json, re, traceback, subprocess, os, aiohttp, sys
|
import requests, websockets, asyncio, json, re, httpx
|
||||||
|
import traceback, subprocess, os, aiohttp, sys, random
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
@ -19,8 +21,17 @@ def remove_file(path):
|
||||||
def get_extension(path):
|
def get_extension(path):
|
||||||
return Path(path).suffix.lower().lstrip(".")
|
return Path(path).suffix.lower().lstrip(".")
|
||||||
|
|
||||||
|
def clean_lines(s):
|
||||||
|
cleaned = s
|
||||||
|
cleaned = re.sub(r" *(\n+|\\n+) *", "\n", cleaned)
|
||||||
|
cleaned = re.sub(r" +", " ", cleaned)
|
||||||
|
return cleaned.strip()
|
||||||
|
|
||||||
|
def random_int(min_val, max_val):
|
||||||
|
return random.randint(min_val, max_val)
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
"User-Agent": "renabot",
|
"User-Agent": "gluebot",
|
||||||
"Origin": "https://deek.chat",
|
"Origin": "https://deek.chat",
|
||||||
"DNT": "1",
|
"DNT": "1",
|
||||||
}
|
}
|
||||||
|
@ -123,6 +134,10 @@ async def on_message(ws, message):
|
||||||
update_time()
|
update_time()
|
||||||
await gif_bird(None, room_id)
|
await gif_bird(None, room_id)
|
||||||
|
|
||||||
|
elif cmd == "post" or cmd == "shitpost" or cmd == "4chan" or cmd == "anon" or cmd == "shit":
|
||||||
|
update_time()
|
||||||
|
await random_post(ws, room_id)
|
||||||
|
|
||||||
def get_input_path(name):
|
def get_input_path(name):
|
||||||
return str(Path(HERE, name))
|
return str(Path(HERE, name))
|
||||||
|
|
||||||
|
@ -192,6 +207,58 @@ async def gif_bird(who, room_id):
|
||||||
|
|
||||||
await run_gifmaker(command, room_id)
|
await run_gifmaker(command, room_id)
|
||||||
|
|
||||||
|
async def random_post(ws, room_id):
|
||||||
|
threads_url = "https://a.4cdn.org/g/threads.json"
|
||||||
|
|
||||||
|
try:
|
||||||
|
async_client = httpx.AsyncClient()
|
||||||
|
threads_response = await async_client.get(threads_url)
|
||||||
|
threads_response.raise_for_status()
|
||||||
|
threads_json = threads_response.json()
|
||||||
|
threads = threads_json[0]["threads"]
|
||||||
|
|
||||||
|
# Select a random thread
|
||||||
|
id = threads[random_int(0, len(threads) - 1)]["no"]
|
||||||
|
thread_url = f"https://a.4cdn.org/g/thread/{id}.json"
|
||||||
|
|
||||||
|
# Fetch the selected thread
|
||||||
|
thread_response = await async_client.get(thread_url)
|
||||||
|
thread_response.raise_for_status()
|
||||||
|
thread_json = thread_response.json()
|
||||||
|
posts = thread_json["posts"]
|
||||||
|
|
||||||
|
# Select a random post
|
||||||
|
post = posts[random_int(0, len(posts) - 1)]
|
||||||
|
html = post.get("com", "")
|
||||||
|
|
||||||
|
if not html:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Parse HTML using BeautifulSoup
|
||||||
|
soup = BeautifulSoup(html, "html.parser")
|
||||||
|
|
||||||
|
# Remove elements with class "quotelink"
|
||||||
|
for elem in soup.select(".quotelink"):
|
||||||
|
elem.decompose()
|
||||||
|
|
||||||
|
# Replace <br> with newline
|
||||||
|
for br in soup.find_all("br"):
|
||||||
|
br.replace_with("\n")
|
||||||
|
|
||||||
|
# Get text content and limit to 500 characters
|
||||||
|
text = soup.get_text(separator="\n")[:500].strip()
|
||||||
|
|
||||||
|
if not text:
|
||||||
|
return
|
||||||
|
|
||||||
|
text = clean_lines(text)
|
||||||
|
|
||||||
|
if text:
|
||||||
|
await send_message(ws, text, room_id)
|
||||||
|
|
||||||
|
except Exception as err:
|
||||||
|
print(f"Error: {err}")
|
||||||
|
|
||||||
async def run_gifmaker(command, room_id):
|
async def run_gifmaker(command, room_id):
|
||||||
process = await asyncio.create_subprocess_shell(
|
process = await asyncio.create_subprocess_shell(
|
||||||
" ".join(command),
|
" ".join(command),
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
requests ~= 2.31.0
|
requests ~= 2.31.0
|
||||||
websockets ~= 12.0
|
websockets ~= 12.0
|
||||||
aiohttp ~= 3.9.3
|
aiohttp ~= 3.9.3
|
||||||
|
beautifulsoup4 ~= 4.12.3
|
||||||
|
httpx ~= 0.27.0
|
Loading…
Reference in New Issue