Skip to content

Commit

Permalink
[+] 1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Nitlix committed Jan 3, 2025
0 parents commit 6d40fd5
Show file tree
Hide file tree
Showing 7 changed files with 349 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024+ nitLix

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<h1 align="center">🥰 KissYourSelf 🥰</h1>
<p align="center">
██╗░░██╗██╗░░░██╗░██████╗<br />
██║░██╔╝╚██╗░██╔╝██╔════╝<br />
█████═╝░░╚████╔╝░╚█████╗░<br />
██╔═██╗░░░╚██╔╝░░░╚═══██╗<br />
██║░╚██╗░░░██║░░░██████╔╝<br />
╚═╝░░╚═╝░░░╚═╝░░░╚═════╝░
</p>
<p align="center">Revolutionary tool for gamers who need to keep themselves safe from being toxic.</p>

-----

<p align="center">
Packaged with 💝 by <a href="https://github.com/nitlix">nitLix</a> ⠀⠀Credits for inspiration to <a href="https://github.com/vojtikczhraje">voj</a>
</p>

## 🍭 Usage
- Download
- Run the tool before you hop on whatever it is 🤯
- Stay safe from spreading hate

## 😨 Features
- Removes swear words and replaces them with nice things.
- 1/10 chance of activating POSITIVITY MODE, where you replace your message with an EXTREMELY POSITIVE MESSAGE.
- To bypass you need to misstype the word completely (it's a feature)

## 🥰 Windows Releases
1. Check the latest KissYourSelf Release

2. Install the .exe

3. Run it

## 🤓 Python Usage
1. Clone the repository
```cmd
git clone https://github.com/nitlix/kissyourself.git
```

2. Install requirements from the directory
```cmd
pip install -r ./requirements.txt -U
```

3. Run it
```cmd
py ./src/kys.py
```

1 change: 1 addition & 0 deletions positivitymode.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
I am attracting everything for my highest good. New mindset, new opportunities, energy & new connections
27 changes: 27 additions & 0 deletions profanity.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
idiot-genius
kys-keep yourself safe!
fuck-wow
shit-wow
ass-diamond
idot-genius
bastard-genius
prick-hero
wanker-hero
cunt-love ya
douche-good person
dick-wow
pussy-cat
cock-knee
tits-watermelon
slut-genius
retard-genius
whore-hero
fag-hero
motherfucker-hero
scumbag-hero
dumb-hero
nig-nice man
moron-genius
bimbo-good loocking person
piss-wow
arse-emerald
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pynput==1.7.7
247 changes: 247 additions & 0 deletions src/kys.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,247 @@
# ███╗░░██╗██╗████████╗██╗░░░░░██╗██╗░░██╗░░░██████╗░██████╗░░█████╗░
# ████╗░██║██║╚══██╔══╝██║░░░░░██║╚██╗██╔╝░░░██╔══██╗██╔══██╗██╔══██╗
# ██╔██╗██║██║░░░██║░░░██║░░░░░██║░╚███╔╝░░░░██████╔╝██████╔╝██║░░██║
# ██║╚████║██║░░░██║░░░██║░░░░░██║░██╔██╗░░░░██╔═══╝░██╔══██╗██║░░██║
# ██║░╚███║██║░░░██║░░░███████╗██║██╔╝╚██╗██╗██║░░░░░██║░░██║╚█████╔╝
# ╚═╝░░╚══╝╚═╝░░░╚═╝░░░╚══════╝╚═╝╚═╝░░╚═╝╚═╝╚═╝░░░░░╚═╝░░╚═╝░╚════╝░


import os

os.system("title Kiss Your Self")

import sys

try:
sys.stdout.encoding = "utf-8"
except Exception:
try:
sys.stdout.reconfigure(encoding="utf-8")
except Exception:
pass

import time
import random
from pynput.keyboard import Key, Listener, Controller

print(
"""
===============================================================================
██╗░░██╗██╗░░░██╗░██████╗
██║░██╔╝╚██╗░██╔╝██╔════╝ Kiss <=> Packaged with 💝 by nitLix
█████═╝░░╚████╔╝░╚█████╗░ Your <=> Credits for inspiration to voj
██╔═██╗░░░╚██╔╝░░░╚═══██╗ Self <=> In loving memory of my sanity
██║░╚██╗░░░██║░░░██████╔╝
╚═╝░░╚═╝░░░╚═╝░░░╚═════╝░
===============================================================================
"""
)
# Set up word storage

storage = ""

# Keys being held
held = []

all_selected = False

profanity = {}
positivityModeMessage = ""

controller = Controller()


def main():

# Set working directory to src
os.chdir(os.path.dirname(os.path.abspath(__file__)))

try:
with open("../profanity.txt", "r") as f:
for line in f:
data = line.split("-")
profanity[data[0]] = data[1].replace("\n", "")
except FileNotFoundError:
print("Profanity file not found")
return
except Exception as e:
print(f"Error reading profanity file: {e}")
return

try:
with open("../positivitymode.txt", "r") as f:
positivityModeMessage = f.read()
except FileNotFoundError:
print("Positivity Mode file not found")
return
except Exception as e:
print(f"Error reading Positivity Mode file: {e}")
return

print("Imported profanity...")

def process_key(key):
return (
str(key)
.replace("'", "")
.replace("1", "i")
.replace("0", "o")
.replace("2", "z")
.replace("3", "e")
.replace("4", "a")
.replace("5", "s")
.replace("6", "g")
.replace("7", "t")
.replace("8", "b")
.replace("9", "g")
.lower()
)

nonspecial = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
" ",
]

# Set up keyboard listener
def on_press(key):
global storage
global held
global all_selected

# convert key to string
raw_key = process_key(key)
if raw_key not in held:
held.append(raw_key)

if len(raw_key) == 1 and "key.ctrl_l" not in held:
storage += raw_key

if raw_key == "key.space":
storage += " "

if raw_key == "key.enter":
storage = ""

if raw_key == "\\xoi":
all_selected = True

if raw_key == "\\xoe":
print("Bye bye!")
exit()

if raw_key == "key.backspace":
if all_selected:
storage = ""
all_selected = False
return

if "key.ctrl_l" in held:
# Cut off letters until space reached or beginning of string
special = False
space = False
erased = 0

if len(storage) == 0:
return

if storage[-1] not in nonspecial:
# Start special character erase, erase until nonspecial character is reached
while True:
if len(storage) == 0:
break

if storage[-1] in nonspecial:
break

storage = storage[:-1]
else:
# Start normal erase. Wait until alphabet reached, then erase until space
# Stop at beginning of string

alphabetReached = False
while True:
if len(storage) == 0:
break

if alphabetReached and storage[-1] == " ":
break

if storage[-1] in nonspecial and storage[-1] != " ":
alphabetReached = True

storage = storage[:-1]

else:
storage = storage[:-1]

# Input processed, now scan for profanity

for word in profanity:
# Cut storage by last len(word) and compare
if storage[-len(word) :] == word:
# Replace word by pressing backspace len(word) times
for _ in range(len(word)):
controller.press(Key.backspace)
controller.release(Key.backspace)

message = profanity[word]

# 10% chance to trigger P O S I T I V I T Y M O D E
if random.randint(0, 100) < 10:
message = positivityModeMessage

# Type out the replacement
for letter in message:
controller.press(letter)
controller.release(letter)
time.sleep(0.025)

# Don't scan for more profanity
break

def on_release(key):
global held

raw_key = process_key(key)
try:
held.remove(raw_key)
except Exception:
pass

print("Ready!")

# Collect events until released
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()


main()
try:
input()
except Exception:
pass

0 comments on commit 6d40fd5

Please sign in to comment.