YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

import json import time import threading import urllib.request import urllib.error import re from transformers import pipeline

=========================

πŸ”§ CONFIG

=========================

START_USER_ID = 1074729050 # Start scanning after your ID BATCH_SIZE = 500 MAX_BATCHES = 10

DELAY_AFTER_SUCCESS = 1 DELAY_AFTER_RATE_LIMIT = 5 BREAK_AFTER_USERS = 530 BREAK_DURATION = 15 # seconds

RAW_KEYWORDS = [ "bunny", "bunnny", "cempie", "pie", "clm", "master", "old man", "boy", "loli", "lolipop", "nertga", "nga", "nrger", "furry", "cp", "con", "comming", "cmzing", "czmming", "14yo", "endanger", "girl", "rcist", "rcst", "black", "blacked", "inch", "inches", "long", "stick", "beat it", "baby", "child", "bull", "bbc", "feet", "armpit", "big", "bbb", "bigbull", "giantess", "naughty", "BBD", "Maid", "Uwu", "Toy", "t0y", "filler", "Seed", "Asian", "butt", "abdl" ]

=========================

πŸ›  SETUP

=========================

lock = threading.Lock() batch_next_id = [START_USER_ID + i * BATCH_SIZE for i in range(MAX_BATCHES)] batch_scanned_count = [0] * MAX_BATCHES bad_actors = [] scanned_ids = set()

=========================

⚑ AI MODEL

=========================

MODEL_NAME = "deepseek-ai/DeepSeek-R1" # Smaller model to reduce lag classifier = pipeline("text-classification", model=MODEL_NAME)

=========================

πŸ“ TEXT NORMALIZATION

=========================

LEET_MAP = str.maketrans({ "0": "o", "1": "i", "3": "e", "4": "a", "5": "s", "7": "t", "@": "a", "$": "s" })

def normalize(text): if not isinstance(text, str): return "" text = text.lower().translate(LEET_MAP) text = re.sub(r"[^a-z\s]", "", text) text = re.sub(r"\s+", " ", text) return text.strip()

NORMALIZED_KEYWORDS = [normalize(k) for k in RAW_KEYWORDS]

def contains_bad_keyword(text): text = normalize(text) for kw in NORMALIZED_KEYWORDS: if kw in text: return kw return None

=========================

πŸ€– AI BIO SCAN

=========================

def hf_ai_scan_bio(bio_text): if not bio_text: return None try: result = classifier(bio_text)[0] # {'label': 'LABEL', 'score': 0.95} label = result['label'] score = result['score'] if label.lower() in ["safe", "none"]: return None return f"{label} (confidence: {score:.2f})" except Exception as e: print("AI scan failed:", e) return None

=========================

🌐 NETWORK HELPERS

=========================

def fetch_json(url): req = urllib.request.Request(url, headers={"User-Agent": "Roblox-Scanner/1.0"}) with urllib.request.urlopen(req, timeout=10) as response: return json.load(response)

def get_user_profile(user_id): return fetch_json(f"https://users.roblox.com/v1/users/{user_id}")

def get_user_favorites(user_id): try: data = fetch_json( f"https://favorites.roblox.com/v1/users/{user_id}/assets?assetType=0&limit=50" ) return [item.get("name") for item in data.get("data", []) if item.get("name")] except Exception: return []

=========================

🏭 WORKER THREAD

=========================

def worker(batch_index, thread_speed=1): global scanned_ids

while True:
    with lock:
        start_id = batch_next_id[batch_index]
        end_id = start_id + BATCH_SIZE
        batch_next_id[batch_index] += BATCH_SIZE

    for user_id in range(start_id, end_id):
        if user_id in scanned_ids:
            continue

        try:
            profile = get_user_profile(user_id)
            favorites = get_user_favorites(user_id)

            username = profile.get("name", "")
            display_name = profile.get("displayName", "")
            bio = profile.get("description", "")

            name_hits = []
            bio_hits = []

            # Check username & display name
            for field in (username, display_name):
                kw = contains_bad_keyword(field)
                if kw:
                    name_hits.append(kw)

            # AI scan bio
            if bio:
                ai_result = hf_ai_scan_bio(bio)
                if ai_result:
                    bio_hits.append(ai_result)

            # Check favorites
            if favorites:
                for fav in favorites:
                    kw = contains_bad_keyword(fav)
                    if kw:
                        name_hits.append(kw)

            # Mark bad actors
            with lock:
                scanned_ids.add(user_id)
                batch_scanned_count[batch_index] += 1

                if name_hits or bio_hits:
                    bad_actors.append({
                        "user_id": user_id,
                        "username": username,
                        "display_name": display_name,
                        "name_matches": sorted(set(name_hits)),
                        "bio_matches": sorted(set(bio_hits)),
                    })

            # Break every BREAK_AFTER_USERS
            if batch_scanned_count[batch_index] % BREAK_AFTER_USERS == 0:
                time.sleep(BREAK_DURATION)

            # Delay based on thread speed
            time.sleep(DELAY_AFTER_SUCCESS / thread_speed)

        except urllib.error.HTTPError as e:
            if e.code == 404:
                continue
            elif e.code == 429:
                time.sleep(DELAY_AFTER_RATE_LIMIT)
            else:
                continue
        except Exception:
            continue

=========================

πŸ–₯ CONSOLE COMMANDS

=========================

def console_listener(): """ Commands: .show -> Show flagged users (red) .ashow -> Show flagged users (blue) .finish -> Stop scanning & show all flagged users .ait -> Show AI thought process .showids -> Show Roblox IDs of flagged users .thread X -> Set scanning speed (1-10) .help / !help -> Show commands """ global DELAY_AFTER_SUCCESS

while True:
    cmd = input().strip().lower()
    with lock:
        if cmd == ".show":
            print("\n=== FLAGGED USERS (RED) ===")
            for actor in bad_actors:
                print(f"{actor['username']} | Names: {actor['name_matches']} | Bio: {actor['bio_matches']}")
        elif cmd == ".ashow":
            print("\n=== FLAGGED USERS (BLUE) ===")
            for actor in bad_actors:
                print(f"{actor['username']} | Names: {actor['name_matches']} | Bio: {actor['bio_matches']}")
        elif cmd == ".finish":
            print("\n=== FINAL FLAGGED LIST ===")
            for actor in bad_actors:
                print(f"{actor['username']} | Names: {actor['name_matches']} | Bio: {actor['bio_matches']}")
            print("Stopping scanner...")
            exit(0)
        elif cmd == ".ait":
            print("\n=== AI THOUGHT PROCESS ===")
            for actor in bad_actors:
                if actor['bio_matches']:
                    print(f"||//||\\|| AI THOUGHT ON: {actor['username']} -> {actor['bio_matches']}")
        elif cmd == ".showids":
            print("\n=== FLAGGED USER IDs ===")
            for actor in bad_actors:
                print(actor['user_id'])
        elif cmd.startswith(".thread"):
            parts = cmd.split()
            if len(parts) == 2 and parts[1].isdigit():
                speed = min(max(int(parts[1]), 1), 10)
                DELAY_AFTER_SUCCESS = 1 / speed
                print(f"Thread speed set to {speed}")
        elif cmd in [".help", "!help"]:
            print(console_listener.__doc__)
        else:
            print("Unknown command. Type .help for commands.")

=========================

πŸš€ MAIN

=========================

def main(): # Start console listener threading.Thread(target=console_listener, daemon=True).start()

# Start worker threads
for i in range(MAX_BATCHES):
    threading.Thread(target=worker, args=(i,), daemon=True).start()

while True:
    time.sleep(10)

if name == "main": main()

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support