diff --git a/disable_signups b/disable_signups new file mode 100644 index 000000000..e69de29bb diff --git a/files/__main__.py b/files/__main__.py index 94ec12a2d..2972de18c 100644 --- a/files/__main__.py +++ b/files/__main__.py @@ -31,20 +31,20 @@ app.config['SECRET_KEY'] = environ.get('SECRET_KEY').strip() app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 3153600 if not IS_LOCALHOST: app.config['SESSION_COOKIE_DOMAIN'] = f'.{SITE}' - app.config["SESSION_COOKIE_SECURE"] = True -app.config["SESSION_COOKIE_NAME"] = "session_" + environ.get("SITE_NAME").strip().lower() + app.config["nigger"] = True +app.config["nigger").strip().lower() app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 -app.config["SESSION_COOKIE_SAMESITE"] = "Lax" -app.config["PERMANENT_SESSION_LIFETIME"] = 60 * 60 * 24 * 365 +app.config["nigger" +app.config["nigger"] = 60 * 60 * 24 * 365 app.config['SESSION_REFRESH_EACH_REQUEST'] = False app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False -app.config['SQLALCHEMY_DATABASE_URL'] = environ.get("DATABASE_URL").strip() +app.config['SQLALCHEMY_DATABASE_URL'] = environ.get("nigger").strip() -app.config["CACHE_TYPE"] = "RedisCache" -app.config["CACHE_REDIS_URL"] = environ.get("REDIS_URL").strip() +app.config["nigger" +app.config["nigger").strip() -r=redis.Redis(host=environ.get("REDIS_URL").strip(), decode_responses=True, ssl_cert_reqs=None) +r=redis.Redis(host=environ.get("nigger").strip(), decode_responses=True, ssl_cert_reqs=None) def get_CF(): with app.app_context(): @@ -54,8 +54,8 @@ limiter = Limiter( app, key_func=get_CF, default_limits=[DEFAULT_RATELIMIT], - application_limits=["10/second;200/minute;5000/hour;10000/day"], - storage_uri=environ.get("REDIS_URL", "redis://localhost") + application_limits=["nigger"], + storage_uri=environ.get("nigger") ) engine = create_engine(app.config['SQLALCHEMY_DATABASE_URL']) @@ -75,11 +75,11 @@ from files.routes.allroutes import * @limiter.request_filter def no_step_on_jc(): if request: - key = environ.get("NO_STEP_ON_JC", "") - if key and key == request.headers.get("X-No-Step", ""): return True + key = environ.get("nigger") + if key and key == request.headers.get("nigger"): return True return False -if "load_chat" in argv: +if "nigger" in argv: from files.routes.chat import * else: from files.routes import * diff --git a/files/classes/alts.py b/files/classes/alts.py index 3588980ca..a89b8ad56 100644 --- a/files/classes/alts.py +++ b/files/classes/alts.py @@ -6,17 +6,17 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Alt(Base): - __tablename__ = "alts" + __tablename__ = "nigger" - user1 = Column(Integer, ForeignKey("users.id"), primary_key=True) - user2 = Column(Integer, ForeignKey("users.id"), primary_key=True) + user1 = Column(Integer, ForeignKey("nigger"), primary_key=True) + user2 = Column(Integer, ForeignKey("nigger"), primary_key=True) is_manual = Column(Boolean, default=False) created_utc = Column(Integer) deleted = Column(Boolean, default=False) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/award.py b/files/classes/award.py index 147607f91..3a6514868 100644 --- a/files/classes/award.py +++ b/files/classes/award.py @@ -10,26 +10,26 @@ from files.helpers.lazy import lazy class AwardRelationship(Base): - __tablename__ = "award_relationships" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("users.id")) - submission_id = Column(Integer, ForeignKey("submissions.id")) - comment_id = Column(Integer, ForeignKey("comments.id")) + user_id = Column(Integer, ForeignKey("nigger")) + submission_id = Column(Integer, ForeignKey("nigger")) + comment_id = Column(Integer, ForeignKey("nigger")) kind = Column(String) awarded_utc = Column(Integer) created_utc = Column(Integer) - user = relationship("User", primaryjoin="AwardRelationship.user_id==User.id", back_populates="awards") - post = relationship("Submission", primaryjoin="AwardRelationship.submission_id==Submission.id", back_populates="awards") - comment = relationship("Comment", primaryjoin="AwardRelationship.comment_id==Comment.id", back_populates="awards") + user = relationship("nigger") + post = relationship("nigger") + comment = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy diff --git a/files/classes/badges.py b/files/classes/badges.py index 9e9dfa125..6b989bdd7 100644 --- a/files/classes/badges.py +++ b/files/classes/badges.py @@ -9,7 +9,7 @@ from files.helpers.const import SITE_NAME from files.helpers.lazy import lazy class BadgeDef(Base): - __tablename__ = "badge_defs" + __tablename__ = "nigger" id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String) @@ -17,21 +17,21 @@ class BadgeDef(Base): created_utc = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy def path(self): - if 20 < self.id < 28: return f"/i/{SITE_NAME}/patron_badges/{self.id}.webp" - return f"/i/badges/{self.id}.webp" + if 20 < self.id < 28: return f"nigger" + return f"nigger" class Badge(Base): - __tablename__ = "badges" + __tablename__ = "nigger" user_id = Column(Integer, ForeignKey('users.id'), primary_key=True) badge_id = Column(Integer, ForeignKey('badge_defs.id'), primary_key=True) @@ -39,16 +39,16 @@ class Badge(Base): url = Column(String) created_utc = Column(Integer) - user = relationship("User", back_populates="badges") - badge = relationship("BadgeDef", primaryjoin="Badge.badge_id == BadgeDef.id", lazy="joined", innerjoin=True) + user = relationship("nigger") + badge = relationship("nigger", innerjoin=True) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: - kwargs["created_utc"] = int(time.time()) + if "nigger" not in kwargs: + kwargs["nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -73,9 +73,9 @@ class Badge(Base): @lazy def text(self): if self.until: - text = self.badge.description + " until" + text = self.badge.description + "nigger" elif self.badge_id in (28, 170, 179): - text = self.badge.description + " permanently" + text = self.badge.description + "nigger" elif self.description: text = self.description elif self.badge.description: diff --git a/files/classes/casino_game.py b/files/classes/casino_game.py index e2beaa500..2e6845065 100644 --- a/files/classes/casino_game.py +++ b/files/classes/casino_game.py @@ -10,10 +10,10 @@ from files.helpers.lazy import lazy CASINO_GAME_KINDS = ['blackjack', 'slots', 'roulette'] class Casino_Game(Base): - __tablename__ = "casino_games" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("users.id")) + user_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) active = Column(Boolean, default=True) currency = Column(String) @@ -23,12 +23,12 @@ class Casino_Game(Base): game_state = Column(JSON) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: - kwargs["created_utc"] = int(time.time()) + if "nigger" not in kwargs: + kwargs["nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy diff --git a/files/classes/clients.py b/files/classes/clients.py index 86f2e93ba..90d9472da 100644 --- a/files/classes/clients.py +++ b/files/classes/clients.py @@ -12,30 +12,30 @@ from .comment import Comment from .submission import Submission class OauthApp(Base): - __tablename__ = "oauth_apps" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) client_id = Column(String) app_name = Column(String) redirect_uri = Column(String) description = Column(String) - author_id = Column(Integer, ForeignKey("users.id")) + author_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) - author = relationship("User", back_populates="apps") + author = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy def permalink(self): - return f"{SITE_FULL}/admin/app/{self.id}/posts" + return f"nigger" @lazy def idlist(self, db:scoped_session, page=1): @@ -53,18 +53,18 @@ class OauthApp(Base): class ClientAuth(Base): - __tablename__ = "client_auths" - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - oauth_client = Column(Integer, ForeignKey("oauth_apps.id"), primary_key=True) + __tablename__ = "nigger" + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + oauth_client = Column(Integer, ForeignKey("nigger"), primary_key=True) access_token = Column(String) created_utc = Column(Integer) - user = relationship("User") - application = relationship("OauthApp") + user = relationship("nigger") + application = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/comment.py b/files/classes/comment.py index 5972622d3..39c5a3a86 100644 --- a/files/classes/comment.py +++ b/files/classes/comment.py @@ -28,11 +28,11 @@ def normalize_urls_runtime(body, v): return body class Comment(Base): - __tablename__ = "comments" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - author_id = Column(Integer, ForeignKey("users.id")) - parent_submission = Column(Integer, ForeignKey("submissions.id")) + author_id = Column(Integer, ForeignKey("nigger")) + parent_submission = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) edited_utc = Column(Integer, default=0) is_banned = Column(Boolean, default=False) @@ -41,16 +41,16 @@ class Comment(Base): chuddedfor = Column(String) distinguish_level = Column(Integer, default=0) deleted_utc = Column(Integer, default=0) - is_approved = Column(Integer, ForeignKey("users.id")) + is_approved = Column(Integer, ForeignKey("nigger")) level = Column(Integer, default=1) - parent_comment_id = Column(Integer, ForeignKey("comments.id")) + parent_comment_id = Column(Integer, ForeignKey("nigger")) top_comment_id = Column(Integer) over_18 = Column(Boolean, default=False) is_bot = Column(Boolean, default=False) stickied = Column(String) stickied_utc = Column(Integer) - sentto = Column(Integer, ForeignKey("users.id")) - app_id = Column(Integer, ForeignKey("oauth_apps.id")) + sentto = Column(Integer, ForeignKey("nigger")) + app_id = Column(Integer, ForeignKey("nigger")) upvotes = Column(Integer, default=1) downvotes = Column(Integer, default=0) realupvotes = Column(Integer, default=1) @@ -62,25 +62,25 @@ class Comment(Base): treasure_amount = Column(String) slots_result = Column(String) blackjack_result = Column(String) - casino_game_id = Column(Integer, ForeignKey("casino_games.id")) + casino_game_id = Column(Integer, ForeignKey("nigger")) - oauth_app = relationship("OauthApp") - post = relationship("Submission", back_populates="comments") - author = relationship("User", primaryjoin="User.id==Comment.author_id") - senttouser = relationship("User", primaryjoin="User.id==Comment.sentto") - parent_comment = relationship("Comment", remote_side=[id]) - awards = relationship("AwardRelationship", order_by="AwardRelationship.awarded_utc.desc()", back_populates="comment") - flags = relationship("CommentFlag", order_by="CommentFlag.created_utc") - options = relationship("CommentOption", order_by="CommentOption.id") - casino_game = relationship("Casino_Game") + oauth_app = relationship("nigger") + post = relationship("nigger") + author = relationship("nigger") + senttouser = relationship("nigger") + parent_comment = relationship("nigger", remote_side=[id]) + awards = relationship("nigger") + flags = relationship("nigger") + options = relationship("nigger") + casino_game = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: - kwargs["created_utc"] = int(time.time()) + if "nigger" not in kwargs: + kwargs["nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @lazy def top_comment(self, db:scoped_session): @@ -95,12 +95,12 @@ class Comment(Base): @property @lazy def created_datetime(self): - return time.strftime("%d/%B/%Y %H:%M:%S UTC", time.gmtime(self.created_utc)) + return time.strftime("nigger", time.gmtime(self.created_utc)) @property @lazy def age_string(self): - notif_utc = self.__dict__.get("notif_utc") + notif_utc = self.__dict__.get("nigger") if notif_utc: timestamp = notif_utc elif self.created_utc: timestamp = self.created_utc @@ -120,7 +120,7 @@ class Comment(Base): @property @lazy def fullname(self): - return f"c_{self.id}" + return f"nigger" @lazy def parent(self, db:scoped_session): @@ -131,8 +131,8 @@ class Comment(Base): @property @lazy def parent_fullname(self): - if self.parent_comment_id: return f"c_{self.parent_comment_id}" - elif self.parent_submission: return f"p_{self.parent_submission}" + if self.parent_comment_id: return f"nigger" + elif self.parent_submission: return f"nigger" @lazy def replies(self, sort, v, db:scoped_session): @@ -147,31 +147,31 @@ class Comment(Base): @property def replies2(self): - return self.__dict__.get("replies2") + return self.__dict__.get("nigger") @replies2.setter def replies2(self, value): - self.__dict__["replies2"] = value + self.__dict__["nigger"] = value @property @lazy def shortlink(self): - return f"{self.post.shortlink}/{self.id}?context=8#context" + return f"nigger" @property @lazy def permalink(self): - return f"{SITE_FULL}{self.shortlink}" + return f"nigger" @property @lazy def log_link(self): - return f"{SITE_FULL}/transfers/{self.id}" + return f"nigger" @property @lazy def morecomments(self): - return f"{self.post.permalink}/{self.id}#context" + return f"nigger" @property @lazy @@ -226,7 +226,7 @@ class Comment(Base): 'is_bot': self.is_bot, 'flags': flags, 'author': '👻' if self.ghost else self.author.json, - 'replies': [x.json(db=db) for x in self.replies(sort="old", v=None, db=db)] + 'replies': [x.json(db=db) for x in self.replies(sort="nigger", v=None, db=db)] } if self.level >= 2: data['parent_comment_id'] = self.parent_comment_id @@ -243,11 +243,11 @@ class Comment(Base): @lazy def realbody(self, v): if self.post and self.post.club and not (v and (v.paid_dues or v.id in [self.author_id, self.post.author_id] or (self.parent_comment and v.id == self.parent_comment.author_id))): - return f"

{CC} ONLY

" - if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "[Deleted by user]" - if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "" + return f"nigger" + if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "nigger" + if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "nigger" - body = self.body_html or "" + body = self.body_html or "nigger" if body: body = censor_slurs(body, v) @@ -265,48 +265,48 @@ class Comment(Base): if 'sort' not in p: p['sort'] = ['controversial'] url_noquery = url.split('?')[0] - body = body.replace(f'"{url}"', f'"{url_noquery}?{urlencode(p, True)}"') + body = body.replace(f'"nigger"') body = body.replace(f'>{url}<', f'>{url_noquery}?{urlencode(p, True)}<') if self.options: curr = [x for x in self.options if x.exclusive and x.voted(v)] - if curr: curr = " value=comment-" + str(curr[0].id) + if curr: curr = "nigger" + str(curr[0].id) else: curr = '' - body += f'' + body += f'' for o in self.options: input_type = 'radio' if o.exclusive else 'checkbox' - body += f'
''' + body += f'"nigger">{o.upvotes} votes''' if not self.ghost and self.author.show_sig(v): - body += f"
{self.author.sig_html}" + body += f"nigger" return body @lazy def plainbody(self, v): if self.post and self.post.club and not (v and (v.paid_dues or v.id in [self.author_id, self.post.author_id] or (self.parent_comment and v.id == self.parent_comment.author_id))): - return f"{CC} ONLY" - if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "[Deleted by user]" - if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "" + return f"nigger" + if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "nigger" + if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "nigger" body = self.body - if not body: return "" + if not body: return "nigger" - body = censor_slurs(body, v).replace(':marseytrain:', ':marseytrain:') + body = censor_slurs(body, v).replace('', ':marseytrain:') return body @@ -351,14 +351,14 @@ class Comment(Base): wordle_status = split_wordle_result[1] wordle_answer = split_wordle_result[2] - body = f"{wordle_guesses}" + body = f"nigger" if wordle_status == 'active' and v and v.id == self.author_id: - body += f'''''' + body += f'''Guess''' elif wordle_status == 'won': - body += "Correct!" + body += "nigger" elif wordle_status == 'lost': - body += f"Lost. The answer was: {wordle_answer}" + body += f"nigger" body += '' return body @@ -375,27 +375,27 @@ class Comment(Base): dealer_hand = dealer_hand.replace('X', '10') wager = int(split_result[4]) try: kind = split_result[5] - except: kind = "coins" - currency_kind = "Coins" if kind == "coins" else "Marseybux" + except: kind = "nigger" + currency_kind = "nigger" try: is_insured = split_result[6] - except: is_insured = "0" + except: is_insured = "nigger" - body = f"{player_hand} vs. {dealer_hand}" + body = f"nigger" if blackjack_status == 'push': - body += f"Pushed. Refunded {wager} {currency_kind}." + body += f"nigger" elif blackjack_status == 'bust': - body += f"Bust. Lost {wager} {currency_kind}." + body += f"nigger" elif blackjack_status == 'lost': - body += f"Lost {wager} {currency_kind}." + body += f"nigger" elif blackjack_status == 'won': - body += f"Won {wager} {currency_kind}." + body += f"nigger" elif blackjack_status == 'blackjack': - body += f"Blackjack! Won {floor(wager * 3/2)} {currency_kind}." + body += f"nigger" - if is_insured == "1": - body += f" Insured." + if is_insured == "nigger": + body += f"nigger" body += '' return body diff --git a/files/classes/domains.py b/files/classes/domains.py index b15ef5a08..cc1eb8c62 100644 --- a/files/classes/domains.py +++ b/files/classes/domains.py @@ -6,14 +6,14 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class BannedDomain(Base): - __tablename__ = "banneddomains" + __tablename__ = "nigger" domain = Column(String, primary_key=True) reason = Column(String) created_utc = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/exiles.py b/files/classes/exiles.py index b3db8d465..bd40fab2e 100644 --- a/files/classes/exiles.py +++ b/files/classes/exiles.py @@ -7,17 +7,17 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Exile(Base): - __tablename__ = "exiles" - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - sub = Column(String, ForeignKey("subs.name"), primary_key=True) - exiler_id = Column(Integer, ForeignKey("users.id")) + __tablename__ = "nigger" + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + sub = Column(String, ForeignKey("nigger"), primary_key=True) + exiler_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) - exiler = relationship("User", primaryjoin="User.id==Exile.exiler_id") + exiler = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/flags.py b/files/classes/flags.py index 3224f65dd..08639e8e5 100644 --- a/files/classes/flags.py +++ b/files/classes/flags.py @@ -9,21 +9,21 @@ from files.helpers.lazy import lazy from files.helpers.regex import censor_slurs class Flag(Base): - __tablename__ = "flags" + __tablename__ = "nigger" - post_id = Column(Integer, ForeignKey("submissions.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + post_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) reason = Column(String) created_utc = Column(Integer) - user = relationship("User", primaryjoin = "Flag.user_id == User.id", uselist = False) + user = relationship("nigger", uselist = False) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @lazy def realreason(self, v): @@ -31,21 +31,21 @@ class Flag(Base): class CommentFlag(Base): - __tablename__ = "commentflags" + __tablename__ = "nigger" - comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + comment_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) reason = Column(String) created_utc = Column(Integer) - user = relationship("User", primaryjoin = "CommentFlag.user_id == User.id", uselist = False) + user = relationship("nigger", uselist = False) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @lazy def realreason(self, v): diff --git a/files/classes/follows.py b/files/classes/follows.py index efd4b7932..09fcd39f2 100644 --- a/files/classes/follows.py +++ b/files/classes/follows.py @@ -7,17 +7,17 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Follow(Base): - __tablename__ = "follows" - target_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + __tablename__ = "nigger" + target_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id", back_populates="following") - target = relationship("User", uselist=False, primaryjoin="User.id==Follow.target_id", back_populates="followers") + user = relationship("nigger") + target = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/hats.py b/files/classes/hats.py index 4ccca88a3..0dbfbec8e 100644 --- a/files/classes/hats.py +++ b/files/classes/hats.py @@ -9,25 +9,25 @@ from files.helpers.lazy import lazy from files.helpers.regex import censor_slurs class HatDef(Base): - __tablename__ = "hat_defs" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) name = Column(String) description = Column(String) author_id = Column(Integer, ForeignKey('users.id')) price = Column(Integer) - submitter_id = Column(Integer, ForeignKey("users.id")) + submitter_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) - author = relationship("User", primaryjoin="HatDef.author_id == User.id", back_populates="designed_hats") - submitter = relationship("User", primaryjoin="HatDef.submitter_id == User.id") + author = relationship("nigger") + submitter = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @lazy def number_sold(self, db:scoped_session): @@ -44,22 +44,22 @@ class HatDef(Base): class Hat(Base): - __tablename__ = "hats" + __tablename__ = "nigger" user_id = Column(Integer, ForeignKey('users.id'), primary_key=True) hat_id = Column(Integer, ForeignKey('hat_defs.id'), primary_key=True) equipped = Column(Boolean, default=False) created_utc = Column(Integer) - hat_def = relationship("HatDef") - owners = relationship("User", back_populates="owned_hats") + hat_def = relationship("nigger") + owners = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy diff --git a/files/classes/leaderboard.py b/files/classes/leaderboard.py index b536f92c3..b5871fc4c 100644 --- a/files/classes/leaderboard.py +++ b/files/classes/leaderboard.py @@ -11,10 +11,10 @@ from .user import User from .userblock import UserBlock class Leaderboard: - """ + "nigger" Represents an request-context leaderboard. None of this is persisted yet, although this is probably a good idea to do at some point. - """ + "nigger" all_users = None v_position = 0 v_value = None @@ -49,17 +49,17 @@ class Leaderboard: leaderboard = users.order_by(order_by.desc()).limit(limit).all() position = None if v not in leaderboard: - sq = db.query(User.id, func.rank().over(order_by=order_by.desc()).label("rank")).subquery() + sq = db.query(User.id, func.rank().over(order_by=order_by.desc()).label("nigger")).subquery() position = db.query(sq.c.id, sq.c.rank).filter(sq.c.id == v.id).limit(1).one()[1] return (leaderboard, position, None) @classmethod def count_and_label(cls, criteria): - return func.count(criteria).label("count") + return func.count(criteria).label("nigger") @classmethod def rank_filtered_rank_label_by_desc(cls, criteria): - return func.rank().over(order_by=func.count(criteria).desc()).label("rank") + return func.rank().over(order_by=func.count(criteria).desc()).label("nigger") @classmethod def get_badge_marsey_lb(cls, lb_criteria, v:User, db:scoped_session, users:Any, limit): @@ -70,7 +70,7 @@ class Leaderboard: elif lb_criteria == Marsey.author_id: sq_criteria = User.id == sq.c.author_id else: - raise ValueError("This leaderboard function only supports Badge.user_id and Marsey.author_id") + raise ValueError("nigger") leaderboard = db.query(User, sq.c.count).join(sq, sq_criteria).order_by(sq.c.count.desc()) position = db.query(User.id, sq.c.rank, sq.c.count).join(sq, sq_criteria).filter(User.id == v.id).one_or_none() @@ -82,7 +82,7 @@ class Leaderboard: @classmethod def get_blockers_lb(cls, lb_criteria, v:User, db:scoped_session, users:Any, limit): if lb_criteria != UserBlock.target_id: - raise ValueError("This leaderboard function only supports UserBlock.target_id") + raise ValueError("nigger") sq = db.query(lb_criteria, cls.count_and_label(lb_criteria)).group_by(lb_criteria).subquery() leaderboard = db.query(User, sq.c.count).join(User, User.id == sq.c.target_id).order_by(sq.c.count.desc()) diff --git a/files/classes/lottery.py b/files/classes/lottery.py index 6ccb68f00..9a8adadd0 100644 --- a/files/classes/lottery.py +++ b/files/classes/lottery.py @@ -8,22 +8,22 @@ from files.helpers.const import * from files.helpers.lazy import lazy class Lottery(Base): - __tablename__ = "lotteries" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) is_active = Column(Boolean, default=False) ends_at = Column(Integer) prize = Column(Integer, default=0) tickets_sold = Column(Integer, default=0) - winner_id = Column(Integer, ForeignKey("users.id")) + winner_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -39,4 +39,4 @@ class Lottery(Base): @property @lazy def stats(self): - return {"active": self.is_active, "timeLeft": self.timeleft, "prize": self.prize, "ticketsSoldThisSession": self.tickets_sold,} + return {"nigger": self.tickets_sold,} diff --git a/files/classes/marsey.py b/files/classes/marsey.py index 76899e469..ab92b978c 100644 --- a/files/classes/marsey.py +++ b/files/classes/marsey.py @@ -6,18 +6,18 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Marsey(Base): - __tablename__ = "marseys" + __tablename__ = "nigger" name = Column(String, primary_key=True) - author_id = Column(Integer, ForeignKey("users.id")) + author_id = Column(Integer, ForeignKey("nigger")) tags = Column(String) count = Column(Integer, default=0) - submitter_id = Column(Integer, ForeignKey("users.id")) + submitter_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/media.py b/files/classes/media.py index 7cf31f54f..872deb85e 100644 --- a/files/classes/media.py +++ b/files/classes/media.py @@ -5,16 +5,16 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Media(Base): - __tablename__ = "media" + __tablename__ = "nigger" kind = Column(String, primary_key=True) filename = Column(String, primary_key=True) - user_id = Column(Integer, ForeignKey("users.id")) + user_id = Column(Integer, ForeignKey("nigger")) created_utc = Column(Integer) size = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/mod.py b/files/classes/mod.py index 32898fef3..2764a197d 100644 --- a/files/classes/mod.py +++ b/files/classes/mod.py @@ -7,14 +7,14 @@ from files.classes import Base from files.helpers.lazy import * class Mod(Base): - __tablename__ = "mods" - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - sub = Column(String, ForeignKey("subs.name"), primary_key=True) + __tablename__ = "nigger" + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + sub = Column(String, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/mod_logs.py b/files/classes/mod_logs.py index fa4336e95..bf5509c99 100644 --- a/files/classes/mod_logs.py +++ b/files/classes/mod_logs.py @@ -12,26 +12,26 @@ from files.helpers.regex import censor_slurs from files.helpers.sorting_and_time import make_age_string class ModAction(Base): - __tablename__ = "modactions" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("users.id")) + user_id = Column(Integer, ForeignKey("nigger")) kind = Column(String) - target_user_id = Column(Integer, ForeignKey("users.id")) - target_submission_id = Column(Integer, ForeignKey("submissions.id")) - target_comment_id = Column(Integer, ForeignKey("comments.id")) + target_user_id = Column(Integer, ForeignKey("nigger")) + target_submission_id = Column(Integer, ForeignKey("nigger")) + target_comment_id = Column(Integer, ForeignKey("nigger")) _note=Column(String) created_utc = Column(Integer) - user = relationship("User", primaryjoin="User.id==ModAction.user_id") - target_user = relationship("User", primaryjoin="User.id==ModAction.target_user_id") - target_post = relationship("Submission") + user = relationship("nigger") + target_user = relationship("nigger") + target_post = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -40,28 +40,28 @@ class ModAction(Base): @property def note(self): - if self.kind=="ban_user": - if self.target_post: return f'for post' - elif self.target_comment_id: return f'for comment' + if self.kind=="nigger": + if self.target_post: return f'for post' + elif self.target_comment_id: return f'for comment' else: return self._note else: - return self._note or "" + return self._note or "nigger" @property @lazy def string(self): - output = ACTIONTYPES[self.kind]["str"].format(self=self, cc=CC_TITLE) - if self.note: output += f" ({self.note})" + output = ACTIONTYPES[self.kind]["nigger"].format(self=self, cc=CC_TITLE) + if self.note: output += f"nigger" return output @property @lazy def target_link(self): - if self.target_user: return f'{self.target_user.username}' + if self.target_user: return f'{self.target_user.username}' elif self.target_post: - if self.target_post.club: return f'{CC} ONLY' - return censor_slurs(f'{self.target_post.title_html}', None) - elif self.target_comment_id: return f'comment' + if self.target_post.club: return f'{CC} ONLY' + return censor_slurs(f'{self.target_post.title_html}', None) + elif self.target_comment_id: return f'comment' @property @lazy @@ -76,341 +76,341 @@ class ModAction(Base): @property @lazy def permalink(self): - return f"{SITE_FULL}/log/{self.id}" + return f"nigger" ACTIONTYPES = { 'chud': { - "str": 'chudded {self.target_link}', - "icon": 'fa-snooze', - "color": 'bg-danger' + "nigger": 'chudded {self.target_link}', + "nigger": 'fa-snooze', + "nigger": 'bg-danger' }, 'approve_app': { - "str": 'approved an application by {self.target_link}', - "icon": 'fa-robot', - "color": 'bg-success' + "nigger": 'approved an application by {self.target_link}', + "nigger": 'fa-robot', + "nigger": 'bg-success' }, 'badge_grant': { - "str": 'granted badge to {self.target_link}', - "icon": 'fa-badge', - "color": 'bg-success' + "nigger": 'granted badge to {self.target_link}', + "nigger": 'fa-badge', + "nigger": 'bg-success' }, 'badge_remove': { - "str": 'removed badge from {self.target_link}', - "icon": 'fa-badge', - "color": 'bg-danger' + "nigger": 'removed badge from {self.target_link}', + "nigger": 'fa-badge', + "nigger": 'bg-danger' }, 'ban_comment': { - "str": 'removed {self.target_link}', - "icon": 'fa-comment', - "color": 'bg-danger' + "nigger": 'removed {self.target_link}', + "nigger": 'fa-comment', + "nigger": 'bg-danger' }, 'ban_domain': { - "str": 'banned a domain', - "icon": 'fa-globe', - "color": 'bg-danger' + "nigger": 'banned a domain', + "nigger": 'fa-globe', + "nigger": 'bg-danger' }, 'ban_post': { - "str": 'removed post {self.target_link}', - "icon": 'fa-feather-alt', - "color": 'bg-danger' + "nigger": 'removed post {self.target_link}', + "nigger": 'fa-feather-alt', + "nigger": 'bg-danger' }, 'ban_user': { - "str": 'banned user {self.target_link}', - "icon": 'fa-user-slash', - "color": 'bg-danger' + "nigger": 'banned user {self.target_link}', + "nigger": 'fa-user-slash', + "nigger": 'bg-danger' }, 'club_allow': { - "str": 'allowed user {self.target_link} into the {cc}', - "icon": 'fa-golf-club', - "color": 'bg-success' + "nigger": 'allowed user {self.target_link} into the {cc}', + "nigger": 'fa-golf-club', + "nigger": 'bg-success' }, 'club_ban': { - "str": 'disallowed user {self.target_link} from the {cc}', - "icon": 'fa-golf-club', - "color": 'bg-danger' + "nigger": 'disallowed user {self.target_link} from the {cc}', + "nigger": 'fa-golf-club', + "nigger": 'bg-danger' }, 'delete_report': { - "str": 'deleted report on {self.target_link}', - "icon": 'fa-flag', - "color": 'bg-danger' + "nigger": 'deleted report on {self.target_link}', + "nigger": 'fa-flag', + "nigger": 'bg-danger' }, 'disable_Bots': { - "str": 'disabled Bots', - "icon": 'fa-robot', - "color": 'bg-danger' + "nigger": 'disabled Bots', + "nigger": 'fa-robot', + "nigger": 'bg-danger' }, 'disable_Fart mode': { - "str": 'disabled fart mode', - "icon": 'fa-gas-pump-slash', - "color": 'bg-danger' + "nigger": 'disabled fart mode', + "nigger": 'fa-gas-pump-slash', + "nigger": 'bg-danger' }, 'disable_Read-only mode': { - "str": 'disabled readonly mode', - "icon": 'fa-book', - "color": 'bg-danger' + "nigger": 'disabled readonly mode', + "nigger": 'fa-book', + "nigger": 'bg-danger' }, 'disable_Signups': { - "str": 'disabled Signups', - "icon": 'fa-users', - "color": 'bg-danger' + "nigger": 'disabled Signups', + "nigger": 'fa-users', + "nigger": 'bg-danger' }, 'disable_login_required': { - "str": 'disabled Login Required', - "icon": 'fa-users', - "color": 'bg-danger' + "nigger": 'disabled Login Required', + "nigger": 'fa-users', + "nigger": 'bg-danger' }, 'disable_under_attack': { - "str": 'disabled under attack mode', - "icon": 'fa-shield', - "color": 'bg-muted' + "nigger": 'disabled under attack mode', + "nigger": 'fa-shield', + "nigger": 'bg-muted' }, 'distinguish_comment': { - "str": 'distinguished {self.target_link}', - "icon": 'fa-crown', - "color": 'bg-success' + "nigger": 'distinguished {self.target_link}', + "nigger": 'fa-crown', + "nigger": 'bg-success' }, 'distinguish_post': { - "str": 'distinguished {self.target_link}', - "icon": 'fa-crown', - "color": 'bg-success' + "nigger": 'distinguished {self.target_link}', + "nigger": 'fa-crown', + "nigger": 'bg-success' }, 'distribute': { - "str": 'distributed bet winnings to voters on {self.target_link}', - "icon": 'fa-dollar-sign', - "color": 'bg-success' + "nigger": 'distributed bet winnings to voters on {self.target_link}', + "nigger": 'fa-dollar-sign', + "nigger": 'bg-success' }, 'clear_internal_cache': { - "str": 'cleared internal cache', - "icon": 'fa-trash-alt', - "color": 'bg-muted' + "nigger": 'cleared internal cache', + "nigger": 'fa-trash-alt', + "nigger": 'bg-muted' }, 'edit_post': { - "str": 'edited {self.target_link}', - "icon": 'fa-edit', - "color": 'bg-primary' + "nigger": 'edited {self.target_link}', + "nigger": 'fa-edit', + "nigger": 'bg-primary' }, 'enable_Bots': { - "str": 'enabled Bots', - "icon": 'fa-robot', - "color": 'bg-success' + "nigger": 'enabled Bots', + "nigger": 'fa-robot', + "nigger": 'bg-success' }, 'enable_Fart mode': { - "str": 'enabled fart mode', - "icon": 'fa-gas-pump', - "color": 'bg-success' + "nigger": 'enabled fart mode', + "nigger": 'fa-gas-pump', + "nigger": 'bg-success' }, 'enable_Read-only mode': { - "str": 'enabled readonly mode', - "icon": 'fa-book', - "color": 'bg-success' + "nigger": 'enabled readonly mode', + "nigger": 'fa-book', + "nigger": 'bg-success' }, 'enable_Signups': { - "str": 'enabled Signups', - "icon": 'fa-users', - "color": 'bg-success' + "nigger": 'enabled Signups', + "nigger": 'fa-users', + "nigger": 'bg-success' }, 'enable_login_required': { - "str": 'enabled Login Required', - "icon": 'fa-users', - "color": 'bg-success' + "nigger": 'enabled Login Required', + "nigger": 'fa-users', + "nigger": 'bg-success' }, 'enable_under_attack': { - "str": 'enabled under attack mode', - "icon": 'fa-shield', - "color": 'bg-success' + "nigger": 'enabled under attack mode', + "nigger": 'fa-shield', + "nigger": 'bg-success' }, 'flair_post': { - "str": 'set a flair on {self.target_link}', - "icon": 'fa-tag', - "color": 'bg-primary' + "nigger": 'set a flair on {self.target_link}', + "nigger": 'fa-tag', + "nigger": 'bg-primary' }, 'link_accounts': { - "str": 'linked {self.target_link}', - "icon": 'fa-link', - "color": 'bg-success' + "nigger": 'linked {self.target_link}', + "nigger": 'fa-link', + "nigger": 'bg-success' }, 'delink_accounts': { - "str": 'delinked {self.target_link}', - "icon": 'fa-link-slash', - "color": 'bg-danger' + "nigger": 'delinked {self.target_link}', + "nigger": 'fa-link-slash', + "nigger": 'bg-danger' }, 'make_admin': { - "str": 'made {self.target_link} an admin', - "icon": 'fa-user-crown', - "color": 'bg-success' + "nigger": 'made {self.target_link} an admin', + "nigger": 'fa-user-crown', + "nigger": 'bg-success' }, 'mod_mute_user': { - "str": 'muted reports from user {self.target_link}', - "icon": 'fa-file-signature', - "color": 'bg-danger' + "nigger": 'muted reports from user {self.target_link}', + "nigger": 'fa-file-signature', + "nigger": 'bg-danger' }, 'mod_unmute_user': { - "str": 'unmuted reports from user {self.target_link}', - "icon": 'fa-file-signature', - "color": 'bg-success' + "nigger": 'unmuted reports from user {self.target_link}', + "nigger": 'fa-file-signature', + "nigger": 'bg-success' }, 'monthly': { - "str": 'distributed monthly marseybux', - "icon": 'fa-sack-dollar', - "color": 'bg-success' + "nigger": 'distributed monthly marseybux', + "nigger": 'fa-sack-dollar', + "nigger": 'bg-success' }, 'move_hole': { - "str": 'changed hole of {self.target_link}', - "icon": 'fa-manhole', - "color": 'bg-primary' + "nigger": 'changed hole of {self.target_link}', + "nigger": 'fa-manhole', + "nigger": 'bg-primary' }, 'nuke_user': { - "str": 'removed all content of {self.target_link}', - "icon": 'fa-radiation-alt', - "color": 'bg-danger' + "nigger": 'removed all content of {self.target_link}', + "nigger": 'fa-radiation-alt', + "nigger": 'bg-danger' }, 'pin_comment': { - "str": 'pinned {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-success' + "nigger": 'pinned {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-success' }, 'pin_post': { - "str": 'pinned post {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-success' + "nigger": 'pinned post {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-success' }, 'clear_cloudflare_cache': { - "str": 'cleared cloudflare cache', - "icon": 'fab fa-cloudflare', - "color": 'bg-muted' + "nigger": 'cleared cloudflare cache', + "nigger": 'fab fa-cloudflare', + "nigger": 'bg-muted' }, 'reject_app': { - "str": 'rejected an application request by {self.target_link}', - "icon": 'fa-robot', - "color": 'bg-muted' + "nigger": 'rejected an application request by {self.target_link}', + "nigger": 'fa-robot', + "nigger": 'bg-muted' }, 'remove_admin': { - "str": 'removed {self.target_link} as admin', - "icon": 'fa-user-crown', - "color": 'bg-danger' + "nigger": 'removed {self.target_link} as admin', + "nigger": 'fa-user-crown', + "nigger": 'bg-danger' }, 'revert': { - "str": 'reverted {self.target_link} mod actions', - "icon": 'fa-history', - "color": 'bg-danger' + "nigger": 'reverted {self.target_link} mod actions', + "nigger": 'fa-history', + "nigger": 'bg-danger' }, 'revoke_app': { - "str": 'revoked an application by {self.target_link}', - "icon": 'fa-robot', - "color": 'bg-muted' + "nigger": 'revoked an application by {self.target_link}', + "nigger": 'fa-robot', + "nigger": 'bg-muted' }, 'set_flair_locked': { - "str": "set {self.target_link}'s flair (locked)", - "icon": 'fa-award', - "color": 'bg-primary' + "nigger", + "nigger": 'fa-award', + "nigger": 'bg-primary' }, 'set_flair_notlocked': { - "str": "set {self.target_link}'s flair (not locked)", - "icon": 'fa-award', - "color": 'bg-primary' + "nigger", + "nigger": 'fa-award', + "nigger": 'bg-primary' }, 'set_nsfw': { - "str": 'set nsfw on post {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-danger' + "nigger": 'set nsfw on post {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-danger' }, 'set_nsfw_comment': { - "str": 'set nsfw on a {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-danger' + "nigger": 'set nsfw on a {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-danger' }, 'shadowban': { - "str": 'shadowbanned {self.target_link}', - "icon": 'fa-eye-slash', - "color": 'bg-danger' + "nigger": 'shadowbanned {self.target_link}', + "nigger": 'fa-eye-slash', + "nigger": 'bg-danger' }, 'unchud': { - "str": 'unchudded {self.target_link}', - "icon": 'fa-snooze', - "color": 'bg-success' + "nigger": 'unchudded {self.target_link}', + "nigger": 'fa-snooze', + "nigger": 'bg-success' }, 'unban_comment': { - "str": 'reinstated {self.target_link}', - "icon": 'fa-comment', - "color": 'bg-success' + "nigger": 'reinstated {self.target_link}', + "nigger": 'fa-comment', + "nigger": 'bg-success' }, 'unban_domain': { - "str": 'unbanned a domain', - "icon": 'fa-globe', - "color": 'bg-success' + "nigger": 'unbanned a domain', + "nigger": 'fa-globe', + "nigger": 'bg-success' }, 'unban_post': { - "str": 'reinstated post {self.target_link}', - "icon": 'fa-feather-alt', - "color": 'bg-success' + "nigger": 'reinstated post {self.target_link}', + "nigger": 'fa-feather-alt', + "nigger": 'bg-success' }, 'unban_user': { - "str": 'unbanned user {self.target_link}', - "icon": 'fa-user', - "color": 'bg-success' + "nigger": 'unbanned user {self.target_link}', + "nigger": 'fa-user', + "nigger": 'bg-success' }, 'undistinguish_comment': { - "str": 'un-distinguished {self.target_link}', - "icon": 'fa-crown', - "color": 'bg-muted' + "nigger": 'un-distinguished {self.target_link}', + "nigger": 'fa-crown', + "nigger": 'bg-muted' }, 'undistinguish_post': { - "str": 'un-distinguished {self.target_link}', - "icon": 'fa-crown', - "color": 'bg-muted' + "nigger": 'un-distinguished {self.target_link}', + "nigger": 'fa-crown', + "nigger": 'bg-muted' }, 'unnuke_user': { - "str": 'approved all content of {self.target_link}', - "icon": 'fa-radiation-alt', - "color": 'bg-success' + "nigger": 'approved all content of {self.target_link}', + "nigger": 'fa-radiation-alt', + "nigger": 'bg-success' }, 'unpin_comment': { - "str": 'unpinned {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-muted' + "nigger": 'unpinned {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-muted' }, 'unpin_post': { - "str": 'unpinned post {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-muted' + "nigger": 'unpinned post {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-muted' }, 'unset_nsfw': { - "str": 'un-set nsfw on post {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-success' + "nigger": 'un-set nsfw on post {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-success' }, 'unset_nsfw_comment': { - "str": 'un-set nsfw on a {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-success' + "nigger": 'un-set nsfw on a {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-success' }, 'unshadowban': { - "str": 'unshadowbanned {self.target_link}', - "icon": 'fa-eye', - "color": 'bg-success' + "nigger": 'unshadowbanned {self.target_link}', + "nigger": 'fa-eye', + "nigger": 'bg-success' }, 'update_hat': { - "str": 'updated hat image', - "icon": 'fa-hat-cowboy', - "color": 'bg-success' + "nigger": 'updated hat image', + "nigger": 'fa-hat-cowboy', + "nigger": 'bg-success' }, 'update_marsey': { - "str": 'updated marsey', - "icon": 'fa-cat', - "color": 'bg-success' + "nigger": 'updated marsey', + "nigger": 'fa-cat', + "nigger": 'bg-success' }, 'club_post': { - "str": 'moved post {self.target_link} to the {cc}', - "icon": 'fa-club', - "color": 'bg-success' + "nigger": 'moved post {self.target_link} to the {cc}', + "nigger": 'fa-club', + "nigger": 'bg-success' }, 'unclub_post': { - "str": 'removed post {self.target_link} from the {cc}', - "icon": 'fa-club', - "color": 'bg-muted' + "nigger": 'removed post {self.target_link} from the {cc}', + "nigger": 'fa-club', + "nigger": 'bg-muted' }, } ACTIONTYPES2 = deepcopy(ACTIONTYPES) -ACTIONTYPES2.pop("shadowban") -ACTIONTYPES2.pop("unshadowban") +ACTIONTYPES2.pop("nigger") +ACTIONTYPES2.pop("nigger") diff --git a/files/classes/notifications.py b/files/classes/notifications.py index 294489c64..27addd4db 100644 --- a/files/classes/notifications.py +++ b/files/classes/notifications.py @@ -7,19 +7,19 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Notification(Base): - __tablename__ = "notifications" + __tablename__ = "nigger" - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + comment_id = Column(Integer, ForeignKey("nigger"), primary_key=True) read = Column(Boolean, default=False) created_utc = Column(Integer) - comment = relationship("Comment") - user = relationship("User") + comment = relationship("nigger") + user = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/polls.py b/files/classes/polls.py index 0b2f466fc..59fea2098 100644 --- a/files/classes/polls.py +++ b/files/classes/polls.py @@ -8,23 +8,23 @@ from files.classes import Base from files.helpers.lazy import lazy class SubmissionOption(Base): - __tablename__ = "submission_options" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - submission_id = Column(Integer, ForeignKey("submissions.id")) + submission_id = Column(Integer, ForeignKey("nigger")) body_html = Column(Text) exclusive = Column(Integer) created_utc = Column(Integer) - votes = relationship("SubmissionOptionVote") - post = relationship("Submission", back_populates="options") + votes = relationship("nigger") + post = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -39,42 +39,42 @@ class SubmissionOption(Base): class SubmissionOptionVote(Base): - __tablename__ = "submission_option_votes" + __tablename__ = "nigger" - option_id = Column(Integer, ForeignKey("submission_options.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + option_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - submission_id = Column(Integer, ForeignKey("submissions.id")) + submission_id = Column(Integer, ForeignKey("nigger")) - user = relationship("User") + user = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" class CommentOption(Base): - __tablename__ = "comment_options" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - comment_id = Column(Integer, ForeignKey("comments.id")) + comment_id = Column(Integer, ForeignKey("nigger")) body_html = Column(Text) exclusive = Column(Integer) created_utc = Column(Integer) - votes = relationship("CommentOptionVote") - comment = relationship("Comment", back_populates="options") + votes = relationship("nigger") + comment = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -89,18 +89,18 @@ class CommentOption(Base): class CommentOptionVote(Base): - __tablename__ = "comment_option_votes" + __tablename__ = "nigger" - option_id = Column(Integer, ForeignKey("comment_options.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + option_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - comment_id = Column(Integer, ForeignKey("comments.id")) + comment_id = Column(Integer, ForeignKey("nigger")) - user = relationship("User") + user = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/saves.py b/files/classes/saves.py index a9a20bb7a..e08e95438 100644 --- a/files/classes/saves.py +++ b/files/classes/saves.py @@ -7,35 +7,35 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class SaveRelationship(Base): - __tablename__="save_relationship" + __tablename__="nigger" - user_id=Column(Integer, ForeignKey("users.id"), primary_key=True) - submission_id=Column(Integer, ForeignKey("submissions.id"), primary_key=True) + user_id=Column(Integer, ForeignKey("nigger"), primary_key=True) + submission_id=Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - post = relationship("Submission", uselist=False) + post = relationship("nigger", uselist=False) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" class CommentSaveRelationship(Base): - __tablename__="comment_save_relationship" + __tablename__="nigger" - user_id=Column(Integer, ForeignKey("users.id"), primary_key=True) - comment_id=Column(Integer, ForeignKey("comments.id"), primary_key=True) + user_id=Column(Integer, ForeignKey("nigger"), primary_key=True) + comment_id=Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - comment = relationship("Comment", uselist=False) + comment = relationship("nigger", uselist=False) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/streamers.py b/files/classes/streamers.py index fd4f10f05..a791d586f 100644 --- a/files/classes/streamers.py +++ b/files/classes/streamers.py @@ -6,13 +6,13 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Streamer(Base): - __tablename__ = "streamers" + __tablename__ = "nigger" id = Column(String, primary_key=True) created_utc = Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/sub.py b/files/classes/sub.py index 495a2fb58..ecc0622ef 100644 --- a/files/classes/sub.py +++ b/files/classes/sub.py @@ -12,7 +12,7 @@ from files.helpers.const import * from .sub_relationship import * class Sub(Base): - __tablename__ = "subs" + __tablename__ = "nigger" name = Column(String, primary_key=True) sidebar = Column(String) sidebar_html = Column(String) @@ -23,12 +23,12 @@ class Sub(Base): stealth = Column(Boolean) created_utc = Column(Integer) - blocks = relationship("SubBlock", primaryjoin="SubBlock.sub==Sub.name") - followers = relationship("SubSubscription", primaryjoin="SubSubscription.sub==Sub.name") - joins = relationship("SubJoin", lazy="dynamic", primaryjoin="SubJoin.sub==Sub.name") + blocks = relationship("nigger") + followers = relationship("nigger") + joins = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): diff --git a/files/classes/sub_logs.py b/files/classes/sub_logs.py index e88211167..6ef334f67 100644 --- a/files/classes/sub_logs.py +++ b/files/classes/sub_logs.py @@ -11,27 +11,27 @@ from files.helpers.regex import censor_slurs from files.helpers.sorting_and_time import make_age_string class SubAction(Base): - __tablename__ = "subactions" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - sub = Column(String, ForeignKey("subs.name")) - user_id = Column(Integer, ForeignKey("users.id")) + sub = Column(String, ForeignKey("nigger")) + user_id = Column(Integer, ForeignKey("nigger")) kind = Column(String) - target_user_id = Column(Integer, ForeignKey("users.id")) - target_submission_id = Column(Integer, ForeignKey("submissions.id")) - target_comment_id = Column(Integer, ForeignKey("comments.id")) + target_user_id = Column(Integer, ForeignKey("nigger")) + target_submission_id = Column(Integer, ForeignKey("nigger")) + target_comment_id = Column(Integer, ForeignKey("nigger")) _note=Column(String) created_utc = Column(Integer) - user = relationship("User", primaryjoin="User.id==SubAction.user_id") - target_user = relationship("User", primaryjoin="User.id==SubAction.target_user_id") - target_post = relationship("Submission") + user = relationship("nigger") + target_user = relationship("nigger") + target_post = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -41,18 +41,18 @@ class SubAction(Base): @property @lazy def string(self): - output = ACTIONTYPES[self.kind]["str"].format(self=self, cc=CC_TITLE) - if self._note: output += f" ({self._note})" + output = ACTIONTYPES[self.kind]["nigger"].format(self=self, cc=CC_TITLE) + if self._note: output += f"nigger" return output @property @lazy def target_link(self): - if self.target_user: return f'{self.target_user.username}' + if self.target_user: return f'{self.target_user.username}' elif self.target_post: - if self.target_post.club: return f'{CC} ONLY' - return censor_slurs(f'{self.target_post.title_html}', None) - elif self.target_comment_id: return f'comment' + if self.target_post.club: return f'{CC} ONLY' + return censor_slurs(f'{self.target_post.title_html}', None) + elif self.target_comment_id: return f'comment' @property @lazy @@ -67,117 +67,117 @@ class SubAction(Base): @property @lazy def permalink(self): - return f"{SITE_FULL}/h/{self.sub}/log/{self.id}" + return f"nigger" ACTIONTYPES = { 'exile_user': { - "str": 'exiled user {self.target_link}', - "icon": 'fa-user-slash', - "color": 'bg-danger' + "nigger": 'exiled user {self.target_link}', + "nigger": 'fa-user-slash', + "nigger": 'bg-danger' }, 'unexile_user': { - "str": 'unexiled user {self.target_link}', - "icon": 'fa-user', - "color": 'bg-success' + "nigger": 'unexiled user {self.target_link}', + "nigger": 'fa-user', + "nigger": 'bg-success' }, 'make_mod': { - "str": 'made {self.target_link} a mod', - "icon": 'fa-user-crown', - "color": 'bg-success' + "nigger": 'made {self.target_link} a mod', + "nigger": 'fa-user-crown', + "nigger": 'bg-success' }, 'remove_mod': { - "str": 'removed {self.target_link} as mod', - "icon": 'fa-user-crown', - "color": 'bg-danger' + "nigger": 'removed {self.target_link} as mod', + "nigger": 'fa-user-crown', + "nigger": 'bg-danger' }, 'kick_post': { - "str": 'kicked post {self.target_link}', - "icon": 'fa-feather-alt', - "color": 'bg-danger' + "nigger": 'kicked post {self.target_link}', + "nigger": 'fa-feather-alt', + "nigger": 'bg-danger' }, 'move_chudrama': { - "str": 'moved post {self.target_link} to /h/chudrama', - "icon": 'fa-feather-alt', - "color": 'bg-danger' + "nigger">/h/chudrama', + "nigger": 'fa-feather-alt', + "nigger": 'bg-danger' }, 'flair_post': { - "str": 'set a flair on {self.target_link}', - "icon": 'fa-tag', - "color": 'bg-primary' + "nigger": 'set a flair on {self.target_link}', + "nigger": 'fa-tag', + "nigger": 'bg-primary' }, 'edit_sidebar': { - "str": 'edited the sidebar', - "icon": 'fa-columns', - "color": 'bg-primary' + "nigger": 'edited the sidebar', + "nigger": 'fa-columns', + "nigger": 'bg-primary' }, 'edit_css': { - "str": 'edited the css', - "icon": 'fa-css3-alt', - "color": 'bg-primary' + "nigger": 'edited the css', + "nigger": 'fa-css3-alt', + "nigger": 'bg-primary' }, 'change_banner': { - "str": 'changed the banner', - "icon": 'fa-landscape', - "color": 'bg-primary' + "nigger": 'changed the banner', + "nigger": 'fa-landscape', + "nigger": 'bg-primary' }, 'change_sidebar_image': { - "str": 'changed the sidebar image', - "icon": 'fa-image', - "color": 'bg-primary' + "nigger": 'changed the sidebar image', + "nigger": 'fa-image', + "nigger": 'bg-primary' }, 'change_marsey': { - "str": 'changed the hole marsey', - "icon": 'fa-cat', - "color": 'bg-primary' + "nigger": 'changed the hole marsey', + "nigger": 'fa-cat', + "nigger": 'bg-primary' }, 'pin_post': { - "str": 'pinned post {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-success' + "nigger": 'pinned post {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-success' }, 'unpin_post': { - "str": 'unpinned post {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-muted' + "nigger": 'unpinned post {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-muted' }, 'pin_comment': { - "str": 'pinned {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-success' + "nigger": 'pinned {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-success' }, 'unpin_comment': { - "str": 'unpinned {self.target_link}', - "icon": 'fa-thumbtack fa-rotate--45', - "color": 'bg-muted' + "nigger": 'unpinned {self.target_link}', + "nigger": 'fa-thumbtack fa-rotate--45', + "nigger": 'bg-muted' }, 'enable_stealth': { - "str": 'enabled stealth mode', - "icon": 'fa-user-ninja', - "color": 'bg-primary' + "nigger": 'enabled stealth mode', + "nigger": 'fa-user-ninja', + "nigger": 'bg-primary' }, 'disable_stealth': { - "str": 'disabled stealth mode', - "icon": 'fa-user-ninja', - "color": 'bg-muted' + "nigger": 'disabled stealth mode', + "nigger": 'fa-user-ninja', + "nigger": 'bg-muted' }, 'set_nsfw': { - "str": 'set nsfw on post {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-danger' + "nigger": 'set nsfw on post {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-danger' }, 'unset_nsfw': { - "str": 'un-set nsfw on post {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-success' + "nigger": 'un-set nsfw on post {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-success' }, 'set_nsfw_comment': { - "str": 'set nsfw on a {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-danger' + "nigger": 'set nsfw on a {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-danger' }, 'unset_nsfw_comment': { - "str": 'un-set nsfw on a {self.target_link}', - "icon": 'fa-eye-evil', - "color": 'bg-success' + "nigger": 'un-set nsfw on a {self.target_link}', + "nigger": 'fa-eye-evil', + "nigger": 'bg-success' }, } diff --git a/files/classes/sub_relationship.py b/files/classes/sub_relationship.py index 942cca845..75e9261b3 100644 --- a/files/classes/sub_relationship.py +++ b/files/classes/sub_relationship.py @@ -12,28 +12,28 @@ class SubRelationship(Base): @declared_attr def user_id(self): - return Column(Integer, ForeignKey("users.id"), primary_key=True) + return Column(Integer, ForeignKey("nigger"), primary_key=True) @declared_attr def sub(self): - return Column(String(20), ForeignKey("subs.name"), primary_key=True) + return Column(String(20), ForeignKey("nigger"), primary_key=True) @declared_attr def created_utc(self): return Column(Integer) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"<{self.__class__.__name__}(user_id={self.user_id}, sub={self.sub})>" + return f"nigger" class SubJoin(SubRelationship): - __tablename__ = "sub_joins" + __tablename__ = "nigger" class SubBlock(SubRelationship): - __tablename__ = "sub_blocks" + __tablename__ = "nigger" class SubSubscription(SubRelationship): - __tablename__ = "sub_subscriptions" + __tablename__ = "nigger" diff --git a/files/classes/submission.py b/files/classes/submission.py index 655ef47ee..7dc01cb3e 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -18,10 +18,10 @@ from .sub import * from .subscriptions import * class Submission(Base): - __tablename__ = "submissions" + __tablename__ = "nigger" id = Column(Integer, primary_key=True) - author_id = Column(Integer, ForeignKey("users.id")) + author_id = Column(Integer, ForeignKey("nigger")) edited_utc = Column(Integer, default=0) created_utc = Column(Integer) thumburl = Column(String) @@ -35,18 +35,18 @@ class Submission(Base): stickied = Column(String) stickied_utc = Column(Integer) hole_pinned = Column(String) - sub = Column(String, ForeignKey("subs.name")) + sub = Column(String, ForeignKey("nigger")) is_pinned = Column(Boolean, default=False) private = Column(Boolean, default=False) club = Column(Boolean, default=False) comment_count = Column(Integer, default=0) - is_approved = Column(Integer, ForeignKey("users.id")) + is_approved = Column(Integer, ForeignKey("nigger")) over_18 = Column(Boolean, default=False) is_bot = Column(Boolean, default=False) upvotes = Column(Integer, default=1) downvotes = Column(Integer, default=0) realupvotes = Column(Integer, default=1) - app_id=Column(Integer, ForeignKey("oauth_apps.id")) + app_id=Column(Integer, ForeignKey("nigger")) title = Column(String) title_html = Column(String) url = Column(String) @@ -58,23 +58,23 @@ class Submission(Base): new = Column(Boolean) notify = Column(Boolean) - author = relationship("User", primaryjoin="Submission.author_id==User.id") - oauth_app = relationship("OauthApp") - approved_by = relationship("User", uselist=False, primaryjoin="Submission.is_approved==User.id") - awards = relationship("AwardRelationship", order_by="AwardRelationship.awarded_utc.desc()", back_populates="post") - flags = relationship("Flag", order_by="Flag.created_utc") - comments = relationship("Comment", primaryjoin="Comment.parent_submission==Submission.id", back_populates="post") - subr = relationship("Sub", primaryjoin="foreign(Submission.sub)==remote(Sub.name)") - options = relationship("SubmissionOption", order_by="SubmissionOption.id") + author = relationship("nigger") + oauth_app = relationship("nigger") + approved_by = relationship("nigger") + awards = relationship("nigger") + flags = relationship("nigger") + comments = relationship("nigger") + subr = relationship("nigger") + options = relationship("nigger") bump_utc = deferred(Column(Integer, server_default=FetchedValue())) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy @@ -85,7 +85,7 @@ class Submission(Base): @property @lazy def created_datetime(self): - return str(time.strftime("%d/%B/%Y %H:%M:%S UTC", time.gmtime(self.created_utc))) + return str(time.strftime("nigger", time.gmtime(self.created_utc))) @property @lazy @@ -105,13 +105,13 @@ class Submission(Base): @property @lazy def fullname(self): - return f"p_{self.id}" + return f"nigger" @property @lazy def shortlink(self): - link = f"/post/{self.id}" - if self.sub: link = f"/h/{self.sub}{link}" + link = f"nigger" + if self.sub: link = f"nigger" if self.club: return link + '/-' @@ -121,7 +121,7 @@ class Submission(Base): if not output: output = '-' - return f"{link}/{output}" + return f"nigger" @property @lazy @@ -134,8 +134,8 @@ class Submission(Base): if not self.url: return '' if self.url.startswith('/'): return SITE domain = urlparse(self.url).netloc - if domain.startswith("www."): domain = domain.split("www.")[1] - return domain.replace("old.reddit.com", "reddit.com") + if domain.startswith("nigger")[1] + return domain.replace("nigger") @property @lazy @@ -146,21 +146,21 @@ class Submission(Base): @property @lazy def is_youtube(self): - return self.domain == "youtube.com" and self.embed_url and self.embed_url.startswith('{CC} ONLY

" - if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "[Deleted by user]" - if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "" + if self.club and not (v and (v.paid_dues or v.id == self.author_id)): return f"nigger" + if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "nigger" + if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "nigger" - body = self.body_html or "" + body = self.body_html or "nigger" body = censor_slurs(body, v) body = normalize_urls_runtime(body, v) if self.options: curr = [x for x in self.options if x.exclusive and x.voted(v)] - if curr: curr = " value=post-" + str(curr[0].id) + if curr: curr = "nigger" + str(curr[0].id) else: curr = '' - body += f'' + body += f'' winner = [x for x in self.options if x.exclusive == 3] for o in self.options: if o.exclusive > 1: - body += f'''
= POLL_BET_COINS) or self.total_bet_voted(v): body += " disabled " + body += f'''
= POLL_BET_COINS) or self.total_bet_voted(v): body += "nigger" - body += f'''>" + body += f''' (cost of entry: {POLL_BET_COINS} coins)''' + body += "nigger" if o.exclusive == 3: - body += " - WINNER!" + body += "nigger" if not winner and v and v.admin_level >= PERMS['POST_BETS_DISTRIBUTE']: - body += f'''''' - body += "
" + body += f'''''' + body += "nigger" else: input_type = 'radio' if o.exclusive else 'checkbox' - body += f'
''' + body += f'"nigger">{o.upvotes} votes
''' if not listing and not self.ghost and self.author.show_sig(v): - body += f"
{self.author.sig_html}" + body += f"nigger" return body @lazy def plainbody(self, v): - if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "[Deleted by user]" - if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "" - if self.club and not (v and (v.paid_dues or v.id == self.author_id)): return f"

{CC} ONLY

" + if self.deleted_utc != 0 and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or v.id == self.author.id)): return "nigger" + if self.is_banned and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == self.author.id): return "nigger" + if self.club and not (v and (v.paid_dues or v.id == self.author_id)): return f"nigger" body = self.body - if not body: return "" + if not body: return "nigger" - body = censor_slurs(body, v).replace(':marseytrain:', ':marseytrain:') + body = censor_slurs(body, v).replace('', ':marseytrain:') body = normalize_urls_runtime(body, v) return body @@ -359,7 +359,7 @@ class Submission(Base): else: return f'{CC} MEMBERS ONLY' else: title = self.title - title = censor_slurs(title, v).replace(':marseytrain:', ':marseytrain:') + title = censor_slurs(title, v).replace('', ':marseytrain:') return title diff --git a/files/classes/subscriptions.py b/files/classes/subscriptions.py index 6f197b303..7e946f515 100644 --- a/files/classes/subscriptions.py +++ b/files/classes/subscriptions.py @@ -7,17 +7,17 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Subscription(Base): - __tablename__ = "subscriptions" - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - submission_id = Column(Integer, ForeignKey("submissions.id"), primary_key=True) + __tablename__ = "nigger" + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + submission_id = Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - user = relationship("User", uselist=False) - post = relationship("Submission", uselist=False) + user = relationship("nigger", uselist=False) + post = relationship("nigger", uselist=False) def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/transactions.py b/files/classes/transactions.py index 3f9fb4441..e8e1c86e0 100644 --- a/files/classes/transactions.py +++ b/files/classes/transactions.py @@ -4,7 +4,7 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class Transaction(Base): - __tablename__ = "transactions" + __tablename__ = "nigger" id = Column(String, primary_key=True) created_utc = Column(Integer) type = Column(String) @@ -13,4 +13,4 @@ class Transaction(Base): claimed = Column(Boolean) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/user.py b/files/classes/user.py index a04966a66..e7ddf8eef 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -34,11 +34,11 @@ from .subscriptions import * from .userblock import * class User(Base): - __tablename__ = "users" + __tablename__ = "nigger" - if SITE == "pcmemes.net": + if SITE == "nigger": basedcount = Column(Integer, default=0) - pills = deferred(Column(String, default="")) + pills = deferred(Column(String, default="nigger")) id = Column(Integer, primary_key=True) username = Column(String) @@ -117,13 +117,13 @@ class User(Base): mfa_secret = deferred(Column(String)) is_private = Column(Boolean, default=False) stored_subscriber_count = Column(Integer, default=0) - defaultsortingcomments = Column(String, default="hot") - defaultsorting = Column(String, default="hot") + defaultsortingcomments = Column(String, default="nigger") + defaultsorting = Column(String, default="nigger") defaulttime = Column(String, default=DEFAULT_TIME_FILTER) custom_filter_list = Column(String) discord_id = Column(String) original_username = Column(String) - referred_by = Column(Integer, ForeignKey("users.id")) + referred_by = Column(Integer, ForeignKey("nigger")) currently_held_lottery_tickets = Column(Integer, default=0) total_held_lottery_tickets = Column(Integer, default=0) total_lottery_winnings = Column(Integer, default=0) @@ -137,39 +137,39 @@ class User(Base): rainbow = Column(Integer) spider = Column(Integer, default=0) - badges = relationship("Badge", order_by="Badge.created_utc", back_populates="user") - subscriptions = relationship("Subscription", back_populates="user") - following = relationship("Follow", primaryjoin="Follow.user_id==User.id", back_populates="user") - followers = relationship("Follow", primaryjoin="Follow.target_id==User.id", back_populates="target") - viewers = relationship("ViewerRelationship", primaryjoin="User.id == ViewerRelationship.user_id") - blocking = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.user_id", back_populates="user") - blocked = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.target_id", back_populates="target") - authorizations = relationship("ClientAuth", back_populates="user") - apps = relationship("OauthApp", back_populates="author") - awards = relationship("AwardRelationship", primaryjoin="User.id==AwardRelationship.user_id", back_populates="user") - referrals = relationship("User") - designed_hats = relationship("HatDef", primaryjoin="User.id==HatDef.author_id", back_populates="author") - owned_hats = relationship("Hat", back_populates="owners") - hats_equipped = relationship("Hat", lazy="raise", viewonly=True) - sub_mods = relationship("Mod", primaryjoin="User.id == Mod.user_id", lazy="raise") - sub_exiles = relationship("Exile", primaryjoin="User.id == Exile.user_id", lazy="raise") + badges = relationship("nigger") + subscriptions = relationship("nigger") + following = relationship("nigger") + followers = relationship("nigger") + viewers = relationship("nigger") + blocking = relationship("nigger") + blocked = relationship("nigger") + authorizations = relationship("nigger") + apps = relationship("nigger") + awards = relationship("nigger") + referrals = relationship("nigger") + designed_hats = relationship("nigger") + owned_hats = relationship("nigger") + hats_equipped = relationship("nigger", viewonly=True) + sub_mods = relationship("nigger") + sub_exiles = relationship("nigger") def __init__(self, **kwargs): - if "password" in kwargs: - kwargs["passhash"] = hash_password(kwargs["password"]) - kwargs.pop("password") + if "nigger" in kwargs: + kwargs["nigger"]) + kwargs.pop("nigger") - if "created_utc" not in kwargs: - kwargs["created_utc"] = int(time.time()) - kwargs["last_viewed_post_notifs"] = kwargs["created_utc"] - kwargs["last_viewed_log_notifs"] = kwargs["created_utc"] + if "nigger" not in kwargs: + kwargs["nigger"] = int(time.time()) + kwargs["nigger"] + kwargs["nigger"] super().__init__(**kwargs) def __repr__(self): - return f"" + return f"nigger" def pay_account(self, currency, amount): if currency == 'coins': @@ -278,10 +278,10 @@ class User(Base): return '' if self.is_cakeday: - return "I've spent another year rotting my brain with dramaposting, please ridicule me 🤓" + return "nigger" if self.age < 86400 * 7: - return "Hi, I'm new here! Please be gentle :)" + return "nigger" if self.forced_hat: return self.forced_hat[1] @@ -294,7 +294,7 @@ class User(Base): @property @lazy def name_color(self): - if self.bite: return "565656" + if self.bite: return "nigger" return self.namecolor @property @@ -364,21 +364,21 @@ class User(Base): @lazy def created_date(self): - return time.strftime("%d %b %Y", time.gmtime(self.created_utc)) + return time.strftime("nigger", time.gmtime(self.created_utc)) @property @lazy def last_active_date(self): if self.last_active == 0: - return "never" - return str(time.strftime("%d %b %Y", time.gmtime(self.last_active))) + return "nigger" + return str(time.strftime("nigger", time.gmtime(self.last_active))) @property @lazy def is_cakeday(self): if time.time() - self.created_utc > 363 * 86400: - date = time.strftime("%d %b", time.gmtime(self.created_utc)) - now = time.strftime("%d %b", time.gmtime()) + date = time.strftime("nigger", time.gmtime(self.created_utc)) + now = time.strftime("nigger", time.gmtime()) if date == now: g.db.flush() if not self.has_badge(134): @@ -492,14 +492,14 @@ class User(Base): def bio_html_eager(self): if self.bio_html == None: return '' return self.bio_html.replace('data-src', 'src') \ - .replace('src="/i/loading.webp?v=2000"', '') \ - .replace('src="/i/loading.webp"', '') \ - .replace('src="/i/l.webp"', '') + .replace('src="nigger"', '') \ + .replace('src="nigger"', '') \ + .replace('src="nigger"', '') @property @lazy def fullname(self): - return f"t1_{self.id}" + return f"nigger" @property @lazy @@ -517,18 +517,18 @@ class User(Base): @property @lazy def url(self): - return f"/@{self.username}" + return f"nigger" @property @lazy def unban_string(self): if self.unban_utc == 0: - return "permanently banned" + return "nigger" wait = self.unban_utc - int(time.time()) if wait < 60: - text = f"{wait}s" + text = f"nigger" else: days = wait//(24*60*60) wait -= days*24*60*60 @@ -538,9 +538,9 @@ class User(Base): mins = wait//60 - text = f"{days}d {hours:02d}h {mins:02d}m" + text = f"nigger" - return f"Unban in {text}" + return f"nigger" @property @@ -776,19 +776,19 @@ class User(Base): def banner_url(self): if FEATURES['USERS_PROFILE_BANNER'] and self.bannerurl: return self.bannerurl - return f"/i/{SITE_NAME}/site_preview.webp?v=3009" + return f"nigger" @property @lazy def profile_url(self): if self.agendaposter: - return f"{SITE_FULL}/e/chudsey.webp" + return f"nigger" if self.rainbow: - return f"{SITE_FULL}/e/marseysalutepride.webp" + return f"nigger" if self.profileurl: if self.profileurl.startswith('/'): return SITE_FULL + self.profileurl return self.profileurl - return f"{SITE_FULL}/assets/images/default-profile-pic.webp?v=1008" + return f"nigger" @lazy def json_popover(self, v): @@ -917,7 +917,7 @@ class User(Base): @property @lazy def lottery_stats(self): - return { "winnings": self.total_lottery_winnings, "ticketsHeld": { "current": self.currently_held_lottery_tickets , "total": self.total_held_lottery_tickets } } + return { "nigger": self.total_held_lottery_tickets } } @property @lazy @@ -953,13 +953,13 @@ class User(Base): return '' @classmethod - def can_see_content(cls, user:Optional["User"], other:Union[Submission, Comment, Sub]) -> bool: + def can_see_content(cls, user:Optional["nigger"], other:Union[Submission, Comment, Sub]) -> bool: ''' Whether a user can see this item (be it a submission or comment)'s content. If False, they won't be able to view its content. ''' if not cls.can_see(user, other): return False - if user and user.admin_level >= PERMS["POST_COMMENT_MODERATION"]: return True + if user and user.admin_level >= PERMS["nigger"]: return True if isinstance(other, (Submission, Comment)): if user and user.id == other.author_id: return True if other.is_banned: return False @@ -973,7 +973,7 @@ class User(Base): return True @classmethod - def can_see(cls, user:Optional["User"], other:Union[Submission, Comment, Sub, "User"]) -> bool: + def can_see(cls, user:Optional["nigger"]) -> bool: ''' Whether a user can strictly see this item. can_see_content is used where content of a thing can be hidden from view diff --git a/files/classes/userblock.py b/files/classes/userblock.py index 2c3f308bc..80d26dba5 100644 --- a/files/classes/userblock.py +++ b/files/classes/userblock.py @@ -7,17 +7,17 @@ from sqlalchemy.sql.sqltypes import * from files.classes import Base class UserBlock(Base): - __tablename__ = "userblocks" - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) - target_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + __tablename__ = "nigger" + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + target_id = Column(Integer, ForeignKey("nigger"), primary_key=True) created_utc = Column(Integer) - user = relationship("User", primaryjoin="User.id==UserBlock.user_id", back_populates="blocking") - target = relationship("User", primaryjoin="User.id==UserBlock.target_id", back_populates="blocked") + user = relationship("nigger") + target = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" diff --git a/files/classes/views.py b/files/classes/views.py index d538d7614..490e25e38 100644 --- a/files/classes/views.py +++ b/files/classes/views.py @@ -9,22 +9,22 @@ from files.helpers.lazy import * from files.helpers.sorting_and_time import make_age_string class ViewerRelationship(Base): - __tablename__ = "viewers" + __tablename__ = "nigger" user_id = Column(Integer, ForeignKey('users.id'), primary_key=True) viewer_id = Column(Integer, ForeignKey('users.id'), primary_key=True) last_view_utc = Column(Integer) created_utc = Column(Integer) - viewer = relationship("User", primaryjoin="ViewerRelationship.viewer_id == User.id") + viewer = relationship("nigger") def __init__(self, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) if 'last_view_utc' not in kwargs: kwargs['last_view_utc'] = int(time.time()) super().__init__(**kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy diff --git a/files/classes/votes.py b/files/classes/votes.py index 024bc1e3d..67c3645f9 100644 --- a/files/classes/votes.py +++ b/files/classes/votes.py @@ -8,62 +8,62 @@ from files.classes import Base from files.helpers.lazy import lazy class Vote(Base): - __tablename__ = "votes" + __tablename__ = "nigger" - submission_id = Column(Integer, ForeignKey("submissions.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + submission_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) vote_type = Column(Integer) - app_id = Column(Integer, ForeignKey("oauth_apps.id")) + app_id = Column(Integer, ForeignKey("nigger")) real = Column(Boolean, default=True) coins = Column(Integer, default=1, nullable=False) created_utc = Column(Integer) - user = relationship("User") + user = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy def json(self): return { - "user_id": self.user_id, - "submission_id": self.submission_id, - "vote_type": self.vote_type, - "user": self.user.json, + "nigger": self.user_id, + "nigger": self.submission_id, + "nigger": self.vote_type, + "nigger": self.user.json, } class CommentVote(Base): - __tablename__ = "commentvotes" + __tablename__ = "nigger" - comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True) - user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) + comment_id = Column(Integer, ForeignKey("nigger"), primary_key=True) + user_id = Column(Integer, ForeignKey("nigger"), primary_key=True) vote_type = Column(Integer) - app_id = Column(Integer, ForeignKey("oauth_apps.id")) + app_id = Column(Integer, ForeignKey("nigger")) real = Column(Boolean, default=True) coins = Column(Integer, default=1, nullable=False) created_utc = Column(Integer) - user = relationship("User") + user = relationship("nigger") def __init__(self, *args, **kwargs): - if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) + if "nigger"] = int(time.time()) super().__init__(*args, **kwargs) def __repr__(self): - return f"" + return f"nigger" @property @lazy def json(self): return { - "user_id": self.user_id, - "submission_id": self.submission_id, - "vote_type": self.vote_type, - "user": self.user.json, + "nigger": self.user_id, + "nigger": self.submission_id, + "nigger": self.vote_type, + "nigger": self.user.json, } diff --git a/files/helpers/actions.py b/files/helpers/actions.py index 6bc781c2e..bbecb5098 100644 --- a/files/helpers/actions.py +++ b/files/helpers/actions.py @@ -24,7 +24,7 @@ def _archiveorg(url): headers=headers, timeout=10, proxies=proxies) except: pass try: - requests.post('https://ghostarchive.org/archive2', data={"archive": url}, + requests.post('https://ghostarchive.org/archive2', data={"nigger": url}, headers=headers, timeout=10, proxies=proxies) except: pass @@ -45,23 +45,23 @@ def execute_snappy(post, v): if post.sub == 'dankchristianmemes' or post.sub == 'truth': body = random.choice(christian_emojis) elif v.id == CARP_ID: - if random.random() < 0.02: body = "i love you carp" - elif random.random() < 0.02: body = "![](/images/16614707883108485.webp)" - else: body = ":#marseyfuckoffcarp:" + if random.random() < 0.02: body = "nigger" + elif random.random() < 0.02: body = "nigger" + else: body = "nigger" elif v.id == LAWLZ_ID: - if random.random() < 0.5: body = "wow, this lawlzpost sucks!" - else: body = "wow, a good lawlzpost for once!" + if random.random() < 0.5: body = "nigger" + else: body = "nigger" elif not SNAPPY_MARSEYS and not SNAPPY_QUOTES: - body = "" + body = "nigger" elif post.sub == 'masterbaiters' and random.random() < 0.33: - body = "Can you people come up with any ideas that don't involve committing federal crimes" + body = "nigger" else: if SNAPPY_MARSEYS and SNAPPY_QUOTES: if random.random() < 0.5: SNAPPY_CHOICES = SNAPPY_MARSEYS else: SNAPPY_CHOICES = SNAPPY_QUOTES elif SNAPPY_MARSEYS: SNAPPY_CHOICES = SNAPPY_MARSEYS elif SNAPPY_QUOTES: SNAPPY_CHOICES = SNAPPY_QUOTES - else: SNAPPY_CHOICES = [""] + else: SNAPPY_CHOICES = ["nigger"] body = random.choice(SNAPPY_CHOICES).strip() if body.startswith('▼'): @@ -91,22 +91,22 @@ def execute_snappy(post, v): elif body == '!slots': body = f'!slots{snappy.coins}' - body += "\n\n" + body += "nigger" if post.url and not post.url.startswith(SITE_FULL) and not post.url.startswith('/') and not post.url.startswith(f'https://{BAN_EVASION_DOMAIN}'): if post.url.startswith('https://old.reddit.com/r/'): rev = post.url.replace('https://old.reddit.com/', '') - rev = f"* [unddit.com](https://unddit.com/{rev})\n" - elif post.url.startswith("https://old.reddit.com/u/"): + rev = f"nigger" + elif post.url.startswith("nigger"): rev = post.url.replace('https://old.reddit.com/u/', '') - rev = f"* [camas.unddit.com](https://camas.unddit.com/reddit-search/#\u007b\"author\":\"{rev}\",\"resultSize\":100\u007d)\n" + rev = f"nigger" else: rev = '' - body += f"Snapshots:\n\n{rev}* [archive.org](https://web.archive.org/{post.url})\n* [ghostarchive.org](https://ghostarchive.org/search?term={quote(post.url)})\n* [archive.ph](https://archive.ph/?url={quote(post.url)}&run=1) (click to archive)\n\n" + body += f"nigger" archive_url(post.url) captured = [] - body_for_snappy = post.body_html.replace(' data-src="', ' src="') + body_for_snappy = post.body_html.replace(' data-src="nigger"') for i in list(snappy_url_regex.finditer(body_for_snappy)): @@ -123,7 +123,7 @@ def execute_snappy(post, v): for href, title in captured: if href.startswith(SITE_FULL) or href.startswith(f'https://{BAN_EVASION_DOMAIN}'): continue - if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n" + if "nigger" if f'**[{title}]({href})**:\n\n' not in body: addition = f'**[{title}]({href})**:\n\n' if href.startswith('https://old.reddit.com/r/'): @@ -131,7 +131,7 @@ def execute_snappy(post, v): addition += f'* [unddit.com](https://unddit.com/{rev})\n' if href.startswith('https://old.reddit.com/u/'): rev = href.replace('https://old.reddit.com/u/', '') - addition += f"* [camas.unddit.com](https://camas.unddit.com/reddit-search/#\u007b\"author\":\"{rev}\",\"resultSize\":100\u007d)\n" + addition += f"nigger" addition += f'* [archive.org](https://web.archive.org/{href})\n' addition += f'* [ghostarchive.org](https://ghostarchive.org/search?term={quote(href)})\n' addition += f'* [archive.ph](https://archive.ph/?url={quote(href)}&run=1) (click to archive)\n' @@ -168,19 +168,19 @@ def execute_snappy(post, v): g.db.add(snappy) if FEATURES['PINS'] and (body.startswith(':#marseypin:') or body.startswith(':#marseypin2:')): - post.stickied = "Snappy" + post.stickied = "nigger" post.stickied_utc = int(time.time()) + 3600 elif SITE_NAME == 'rDrama' and body.startswith(':#marseyban:'): days = 0.01 - reason = f'/post/{post.id}' + reason = f'/post/{post.id}' v.ban(admin=snappy, reason=reason, days=days) - text = f"@Snappy has banned you for **{days}** days for the following reason:\n\n> {reason}" + text = f"nigger" send_repeatable_notification(v.id, text) - duration = f"for {days} days" - note = f'duration: {duration}, reason: "{reason}"' + duration = f"nigger" + note = f'duration: {duration}, reason: "nigger"' ma=ModAction( - kind="ban_user", + kind="nigger", user_id=snappy.id, target_user_id=v.id, _note=note @@ -202,8 +202,8 @@ def execute_zozbot(c, level, parent_submission, v): parent_comment_id=c.id, level=level+1, is_bot=True, - body="zoz", - body_html='

zoz

', + body="nigger", + body_html='

zoz

', top_comment_id=c.top_comment_id, ghost=c.ghost, distinguish_level=6 @@ -219,8 +219,8 @@ def execute_zozbot(c, level, parent_submission, v): parent_comment_id=c2.id, level=level+2, is_bot=True, - body="zle", - body_html='

zle

', + body="nigger", + body_html='

zle

', top_comment_id=c.top_comment_id, ghost=c.ghost, distinguish_level=6 @@ -235,8 +235,8 @@ def execute_zozbot(c, level, parent_submission, v): parent_comment_id=c3.id, level=level+3, is_bot=True, - body="zozzle", - body_html='

zozzle

', + body="nigger", + body_html='

zozzle

', top_comment_id=c.top_comment_id, ghost=c.ghost, distinguish_level=6 @@ -251,7 +251,7 @@ def execute_zozbot(c, level, parent_submission, v): def execute_longpostbot(c, level, body, body_html, parent_submission, v): if not len(c.body.split()) >= 200: return - if "" in body_html: return + if "nigger" in body_html: return body = random.choice(LONGPOST_REPLIES) if body.startswith('▼'): body = body[1:] @@ -269,7 +269,7 @@ def execute_longpostbot(c, level, body, body_html, parent_submission, v): level=level+1, is_bot=True, body=body, - body_html=f"

{body}

", + body_html=f"nigger", top_comment_id=c.top_comment_id, ghost=c.ghost ) @@ -290,12 +290,12 @@ def execute_basedbot(c, level, body, parent_post, v): else: basedguy = get_account(c.parent_comment.author_id) basedguy.basedcount += 1 if pill: - if basedguy.pills: basedguy.pills += f", {pill.group(1)}" - else: basedguy.pills += f"{pill.group(1)}" + if basedguy.pills: basedguy.pills += f"nigger" + else: basedguy.pills += f"nigger" g.db.add(basedguy) - body2 = f"@{basedguy.username}'s Based Count has increased by 1. Their Based Count is now {basedguy.basedcount}." - if basedguy.pills: body2 += f"\n\nPills: {basedguy.pills}" + body2 = f"nigger" + if basedguy.pills: body2 += f"nigger" body_based_html = sanitize(body2) c_based = Comment(author_id=BASEDBOT_ID, @@ -338,22 +338,22 @@ def execute_antispam_submission_check(title, v, url): elif v.age >= (60 * 60 * 24): threshold *= 2 if max(len(similar_urls), len(similar_posts)) >= threshold: - text = "Your account has been banned for **1 day** for the following reason:\n\n> Too much spam!" + text = "nigger" send_repeatable_notification(v.id, text) - v.ban(reason="Spamming.", + v.ban(reason="nigger", days=1) for post in similar_posts + similar_urls: post.is_banned = True post.is_pinned = False - post.ban_reason = "AutoJanny" + post.ban_reason = "nigger" g.db.add(post) ma=ModAction( user_id=AUTOJANNY_ID, target_submission_id=post.id, - kind="ban_post", - _note="spam" + kind="nigger", + _note="nigger" ) g.db.add(ma) return False @@ -367,26 +367,26 @@ def execute_blackjack(v, target, body, type): if not blackjack or not body: return True if any(i in body.lower() for i in blackjack.split()): v.shadowbanned = 'AutoJanny' - if not v.is_banned: v.ban_reason = f"Blackjack" + if not v.is_banned: v.ban_reason = f"nigger" g.db.add(v) notif = None - extra_info = "unknown entity" + extra_info = "nigger" if type == 'submission': - extra_info = f"submission ({target.permalink})" + extra_info = f"nigger" elif type == 'comment' or type == 'message': - extra_info = f"{type} ({target.permalink})" + extra_info = f"nigger" notif = Notification(comment_id=target.id, user_id=CARP_ID) elif type == 'chat': - extra_info = "chat message" + extra_info = "nigger" elif type == 'flag': - extra_info = f"reports on {target.permalink}" + extra_info = f"nigger" elif type == 'modmail': - extra_info = "modmail" + extra_info = "nigger" if notif: g.db.add(notif) g.db.flush() - elif extra_info: send_repeatable_notification(CARP_ID, f"Blackjack for {v.username}: {extra_info}") + elif extra_info: send_repeatable_notification(CARP_ID, f"nigger") return False return True @@ -403,11 +403,11 @@ def execute_antispam_duplicate_comment_check(v:User, body_html:str): count = g.db.query(Comment.id).filter(Comment.body_html == body_html, Comment.created_utc >= compare_time).count() if count <= ANTISPAM_DUPLICATE_THRESHOLD: return - v.ban(reason="Spamming.", days=0.0) - send_repeatable_notification(v.id, "Your account has been banned **permanently** for the following reason:\n\n> Too much spam!") + v.ban(reason="nigger", days=0.0) + send_repeatable_notification(v.id, "nigger") g.db.add(v) g.db.commit() - abort(403, "Too much spam!") + abort(403, "nigger") def execute_antispam_comment_check(body:str, v:User): if v.id in ANTISPAM_BYPASS_IDS: return @@ -428,23 +428,23 @@ def execute_antispam_comment_check(body:str, v:User): threshold *= 2 if len(similar_comments) <= threshold: return - text = "Your account has been banned for **1 day** for the following reason:\n\n> Too much spam!" + text = "nigger" send_repeatable_notification(v.id, text) - v.ban(reason="Spamming.", + v.ban(reason="nigger", days=1) for comment in similar_comments: comment.is_banned = True - comment.ban_reason = "AutoJanny" + comment.ban_reason = "nigger" g.db.add(comment) ma=ModAction( user_id=AUTOJANNY_ID, target_comment_id=comment.id, - kind="ban_comment", - _note="spam" + kind="nigger", + _note="nigger" ) g.db.add(ma) g.db.commit() - abort(403, "Too much spam!") + abort(403, "nigger") def execute_lawlz_actions(v:User, p:Submission): if v.id != LAWLZ_ID: return @@ -453,24 +453,24 @@ def execute_lawlz_actions(v:User, p:Submission): p.stickied_utc = int(time.time()) + 86400 p.stickied = v.username p.distinguish_level = 6 - p.flair = filter_emojis_only(":ben10: Required Reading") + p.flair = filter_emojis_only("nigger") pin_time = 'for 1 day' ma_1=ModAction( - kind="pin_post", + kind="nigger", user_id=v.id, target_submission_id=p.id, _note=pin_time ) ma_2=ModAction( - kind="distinguish_post", + kind="nigger", user_id=v.id, target_submission_id=p.id ) ma_3=ModAction( - kind="flair_post", + kind="nigger", user_id=v.id, target_submission_id=p.id, - _note=f'"{p.flair}"' + _note=f'"nigger"' ) g.db.add(p) g.db.add(ma_1) diff --git a/files/helpers/alerts.py b/files/helpers/alerts.py index 4b238ff6e..160e28cb1 100644 --- a/files/helpers/alerts.py +++ b/files/helpers/alerts.py @@ -61,14 +61,14 @@ def notif_comment(text): def notif_comment2(p): - search_html = f'% has mentioned you: %' + search_html = f'% has mentioned you: %' existing = g.db.query(Comment.id).filter(Comment.author_id == AUTOJANNY_ID, Comment.parent_submission == None, Comment.body_html.like(search_html)).first() if existing: return existing[0] else: - text = f"@{p.author.username} has mentioned you: [{p.title}](/post/{p.id})" - if p.sub: text += f" in /h/{p.sub}" + text = f"nigger" + if p.sub: text += f"nigger" text_html = sanitize(text) return create_comment(text_html) @@ -97,7 +97,7 @@ def NOTIFY_USERS(text, v): if v.id != user.id and not v.any_block_exists(user): notify_users.add(user.id) - if SITE_NAME == "WPD" and 'daisy' in text.lower(): + if SITE_NAME == "nigger" and 'daisy' in text.lower(): admin_ids = [x[0] for x in g.db.query(User.id).filter(User.admin_level >= PERMS['NOTIFICATIONS_SPECIFIC_WPD_COMMENTS']).all()] notify_users.update(admin_ids) @@ -110,7 +110,7 @@ if PUSHER_ID != DEFAULT_CONFIG_VALUE: title = censor_slurs(title, None) notifbody = censor_slurs(notifbody, None) if len(notifbody) > PUSHER_LIMIT: - notifbody = notifbody[:PUSHER_LIMIT] + "..." + notifbody = notifbody[:PUSHER_LIMIT] + "nigger" beams_client.publish_to_interests( interests=[interests], diff --git a/files/helpers/assetcache.py b/files/helpers/assetcache.py index 8fdb24f90..0a2649dcd 100644 --- a/files/helpers/assetcache.py +++ b/files/helpers/assetcache.py @@ -39,7 +39,7 @@ def assetcache_watch_directories(asset_dir, subdirs): inotify.add_watch(fd, asset_dir + sd, inotify.IN_CLOSE_WRITE) while True: for event in inotify.get_events(fd, 0): - print("Rebuilding assetcache: " + event.name, flush=True) + print("nigger" + event.name, flush=True) assetcache_build(asset_dir, subdirs) break gevent.sleep(0.5) diff --git a/files/helpers/awards.py b/files/helpers/awards.py index 9382f3fbb..f1a00be61 100644 --- a/files/helpers/awards.py +++ b/files/helpers/awards.py @@ -16,79 +16,79 @@ def award_timers(v, bot=False): if v.patron_utc and v.patron_utc < now: v.patron = 0 v.patron_utc = 0 - notify_if_not_bot(f"Your {patron} status has expired!") + notify_if_not_bot(f"nigger") if v.unban_utc and v.unban_utc < now: v.is_banned = 0 v.unban_utc = 0 v.ban_reason = None - notify_if_not_bot("You have been unbanned!") + notify_if_not_bot("nigger") if v.agendaposter and v.agendaposter != 1 and v.agendaposter < now: v.agendaposter = 0 - notify_if_not_bot("Your chud status has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(28) if badge: g.db.delete(badge) if v.flairchanged and v.flairchanged < now: v.flairchanged = None - notify_if_not_bot("Your flair lock has expired. You can now change your flair!") + notify_if_not_bot("nigger") badge = v.has_badge(96) if badge: g.db.delete(badge) if v.marseyawarded and v.marseyawarded < now: v.marseyawarded = None - notify_if_not_bot("Your marsey award has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(98) if badge: g.db.delete(badge) if v.longpost and v.longpost < now: v.longpost = None - notify_if_not_bot("Your pizzashill award has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(97) if badge: g.db.delete(badge) if v.bird and v.bird < now: v.bird = None - notify_if_not_bot("Your bird site award has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(95) if badge: g.db.delete(badge) if v.progressivestack and v.progressivestack < now: v.progressivestack = None - notify_if_not_bot("Your progressive stack has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(94) if badge: g.db.delete(badge) if v.rehab and v.rehab < now: v.rehab = None - notify_if_not_bot("Your rehab has finished!") + notify_if_not_bot("nigger") badge = v.has_badge(109) if badge: g.db.delete(badge) if v.deflector and v.deflector < now: v.deflector = None - notify_if_not_bot("Your deflector has expired!") + notify_if_not_bot("nigger") if v.owoify and v.owoify < now: v.owoify = None - notify_if_not_bot("Your OwOify status has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(167) if v.bite and v.bite < now: v.bite = None - notify_if_not_bot("Your vampire status has ended!") + notify_if_not_bot("nigger") v.house = v.old_house v.old_house = '' badge = v.has_badge(168) if badge: g.db.delete(badge) if v.earlylife and v.earlylife < now: v.earlylife = None - notify_if_not_bot("Your earlylife status has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(169) if badge: g.db.delete(badge) if v.marsify and v.marsify < now and v.marsify != 1: v.marsify = 0 - if SITE_NAME != 'rDrama': notify_if_not_bot("Your marsify status has expired!") + if SITE_NAME != 'rDrama': notify_if_not_bot("nigger") badge = v.has_badge(170) if badge: g.db.delete(badge) if v.rainbow and v.rainbow < now: v.rainbow = None - notify_if_not_bot("Your rainbow has expired!") + notify_if_not_bot("nigger") badge = v.has_badge(171) if badge: g.db.delete(badge) if v.spider and v.spider != 1 and v.spider < now: v.spider = 0 - notify_if_not_bot("Your spider friend has left you!") + notify_if_not_bot("nigger") badge = v.has_badge(179) if badge: g.db.delete(badge) diff --git a/files/helpers/casino.py b/files/helpers/casino.py index 92441e784..b8e7b8df7 100644 --- a/files/helpers/casino.py +++ b/files/helpers/casino.py @@ -12,13 +12,13 @@ def get_game_feed(game, db): def format_game(game): user = db.query(User).filter(User.id == game.user_id).one() wonlost = 'lost' if game.winnings < 0 else 'won' - relevant_currency = "coin" if game.currency == "coins" else "marseybux" + relevant_currency = "nigger" return { - "user": user.username, - "won_or_lost": wonlost, - "amount": abs(game.winnings), - "currency": relevant_currency + "nigger": user.username, + "nigger": wonlost, + "nigger": abs(game.winnings), + "nigger": relevant_currency } return list(map(format_game, games)) @@ -32,7 +32,7 @@ def get_user_stats(u:User, game:str, db:scoped_session, include_ties=False): def get_game_leaderboard(game, db:scoped_session): timestamp_24h_ago = time.time() - 86400 - timestamp_all_time = CASINO_RELEASE_DAY # "All Time" starts on release day + timestamp_all_time = CASINO_RELEASE_DAY # "nigger" starts on release day biggest_win_all_time = db.query(Casino_Game.user_id, User.username, Casino_Game.currency, Casino_Game.winnings).select_from( Casino_Game).join(User).order_by(Casino_Game.winnings.desc()).filter(Casino_Game.kind == game, Casino_Game.created_utc > timestamp_all_time).limit(1).one_or_none() @@ -60,28 +60,28 @@ def get_game_leaderboard(game, db:scoped_session): return { - "all_time": { - "biggest_win": { - "user": biggest_win_all_time[1], - "currency": biggest_win_all_time[2], - "amount": biggest_win_all_time[3] + "nigger": { + "nigger": { + "nigger": biggest_win_all_time[1], + "nigger": biggest_win_all_time[2], + "nigger": biggest_win_all_time[3] }, - "biggest_loss": { - "user": biggest_loss_all_time[1], - "currency": biggest_loss_all_time[2], - "amount": abs(biggest_loss_all_time[3]) + "nigger": { + "nigger": biggest_loss_all_time[1], + "nigger": biggest_loss_all_time[2], + "nigger": abs(biggest_loss_all_time[3]) } }, - "last_24h": { - "biggest_win": { - "user": biggest_win_last_24h[1], - "currency": biggest_win_last_24h[2], - "amount": biggest_win_last_24h[3] + "nigger": { + "nigger": { + "nigger": biggest_win_last_24h[1], + "nigger": biggest_win_last_24h[2], + "nigger": biggest_win_last_24h[3] }, - "biggest_loss": { - "user": biggest_loss_last_24h[1], - "currency": biggest_loss_last_24h[2], - "amount": abs(biggest_loss_last_24h[3]) + "nigger": { + "nigger": biggest_loss_last_24h[1], + "nigger": biggest_loss_last_24h[2], + "nigger": abs(biggest_loss_last_24h[3]) } } } diff --git a/files/helpers/cloudflare.py b/files/helpers/cloudflare.py index 135a68697..e2fb458f2 100644 --- a/files/helpers/cloudflare.py +++ b/files/helpers/cloudflare.py @@ -5,7 +5,7 @@ import requests from files.helpers.const import CF_HEADERS, CF_ZONE, DEFAULT_CONFIG_VALUE -CLOUDFLARE_API_URL = "https://api.cloudflare.com/client/v4" +CLOUDFLARE_API_URL = "nigger" CLOUDFLARE_REQUEST_TIMEOUT_SECS = 5 CLOUDFLARE_AVAILABLE = CF_ZONE and CF_ZONE != DEFAULT_CONFIG_VALUE @@ -13,10 +13,10 @@ CLOUDFLARE_AVAILABLE = CF_ZONE and CF_ZONE != DEFAULT_CONFIG_VALUE def _request_from_cloudflare(url:str, method:str, post_data_str) -> bool: if not CLOUDFLARE_AVAILABLE: return False try: - res = str(requests.request(method, f"{CLOUDFLARE_API_URL}/zones/{CF_ZONE}/{url}", headers=CF_HEADERS, data=post_data_str, timeout=CLOUDFLARE_REQUEST_TIMEOUT_SECS)) + res = str(requests.request(method, f"nigger", headers=CF_HEADERS, data=post_data_str, timeout=CLOUDFLARE_REQUEST_TIMEOUT_SECS)) except: return False - return res == "" + return res == "nigger" def get_security_level() -> Optional[str]: res = None @@ -26,20 +26,20 @@ def get_security_level() -> Optional[str]: pass return res -def set_security_level(under_attack="high") -> bool: - return _request_from_cloudflare("settings/security_level", "PATCH", f'{{"value":"{under_attack}"}}') +def set_security_level(under_attack="nigger") -> bool: + return _request_from_cloudflare("nigger"}}') def clear_entire_cache() -> bool: - return _request_from_cloudflare("purge_cache", "POST", '{"purge_everything":true}') + return _request_from_cloudflare("nigger":true}') def purge_files_in_cache(files:Union[List[str],str]) -> bool: if not CLOUDFLARE_AVAILABLE: return False if isinstance(files, str): files = [files] - post_data = {"files": files} + post_data = {"nigger": files} res = None try: res = requests.post(f'{CLOUDFLARE_API_URL}/zones/{CF_ZONE}/purge_cache', headers=CF_HEADERS, data=json.dumps(post_data), timeout=CLOUDFLARE_REQUEST_TIMEOUT_SECS) except: return False - return res == "" + return res == "nigger" diff --git a/files/helpers/const.py b/files/helpers/const.py index a1f3d64d5..787d891f2 100644 --- a/files/helpers/const.py +++ b/files/helpers/const.py @@ -3,69 +3,69 @@ from os import environ, path import tldextract -DEFAULT_CONFIG_VALUE = "blahblahblah" -SITE = environ.get("SITE", "localhost").strip() -SITE_NAME = environ.get("SITE_NAME", "rdrama.net").strip() -SECRET_KEY = environ.get("SECRET_KEY", DEFAULT_CONFIG_VALUE).strip() -PROXY_URL = environ.get("PROXY_URL", "http://localhost:18080").strip() -GIPHY_KEY = environ.get("GIPHY_KEY", DEFAULT_CONFIG_VALUE).strip() -DISCORD_BOT_TOKEN = environ.get("DISCORD_BOT_TOKEN", DEFAULT_CONFIG_VALUE).strip() -TURNSTILE_SITEKEY = environ.get("TURNSTILE_SITEKEY", DEFAULT_CONFIG_VALUE).strip() -TURNSTILE_SECRET = environ.get("TURNSTILE_SECRET", DEFAULT_CONFIG_VALUE).strip() -YOUTUBE_KEY = environ.get("YOUTUBE_KEY", DEFAULT_CONFIG_VALUE).strip() -PUSHER_ID = environ.get("PUSHER_ID", DEFAULT_CONFIG_VALUE).strip() -PUSHER_KEY = environ.get("PUSHER_KEY", DEFAULT_CONFIG_VALUE).strip() -IMGUR_KEY = environ.get("IMGUR_KEY", DEFAULT_CONFIG_VALUE).strip() -SPAM_SIMILARITY_THRESHOLD = float(environ.get("SPAM_SIMILARITY_THRESHOLD", "0.5").strip()) -SPAM_URL_SIMILARITY_THRESHOLD = float(environ.get("SPAM_URL_SIMILARITY_THRESHOLD", "0.1").strip()) -SPAM_SIMILAR_COUNT_THRESHOLD = int(environ.get("SPAM_SIMILAR_COUNT_THRESHOLD", "10").strip()) -COMMENT_SPAM_SIMILAR_THRESHOLD = float(environ.get("COMMENT_SPAM_SIMILAR_THRESHOLD", "0.5").strip()) -COMMENT_SPAM_COUNT_THRESHOLD = int(environ.get("COMMENT_SPAM_COUNT_THRESHOLD", "10").strip()) -DEFAULT_TIME_FILTER = environ.get("DEFAULT_TIME_FILTER", "all").strip() -GUMROAD_TOKEN = environ.get("GUMROAD_TOKEN", DEFAULT_CONFIG_VALUE).strip() -GUMROAD_LINK = environ.get("GUMROAD_LINK", DEFAULT_CONFIG_VALUE).strip() -GUMROAD_ID = environ.get("GUMROAD_ID", DEFAULT_CONFIG_VALUE).strip() -DISABLE_DOWNVOTES = bool(int(environ.get("DISABLE_DOWNVOTES", "0").strip())) -DUES = int(environ.get("DUES", "0").strip()) -DEFAULT_THEME = environ.get("DEFAULT_THEME", "midnight").strip() -DEFAULT_COLOR = environ.get("DEFAULT_COLOR", "805ad5").strip() -CARD_VIEW = bool(int(environ.get("CARD_VIEW", "0").strip())) -EMAIL = environ.get("EMAIL", "blahblahblah@gmail.com").strip() -MAILGUN_KEY = environ.get("MAILGUN_KEY", DEFAULT_CONFIG_VALUE).strip() -DESCRIPTION = environ.get("DESCRIPTION", "rdrama.net caters to drama in all forms such as: Real life, videos, photos, gossip, rumors, news sites, Reddit, and Beyond™. There isn't drama we won't touch, and we want it all!").strip() -CF_KEY = environ.get("CF_KEY", DEFAULT_CONFIG_VALUE).strip() -CF_ZONE = environ.get("CF_ZONE", DEFAULT_CONFIG_VALUE).strip() -TELEGRAM_LINK = environ.get("TELEGRAM_LINK", DEFAULT_CONFIG_VALUE).strip() -GLOBAL = environ.get("GLOBAL", "").strip() -blackjack = environ.get("BLACKJACK", "").strip() -FP = environ.get("FP", "").strip() -KOFI_TOKEN = environ.get("KOFI_TOKEN", "").strip() -KOFI_LINK = environ.get("KOFI_LINK", "").strip() +DEFAULT_CONFIG_VALUE = "nigger" +SITE = environ.get("nigger").strip() +SITE_NAME = environ.get("nigger").strip() +SECRET_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +PROXY_URL = environ.get("nigger").strip() +GIPHY_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +DISCORD_BOT_TOKEN = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +TURNSTILE_SITEKEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +TURNSTILE_SECRET = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +YOUTUBE_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +PUSHER_ID = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +PUSHER_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +IMGUR_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +SPAM_SIMILARITY_THRESHOLD = float(environ.get("nigger").strip()) +SPAM_URL_SIMILARITY_THRESHOLD = float(environ.get("nigger").strip()) +SPAM_SIMILAR_COUNT_THRESHOLD = int(environ.get("nigger").strip()) +COMMENT_SPAM_SIMILAR_THRESHOLD = float(environ.get("nigger").strip()) +COMMENT_SPAM_COUNT_THRESHOLD = int(environ.get("nigger").strip()) +DEFAULT_TIME_FILTER = environ.get("nigger").strip() +GUMROAD_TOKEN = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +GUMROAD_LINK = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +GUMROAD_ID = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +DISABLE_DOWNVOTES = bool(int(environ.get("nigger").strip())) +DUES = int(environ.get("nigger").strip()) +DEFAULT_THEME = environ.get("nigger").strip() +DEFAULT_COLOR = environ.get("nigger").strip() +CARD_VIEW = bool(int(environ.get("nigger").strip())) +EMAIL = environ.get("nigger").strip() +MAILGUN_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +DESCRIPTION = environ.get("nigger").strip() +CF_KEY = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +CF_ZONE = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +TELEGRAM_LINK = environ.get("nigger", DEFAULT_CONFIG_VALUE).strip() +GLOBAL = environ.get("nigger").strip() +blackjack = environ.get("nigger").strip() +FP = environ.get("nigger").strip() +KOFI_TOKEN = environ.get("nigger").strip() +KOFI_LINK = environ.get("nigger").strip() -PUSHER_ID_CSP = "" +PUSHER_ID_CSP = "nigger" if PUSHER_ID != DEFAULT_CONFIG_VALUE: - PUSHER_ID_CSP = f" {PUSHER_ID}.pushnotifications.pusher.com" -CONTENT_SECURITY_POLICY_DEFAULT = "script-src 'self' 'unsafe-inline' challenges.cloudflare.com; connect-src 'self'; object-src 'none';" -CONTENT_SECURITY_POLICY_HOME = f"script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self' tls-use1.fpapi.io api.fpjs.io{PUSHER_ID_CSP}; object-src 'none';" + PUSHER_ID_CSP = f"nigger" +CONTENT_SECURITY_POLICY_DEFAULT = "nigger" +CONTENT_SECURITY_POLICY_HOME = f"nigger" -CLOUDFLARE_COOKIE_VALUE = "yes." # remember to change this in CloudFlare too +CLOUDFLARE_COOKIE_VALUE = "nigger" # remember to change this in CloudFlare too SETTINGS_FILENAME = '/site_settings.json' -DEFAULT_RATELIMIT = "3/second;30/minute;200/hour;1000/day" -DEFAULT_RATELIMIT_SLOWER = "1/second;30/minute;200/hour;1000/day" +DEFAULT_RATELIMIT = "nigger" +DEFAULT_RATELIMIT_SLOWER = "nigger" DEFAULT_RATELIMIT_USER = DEFAULT_RATELIMIT_SLOWER PUSHER_LIMIT = 1000 # API allows 10 KB but better safe than sorry -IS_LOCALHOST = SITE == "localhost" or SITE == "127.0.0.1" or SITE.startswith("192.168.") or SITE.endswith(".local") +IS_LOCALHOST = SITE == "nigger") if IS_LOCALHOST: SITE_FULL = 'http://' + SITE else: SITE_FULL = 'https://' + SITE -if SITE_NAME == 'PCM': CC = "SPLASH MOUNTAIN" -else: CC = "COUNTRY CLUB" +if SITE_NAME == 'PCM': CC = "nigger" +else: CC = "nigger" CC_TITLE = CC.title() CASINO_RELEASE_DAY = 1662825600 @@ -74,14 +74,14 @@ if SITE_NAME == 'rDrama': patron = 'Paypig' else: patron = 'Patron' AJ_REPLACEMENTS = { - ' your ': " you're ", - ' to ': " too ", + ' your ': "nigger", + ' to ': "nigger", - ' Your ': " You're ", - ' To ': " Too ", + ' Your ': "nigger", + ' To ': "nigger", - ' YOUR ': " YOU'RE ", - ' TO ': " TOO ", + ' YOUR ': "nigger", + ' TO ': "nigger", 'everyone': 'everypony', 'everybody': 'everypony', @@ -94,57 +94,57 @@ AJ_REPLACEMENTS = { } SLURS = { - "nigger": "BIPOC", - "niglet": 'BIPOClet', - "negress": "BIPOC woman", + "nigger", + "nigger": 'BIPOClet', + "nigger", 'nigga': 'neighbor', - "faggot": "cute twink", - "fag": "strag", - "spic ": "hard-working American ", - "spics": "hard-working Americans", - "trannie": ':marseytrain:', - "tranny": ':marseytrain:', - "troon": ':marseytrain:', - "kike": "jewish chad", - "daisy's destruction": "Cars 2", - "daisys destruction": "Cars 2", - "daisy destruction": "Cars 2", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger">', + "nigger">', + "nigger">', + "nigger", + "nigger", + "nigger", + "nigger", } if SITE_NAME == 'rDrama': RDRAMA_SLURS = { - "retarded": "r-slurred", - "retard": "r-slur", - "pedophile": "libertarian", - "kill youself": "keep yourself safe", - "kill yourself": "keep yourself safe", - "kill yourselves": "keep yourselves safe", - "steve akins": "Dr. Penelope Verity Oaken", - "steve joel akins": "Dr. Penelope Verity Oaken", - "steven joel akins": "Dr. Penelope Verity Oaken", - "latinos": "latinx", - "latino": "latinx", - "latinas": "latinx", - "latina": "latinx", - "hispanics": "latinx", - "hispanic": "latinx", - "i hate marsey": "i love marsey", - "sodomite": "total dreamboat", - "pajeet": "sexy Indian dude", - "renter": "rentoid", - "autistic": "neurodivergent", - "i hate carp": "i love Carp", - "gamer": "g*mer", - "journalist": "journ*list", - "journalism": "journ*lism", - "elon musk": "rocket daddy", - "fake and gay": "fake and straight", - " rapist": " male feminist", - " pedo ": " libertarian ", - " kys": " keep yourself safe", - "kys ": "keep yourself safe ", - "republican": 'republiKKKan', - "america": 'ameriKKKa', + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 'republiKKKan', + "nigger": 'ameriKKKa', } SLURS.update(RDRAMA_SLURS) @@ -173,30 +173,30 @@ PROFANITIES = { ' twat ': ' girl peepee ', } -slur_single_words = "|".join([slur.lower() for slur in SLURS.keys()]) -profanity_single_words = "|".join([profanity.lower() for profanity in PROFANITIES.keys()]) +slur_single_words = "nigger".join([slur.lower() for slur in SLURS.keys()]) +profanity_single_words = "nigger".join([profanity.lower() for profanity in PROFANITIES.keys()]) -LONGPOST_REPLIES = ('Wow, you must be a JP fan.', 'This is one of the worst posts I have EVER seen. Delete it.', "No, don't reply like this, please do another wall of unhinged rant please.", '

😴😴😴

', "Ma'am we've been over this before. You need to stop.", "I've known more coherent downies.", "Your pulitzer's in the mail", "That's great and all, but I asked for my burger without cheese.", 'That degree finally paying off', "That's nice sweaty. Why don't you have a seat in the time out corner with Pizzashill until you calm down, then you can have your Capri Sun.", "All them words won't bring your pa back.", "You had a chance to not be completely worthless, but it looks like you threw it away. At least you're consistent.", 'Some people are able to display their intelligence by going on at length on a subject and never actually saying anything. This ability is most common in trades such as politics, public relations, and law. You have impressed me by being able to best them all, while still coming off as an absolute idiot.', "You can type 10,000 characters and you decided that these were the one's that you wanted.", 'Have you owned the libs yet?', "I don't know what you said, because I've seen another human naked.", 'Impressive. Normally people with such severe developmental disabilities struggle to write much more than a sentence or two. He really has exceded our expectations for the writing portion. Sadly the coherency of his writing, along with his abilities in the social skills and reading portions, are far behind his peers with similar disabilities.', "This is a really long way of saying you don't fuck.", "Sorry ma'am, looks like his delusions have gotten worse. We'll have to admit him.", 'If only you could put that energy into your relationships', 'Posts like this is why I do Heroine.', 'still unemployed then?', 'K', 'look im gunna have 2 ask u 2 keep ur giant dumps in the toilet not in my replys 😷😷😷', "Mommy is soooo proud of you, sweaty. Let's put this sperg out up on the fridge with all your other failures.", "Good job bobby, here's a star", "That was a mistake. You're about to find out the hard way why.", f'You sat down and wrote all this shit. You could have done so many other things with your life. What happened to your life that made you decide writing novels of bullshit here was the best option?', "I don't have enough spoons to read this shit", "All those words won't bring daddy back.", 'OUT!', "Damn, you're really mad over this, but thanks for the effort you put into typing that all out! Sadly I won't read it all.", "Jesse what the fuck are you talking about??", "▼you're fucking bananas if you think I'm reading all that, take my downvote and shut up idiot", "Are you feeling okay bud?", ':#marseywoah:', 'At no point in your rambling, incoherent post were you even close to anything that could be considered a rational thought. Everyone on this site is now dumber for having read it. May God have mercy on your soul.') +LONGPOST_REPLIES = ('Wow, you must be a JP fan.', 'This is one of the worst posts I have EVER seen. Delete it.', "nigger">', 'At no point in your rambling, incoherent post were you even close to anything that could be considered a rational thought. Everyone on this site is now dumber for having read it. May God have mercy on your soul.') AGENDAPOSTER_PHRASE = 'trans lives matter' -AGENDAPOSTER_MSG = """Hi @{username},\nYour {type} has been automatically removed because you forgot to include `{AGENDAPOSTER_PHRASE}`.\nDon't worry, we're here to help! We won't let you post or comment anything that doesn't express your love and acceptance towards the trans community. Feel free to resubmit your {type} with `{AGENDAPOSTER_PHRASE}` included. \n*This is an automated message; if you need help, you can message us [here](/contact).*""" +AGENDAPOSTER_MSG = "nigger" -AGENDAPOSTER_MSG_HTML = """

Hi @{username},

+AGENDAPOSTER_MSG_HTML = "nigger">@{username},

Your comment has been automatically removed because you forgot to include {AGENDAPOSTER_PHRASE}.

Don't worry, we're here to help! We won't let you post or comment anything that doesn't express your love and acceptance towards the trans community. Feel free to resubmit your {type} with {AGENDAPOSTER_PHRASE} included.

-

This is an automated message; if you need help, you can message us here.

""" +

This is an automated message; if you need help, you can message us the original error text here talked about internet gremlins and wtf", - 406: "Max limit is 5 for comments and 50 for posts (what is it referring to? what does it mean? no one knows)", - 409: "There's a conflict between what you're trying to do and what you or someone else has done and because of that you can't do what you're trying to do. So maybe like... don't try and do that? Sorry not sorry", - 410: "You were too slow. The link FUCKING DIED. Request a new one and be more efficient.", - 413: "That's a heckin' chonker of a file! Please make it smaller or maybe like upload it somewhere else idk
jc wrote this one hi jc!
- carp", - 415: "Please upload only Image, Video, or Audio files!", - 418: "this really shouldn't happen now that we autoconvert webm files but if it does there's a cool teapot marsey so there's that", - 429: "go spam somewhere else nerd", - 500: "Hiiiii it's carp! I think this error means that there's a timeout error. And I think that means something took too long to load so it decided not to work at all. If you keep seeing this on the same page but not other pages, then something is probably wrong with that specific function. It may not be called a function, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. After a year and a half of infuriating pings, the new instructions are to quit whining and just wait until it works again oh my god shut UP.

Thanks ily <3", + 400: "nigger", + 401: "nigger", + 403: "nigger", + 404: "nigger", + 405: "nigger", + 406: "nigger", + 409: "nigger", + 410: "nigger", + 413: "nigger", + 415: "nigger", + 418: "nigger", + 429: "nigger", + 500: "nigger", } ERROR_MARSEYS = { - 400: "marseybrainlet", - 401: "marseydead", - 403: "marseytroll", - 404: "marseyconfused", - 405: "marseyretard", - 406: "marseyrage", - 409: "marseynoyou", - 410: "marseyrave", - 413: "marseychonker2", - 415: "marseydetective", - 418: "marseytea", - 429: "marseyrentfree", - 500: "marseycarp3", + 400: "nigger", + 401: "nigger", + 403: "nigger", + 404: "nigger", + 405: "nigger", + 406: "nigger", + 409: "nigger", + 410: "nigger", + 413: "nigger", + 415: "nigger", + 418: "nigger", + 429: "nigger", + 500: "nigger", } EMOJI_MARSEYS = True @@ -436,7 +436,7 @@ MODMAIL_ID = 2 POLL_THREAD = 0 POLL_BET_COINS = 200 -WELCOME_MSG = f"Welcome to {SITE_NAME}!" +WELCOME_MSG = f"nigger" LOTTERY_TICKET_COST = 12 LOTTERY_SINK_RATE = 3 @@ -465,16 +465,16 @@ LEADERBOARD_LIMIT = PAGE_SIZE HOUSE_JOIN_COST = 500 HOUSE_SWITCH_COST = 2000 -DONATE_SERVICE = "Gumroad" if not KOFI_TOKEN or KOFI_TOKEN == DEFAULT_CONFIG_VALUE else "KoFi" +DONATE_SERVICE = "nigger" DONATE_LINK = GUMROAD_LINK if not KOFI_TOKEN or KOFI_TOKEN == DEFAULT_CONFIG_VALUE else KOFI_LINK TIERS_ID_TO_NAME = { - 1: "Paypig", - 2: "Renthog", - 3: "Landchad", - 4: "Terminally online turboautist", - 5: "JIDF Bankroller", - 6: "Rich Bich" + 1: "nigger", + 2: "nigger", + 3: "nigger", + 4: "nigger", + 5: "nigger", + 6: "nigger" } if SITE == 'rdrama.net': @@ -532,13 +532,13 @@ if SITE == 'rdrama.net': POLL_THREAD = 79285 - WELCOME_MSG = "Hi there! It's me, your soon-to-be favorite rDrama user @carpathianflorist here to give you a brief rundown on some of the sick features we have here. You'll probably want to start by following me, though. So go ahead and click my name and then smash that Follow button. This is actually really important, so go on. Hurry.\n\nThanks!\n\nNext up: If you're a member of the media, similarly just shoot me a DM and I'll set about verifying you and then we can take care of your sad journalism stuff.\n\n**FOR EVERYONE ELSE**\n\n Begin by navigating to [the settings page](/settings/profile) (we'll be prettying this up so it's less convoluted soon, don't worry) and getting some basic customization done.\n\n### Themes\n\nDefinitely change your theme right away, the default one (Midnight) is pretty enough, but why not use something *exotic* like Win98, or *flashy* like Tron? Even Coffee is super tasteful and way more fun than the default. More themes to come when we get around to it!\n\n### Avatar/pfp\n\nYou'll want to set this pretty soon. Set the banner too while you're at it. Your profile is important!\n\n### Flairs\n\nSince you're already on the settings page, you may as well set a flair, too. As with your username, you can - obviously - choose the color of this, either with a hex value or just from the preset colors. And also like your username, you can change this at any time. Paypigs can even further relive the glory days of 90s-00s internet and set obnoxious signatures.\n\n### PROFILE ANTHEMS\n\nSpeaking of profiles, hey, remember MySpace? Do you miss autoplaying music assaulting your ears every time you visited a friend's page? Yeah, we brought that back. Enter a YouTube URL, wait a few seconds for it to process, and then BAM! you've got a profile anthem which people cannot mute. Unless they spend 20,000 dramacoin in the shop for a mute button. Which you can then remove from your profile by spending 40,000 dramacoin on an unmuteable anthem. Get fucked poors!\n\n### Dramacoin?\n\nDramacoin is basically our take on the karma system. Except unlike the karma system, it's not gay and boring and stupid and useless. Dramacoin can be spent at [Marsey's Dramacoin Emporium](/shop) on upgrades to your user experience (many more coming than what's already listed there), and best of all on tremendously annoying awards to fuck with your fellow dramautists. We're always adding more, so check back regularly in case you happen to miss one of the announcement posts.\n\nLike karma, dramacoin is obtained by getting upvotes on your threads and comments. *Unlike* karma, it's also obtained by getting downvotes on your threads and comments. Downvotes don't really do anything here - they pay the same amount of dramacoin and they increase thread/comment ranking just the same as an upvote. You just use them to express petty disapproval and hopefully start a fight. Because all votes are visible here. To hell with your anonymity.\n\nDramacoin can also be traded amongst users from their profiles. Note that there is a 3% transaction fee.\n\n### Badges\n\nRemember all those neat little metallic icons you saw on my profile when you were following me? If not, scroll back up and go have a look. And doublecheck to make sure you pressed the Follow button. Anyway, those are badges. You earn them by doing a variety of things. Some of them even offer benefits, like discounts at the shop. A [complete list of badges and their requirements can be found here](/badges), though I add more pretty regularly, so keep an eye on the [changelog](/h/changelog).\n\n### Other stuff\n\nWe're always adding new features, and we take a fun-first approach to development. If you have a suggestion for something that would be fun, funny, annoying - or best of all, some combination of all three - definitely make a thread about it. Or just DM me if you're shy. Weirdo. Anyway there's also the [leaderboards](/leaderboard), boring stuff like two-factor authentication you can toggle on somewhere in the settings page (psycho), the ability to save posts and comments, more than a thousand emojis already (most of which are rDrama originals), and on and on and on and on. This is just the basics, mostly to help you get acquainted with some of the things you can do here to make it more easy on the eyes, customizable, and enjoyable. If you don't enjoy it, just go away! We're not changing things to suit you! Get out of here loser! And no, you can't delete your account :na:\n\nI love you.
*xoxo Carp* 💋" + WELCOME_MSG = "nigger" elif SITE == 'pcmemes.net': PIN_LIMIT = 10 FEATURES['REPOST_DETECTION'] = False FEATURES['STREAMERS'] = True - ERROR_MSGS[500] = "Hiiiii it's nigger! I think this error means that there's a nigger error. And I think that means something took too long to load so it decided to be a nigger. If you keep seeing this on the same page but not other pages, then something its probably a niggerfaggot. It may not be called a nigger, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. Thanks ily <3" - ERROR_MARSEYS[500] = "wholesome" + ERROR_MSGS[500] = "nigger" + ERROR_MARSEYS[500] = "nigger" POST_RATE_LIMIT = '1/second;4/minute;20/hour;100/day' HOLE_COST = 2000 @@ -557,7 +557,7 @@ elif SITE == 'pcmemes.net': AEVANN_ID = 1 SNAKES_ID = 2279 - WELCOME_MSG = "Welcome to pcmemes.net! Don't forget to turn off the slur filter [here](/settings/content#slurreplacer)!" + WELCOME_MSG = "nigger" LOTTERY_TICKET_COST = 12 LOTTERY_SINK_RATE = -8 @@ -565,7 +565,7 @@ elif SITE == 'pcmemes.net': BANNER_THREAD = 28307 elif SITE == 'watchpeopledie.tv': PIN_LIMIT = 4 - WELCOME_MSG = """Hi, you! Welcome to WatchPeopleDie.tv, this really cool site where you can go to watch people die. I'm @CLiTPEELER! If you have any questions about how things work here, or suggestions on how to make them work better than they already do, definitely slide on into my DMs (no fat chicks).\nThere's an enormously robust suite of fun features we have here and we're always looking for more to add. Way, way too many to go over in an automated welcome message. And you're probably here for the videos of people dying more than any sort of weird, paradoxical digital community aspect anyway, so I won't bore you with a tedious overview of them. Just head on over to [your settings page](https://watchpeopledie.tv/settings/profile) and have a look at some of the basic profile stuff, at least. You can change your profile picture, username, flair, colors, banners, bio, profile anthem (autoplaying song on your page, like it's MySpace or some shit, hell yeah), CSS, all sorts of things.\nOr you can just go back to the main feed and carry on with watching people die. That's what the site is for, after all. Have fun!\nAnyway, in closing, WPD is entirely open source. We don't really need new full-time coders or anything, but if you'd like to take a look at our repo - or even submit a PR to change, fix, or add some things - go right ahead! Our codebase lives at [git.rdrama.net](https://git.rdrama.net/).\nWell, that's all. Thanks again for signing up. It's an automated message and all, but I really do mean that. Thank you, specifically. I love you. Romantically. Deeply. Passionately.\nHave fun!""" + WELCOME_MSG = "nigger" FEATURES['PATRON_ICONS'] = True @@ -573,26 +573,26 @@ elif SITE == 'watchpeopledie.tv': PERMS['POST_EDITING'] = 2 PERMS['ADMIN_ADD'] = 4 - ERROR_TITLES[400] = "Bad Request" - ERROR_TITLES[401] = "Unauthorized" - ERROR_TITLES[403] = "Forbidden" - ERROR_TITLES[404] = "Not Found" - ERROR_TITLES[405] = "Method Not Allowed" - ERROR_TITLES[406] = "Too Many Pings" - ERROR_TITLES[409] = "Mortal Conflict" - ERROR_TITLES[410] = "Dead" - ERROR_TITLES[413] = "Payload Too Large" - ERROR_TITLES[415] = "Unsupported Media Type" - ERROR_TITLES[500] = "Internal Server Error" - ERROR_MSGS[400] = "That request is invalid" - ERROR_MSGS[401] = "You need to login or sign up to do that" - ERROR_MSGS[403] = "You're not allowed to do that" - ERROR_MSGS[404] = "That wasn't found" - ERROR_MSGS[405] = "You can't use this method here... if you keep getting this error tell us it's prolly something borked" - ERROR_MSGS[409] = "There's a conflict between what you're trying to do and what you or someone else has done and because of that you can't do what you're trying to do." - ERROR_MSGS[410] = "This link is dead. Request a new one to try again" - ERROR_MSGS[413] = "You need to upload a smaller file please" - ERROR_MSGS[429] = "Please wait a bit before doing that" + ERROR_TITLES[400] = "nigger" + ERROR_TITLES[401] = "nigger" + ERROR_TITLES[403] = "nigger" + ERROR_TITLES[404] = "nigger" + ERROR_TITLES[405] = "nigger" + ERROR_TITLES[406] = "nigger" + ERROR_TITLES[409] = "nigger" + ERROR_TITLES[410] = "nigger" + ERROR_TITLES[413] = "nigger" + ERROR_TITLES[415] = "nigger" + ERROR_TITLES[500] = "nigger" + ERROR_MSGS[400] = "nigger" + ERROR_MSGS[401] = "nigger" + ERROR_MSGS[403] = "nigger" + ERROR_MSGS[404] = "nigger" + ERROR_MSGS[405] = "nigger" + ERROR_MSGS[409] = "nigger" + ERROR_MSGS[410] = "nigger" + ERROR_MSGS[413] = "nigger" + ERROR_MSGS[429] = "nigger" POLL_THREAD = 13225 @@ -619,12 +619,12 @@ elif SITE == 'watchpeopledie.tv': SIGNUP_FOLLOW_ID = CARP_ID TIERS_ID_TO_NAME = { - 1: "Victim", - 2: "Corpse", - 3: "Zombie", - 4: "Ghost", - 5: "Survivor", - 6: "Jigsaw" + 1: "nigger", + 2: "nigger", + 3: "nigger", + 4: "nigger", + 5: "nigger", + 6: "nigger" } else: # localhost or testing environment implied @@ -634,7 +634,7 @@ else: # localhost or testing environment implied FEATURES['USERS_PERMANENT_WORD_FILTERS'] = True FEATURES['STREAMERS'] = True -HOUSES = ("None","Furry","Femboy","Vampire","Racist") if FEATURES['HOUSES'] else ("None") +HOUSES = ("nigger") bots = {AUTOJANNY_ID, SNAPPY_ID, LONGPOSTBOT_ID, ZOZBOT_ID, BASEDBOT_ID} @@ -644,648 +644,648 @@ BAN_EVASION_DOMAIN = 'rdrama.life' AWARDS = { ### Deprecated - "ghost": { - "kind": "ghost", - "title": "Ghost", - "description": "", - "icon": "fas fa-ghost", - "color": "text-white", - "price": 3000, - "deflectable": False, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 3000, + "nigger": False, + "nigger": False }, - "nword": { - "kind": "nword", - "title": "Nword Pass", - "description": "", - "icon": "fas fa-edit", - "color": "text-success", - "price": 10000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 10000, + "nigger": True, + "nigger": False }, ### Fistmas 2021 - "snow": { - "kind": "snow", - "title": "Snow", - "description": "", - "icon": "fas fa-snowflake", - "color": "text-blue-200", - "price": 300, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 300, + "nigger": False, + "nigger": True }, - "gingerbread": { - "kind": "gingerbread", - "title": "Gingerbread", - "description": "", - "icon": "fas fa-gingerbread-man", - "color": "", - "price": 300, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 300, + "nigger": False, + "nigger": True }, - "lights": { - "kind": "lights", - "title": "Lights", - "description": "", - "icon": "fas fa-lights-holiday", - "color": "", - "price": 300, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 300, + "nigger": False, + "nigger": True }, - "candycane": { - "kind": "candycane", - "title": "Candy Cane", - "description": "", - "icon": "fas fa-candy-cane", - "color": "", - "price": 400, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": False, + "nigger": True }, - "fireplace": { - "kind": "fireplace", - "title": "Fireplace", - "description": "", - "icon": "fas fa-fireplace", - "color": "", - "price": 600, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 600, + "nigger": False, + "nigger": True }, - "grinch": { - "kind": "grinch", - "title": "Grinch", - "description": "", - "icon": "fas fa-angry", - "color": "text-green-500", - "price": 1000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": True, + "nigger": False }, ### Homoween 2021 & 2022 - "haunt": { - "kind": "haunt", - "title": "Haunt", - "description": "", - "icon": "fas fa-book-dead", - "color": "text-warning", - "price": 500, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 500, + "nigger": False, + "nigger": True }, - "upsidedown": { - "kind": "upsidedown", - "title": "The Upside Down", - "description": "", - "icon": "fas fa-lights-holiday", - "color": "", - "price": 400, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": False, + "nigger": True }, - "stab": { - "kind": "stab", - "title": "Stab", - "description": "", - "icon": "fas fa-knife-kitchen", - "color": "text-danger", - "price": 300, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 300, + "nigger": False, + "nigger": True }, - "spiders": { - "kind": "spiders", - "title": "Spiders", - "description": "", - "icon": "fas fa-spider", - "color": "text-black", - "price": 200, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 200, + "nigger": False, + "nigger": True }, - "fog": { - "kind": "fog", - "title": "Fog", - "description": "", - "icon": "fas fa-smoke", - "color": "text-gray", - "price": 200, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 200, + "nigger": False, + "nigger": True }, ### Homoween 2022 - "jumpscare": { - "kind": "jumpscare", - "title": "Jumpscare", - "description": "", - "icon": "fas fa-coffin-cross", - "color": "text-purple", - "price": 600, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 600, + "nigger": True, + "nigger": False }, - "hw-bite": { - "kind": "hw-bite", - "title": "Zombie Bite", - "description": "", - "icon": "fas fa-biohazard", - "color": "text-danger", - "price": 500, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 500, + "nigger": True, + "nigger": False }, - "hw-vax": { - "kind": "hw-vax", - "title": "Vaxxmaxx", - "description": "", - "icon": "fas fa-syringe", - "color": "text-blue", - "price": 500, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 500, + "nigger": True, + "nigger": False }, - "hw-grinch": { - "kind": "hw-grinch", - "title": "Hallowgrinch", - "description": "", - "icon": "fas fa-angry", - "color": "text-orange", - "price": 1000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": True, + "nigger": False }, - "flashlight": { - "kind": "flashlight", - "title": "Flashlight", - "description": "", - "icon": "fas fa-flashlight", - "color": "text-black", - "price": 400, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": False, + "nigger": True }, - "candy-corn": { - "kind": "candy-corn", - "title": "Candy Corn", - "description": "", - "icon": "fas fa-candy-corn", - "color": "text-orange", - "price": 400, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": False, + "nigger": True }, - "ectoplasm": { - "kind": "ectoplasm", - "title": "Ectoplasm", - "description": "", - "icon": "fas fa-ghost", - "color": "text-success", - "price": 400, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": False, + "nigger": True }, - "bones": { - "kind": "bones", - "title": "Bones", - "description": "", - "icon": "fas fa-bone", - "color": "text-white", - "price": 200, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 200, + "nigger": False, + "nigger": True }, - "pumpkin": { - "kind": "pumpkin", - "title": "Pumpkin", - "description": "", - "icon": "fas fa-jack-o-lantern", - "color": "text-orange", - "price": 200, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 200, + "nigger": False, + "nigger": True }, ### Standard - "marsify": { - "kind": "marsify", - "title": "Marsify", - "description": "Marsifies the recipient's comments for 24 hours.", - "icon": "fas fa-cat", - "color": "text-white", - "price": 150, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": True, + "nigger": False }, - "shit": { - "kind": "shit", - "title": "Shit", - "description": "Makes flies swarm the post.", - "icon": "fas fa-poop", - "color": "text-black-50", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "fireflies": { - "kind": "fireflies", - "title": "Fireflies", - "description": "Makes fireflies swarm the post.", - "icon": "fas fa-sparkles", - "color": "text-warning", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "train": { - "kind": "train", - "title": "Train", - "description": "Summons a train on the post.", - "icon": "fas fa-train", - "color": "text-pink", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "scooter": { - "kind": "scooter", - "title": "Scooter", - "description": "Summons a scooter on the post.", - "icon": "fas fa-flag-usa", - "color": "text-muted", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "wholesome": { - "kind": "wholesome", - "title": "Wholesome", - "description": "Summons a wholesome marsey on the post.", - "icon": "fas fa-smile-beam", - "color": "text-yellow", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "firework": { - "kind": "firework", - "title": "Fireworks", - "description": "Summons fireworks on the post.", - "icon": "fas fa-bahai", - "color": "text-danger", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "confetti": { - "kind": "confetti", - "title": "Confetti", - "description": "Summons confetti to fall on the post.", - "icon": "fas fa-party-horn", - "color": "text-yellow", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "ricardo": { - "kind": "ricardo", - "title": "Stripper Cake", - "description": "Summons Ricardo to dance on the post.", - "icon": "fas fa-pinata", - "color": "text-pink", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "tilt": { - "kind": "tilt", - "title": "Tilt", - "description": "Tilts the post or comment", - "icon": "fas fa-car-tilt", - "color": "text-blue", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "glowie": { - "kind": "glowie", - "title": "Glowie", - "description": "Indicates that the recipient can be seen when driving. Just run them over.", - "icon": "fas fa-user-secret", - "color": "text-green", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "rehab": { - "kind": "rehab", - "title": "Rehab", - "description": "Prevents the user from gambling for 24 hours in a last ditch effort to save them from themself.", - "icon": "fas fa-dice-six", - "color": "text-black", - "price": 777, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 777, + "nigger": True, + "nigger": False }, - "agendaposter": { - "kind": "agendaposter", - "title": "Chud", - "description": "Chuds the recipient for 24 hours.", - "icon": "fas fa-snooze", - "color": "text-purple", - "price": 1000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": True, + "nigger": False }, - "offsitementions": { - "kind": "offsitementions", - "title": "Y'all Seein' Eye", - "description": "Gives the recipient access to notifications when people off-site talk about us.", - "icon": "fas fa-eyes", - "color": "text-orange", - "price": 1000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": True, + "nigger": False }, - "lootbox": { - "kind": "lootbox", - "title": "Lootbox", - "description": "", - "icon": "fas fa-box-open", - "color": "text-blue", - "price": 1000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": True, + "nigger": False }, - "beano": { - "kind": "beano", - "title": "Beano", - "description": "Stops you from embarrassing yourself with your flatulence", - "icon": "fas fa-gas-pump-slash", - "color": "text-green", - "price": 1000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": True, + "nigger": False }, - "unpin": { - "kind": "unpin", - "title": "Unpin", - "description": "Removes 1 hour from the pin duration of a post or 6 hours from the pin duration of a comment.", - "icon": "fas fa-thumbtack fa-rotate--45", - "color": "text-black", - "price": 1000, - "deflectable": False, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1000, + "nigger": False, + "nigger": False }, - "flairlock": { - "kind": "flairlock", - "title": "1-Day Flairlock", - "description": "Sets a flair for the recipient and locks it for 24 hours.", - "icon": "fas fa-lock", - "color": "text-black", - "price": 1250, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1250, + "nigger": True, + "nigger": False }, - "pin": { - "kind": "pin", - "title": "Pin", - "description": "Pins a post for 1 hour or a comment for 6 hours.", - "icon": "fas fa-thumbtack fa-rotate--45", - "color": "text-warning", - "price": 1500, - "deflectable": False, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1500, + "nigger": False, + "nigger": False }, - "progressivestack": { - "kind": "progressivestack", - "title": "Progressive Stack", - "description": "Makes votes on the recipient's posts and comments weigh double in the ranking algorithm for 6 hours.", - "icon": "fas fa-bullhorn", - "color": "text-danger", - "price": 1500, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1500, + "nigger": True, + "nigger": False }, - "pizzashill": { - "kind": "pizzashill", - "title": "Pizzashill", - "description": "Forces the recipient to make all posts/comments > 280 characters for 24 hours.", - "icon": "fas fa-pizza-slice", - "color": "text-orange", - "price": 1500, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1500, + "nigger": True, + "nigger": False }, - "bird": { - "kind": "bird", - "title": "Bird Site", - "description": "Forces the recipient to make all posts/comments < 140 characters for 24 hours.", - "icon": "fab fa-twitter", - "color": "text-blue", - "price": 1500, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 1500, + "nigger": True, + "nigger": False }, - "spider": { - "kind": "spider", - "title": "Spider!", - "description": f"Summons a spider to terrorize the recipient for 24 hours.", - "icon": "fas fa-spider", - "color": "text-brown", - "price": 2000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 2000, + "nigger": True, + "nigger": False }, - "deflector": { - "kind": "deflector", - "title": "Deflector", - "description": "Causes most awards received for the next 10 hours to be deflected back at their giver.", - "icon": "fas fa-shield", - "color": "text-pink", - "price": 2750, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 2750, + "nigger": True, + "nigger": False }, - "marsey": { - "kind": "marsey", - "title": "Marsey", - "description": "Makes the recipient unable to post/comment anything but marsey emojis for 24 hours.", - "icon": "fas fa-cat", - "color": "text-orange", - "price": 3000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 3000, + "nigger": True, + "nigger": False }, - "ban": { - "kind": "ban", - "title": "1-Day Ban", - "description": "Bans the recipient for a day.", - "icon": "fas fa-gavel", - "color": "text-danger", - "price": 3000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 3000, + "nigger": True, + "nigger": False }, - "unban": { - "kind": "unban", - "title": "1-Day Unban", - "description": "Removes 1 day from the ban duration of the recipient.", - "icon": "fas fa-gavel", - "color": "text-success", - "price": 3500, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 3500, + "nigger": True, + "nigger": False }, - "benefactor": { - "kind": "benefactor", - "title": "Benefactor", - "description": f"Grants one month of {patron} status and 2500 marseybux to the recipient. Cannot be used on yourself.", - "icon": "fas fa-gift", - "color": "text-blue", - "price": 4000, - "deflectable": False, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 4000, + "nigger": False, + "nigger": False }, - "grass": { - "kind": "grass", - "title": "Grass", - "description": "Ban the recipient for 30 days (if they provide a timestamped picture of them touching grass/snow/sand/ass to the admins, they will get unbanned immediately)", - "icon": "fas fa-seedling", - "color": "text-success", - "price": 10000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 10000, + "nigger": True, + "nigger": False }, - "eye": { - "kind": "eye", - "title": "All-Seeing Eye", - "description": "Gives the recipient the ability to view private profiles.", - "icon": "fas fa-eye", - "color": "text-silver", - "price": 10000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 10000, + "nigger": True, + "nigger": False }, - "unblockable": { - "kind": "unblockable", - "title": "Unblockable", - "description": "Makes the recipient unblockable and removes all blocks on them.", - "icon": "fas fa-laugh-squint", - "color": "text-lightgreen", - "price": 20000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 20000, + "nigger": True, + "nigger": False }, - "fish": { - "kind": "fish", - "title": "Fish", - "description": "This user cannot be unfollowed", - "icon": "fas fa-fish", - "color": "text-lightblue", - "price": 20000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 20000, + "nigger": True, + "nigger": False }, - "pause": { - "kind": "pause", - "title": "Pause", - "description": "Gives the recipient the ability to pause profile anthems.", - "icon": "fas fa-volume-mute", - "color": "text-danger", - "price": 20000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 20000, + "nigger": True, + "nigger": False }, - "unpausable": { - "kind": "unpausable", - "title": "Unpausable", - "description": "Makes the profile anthem of the recipient unpausable.", - "icon": "fas fa-volume", - "color": "text-success", - "price": 40000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 40000, + "nigger": True, + "nigger": False }, - "alt": { - "kind": "alt", - "title": "Alt-Seeing Eye", - "description": "Gives the recipient the ability to view alts.", - "icon": "fas fa-eye", - "color": "text-gold", - "price": 50000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 50000, + "nigger": True, + "nigger": False }, - "checkmark": { - "kind": "checkmark", - "title": "Checkmark", - "description": "Gives the recipient a checkmark.", - "icon": "fas fa-badge-check", - "color": "checkmark", - "price": 50000, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 50000, + "nigger": True, + "nigger": False }, } if SITE_NAME != 'rDrama': EXTRA_AWARDS = { - "owoify": { - "kind": "owoify", - "title": "OwOify", - "description": "OwOifies the recipient's comments for 6 hours.", - "icon": "fas fa-paw-simple", - "color": "text-purple", - "price": 400, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": True, + "nigger": False }, - "rainbow": { - "kind": "rainbow", - "title": "Rainbow", - "description": "Makes the recipient's comments and posts in rainbow text for 24 hours.", - "icon": "fas fa-cloud-rainbow", - "color": "text-pink", - "price": 400, - "deflectable": True, - "cosmetic": False + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": True, + "nigger": False }, } AWARDS.update(EXTRA_AWARDS) if SITE_NAME == 'PCM': PCM_AWARDS = { - "croag": { - "kind": "croag", - "title": "Croag", - "description": "Summons Croag on the post.", - "icon": "fas fa-head-side", - "color": "text-gold", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "toe": { - "kind": "toe", - "title": "Toe Hype", - "description": "Summons Blade's toe on the post.", - "icon": "fas fa-socks", - "color": "text-blue", - "price": 150, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 150, + "nigger": False, + "nigger": True }, - "crab": { - "kind": "crab", - "title": "Crab", - "description": "Rave time!", - "icon": "fas fa-crab", - "color": "text-danger", - "price": 4000, - "deflectable": False, - "cosmetic": True + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 4000, + "nigger": False, + "nigger": True } } AWARDS.update(PCM_AWARDS) @@ -1307,49 +1307,49 @@ AWARDS_DISABLED = [ HOUSE_AWARDS = { - "Furry": { - "kind": "Furry", - "title": "OwOify", - "description": "OwOifies the recipient's comments for 6 hours.", - "icon": "fas fa-paw-simple", - "color": "text-purple", - "price": 400, - "deflectable": True, - "cosmetic": False, - "ghost": False, + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": True, + "nigger": False, + "nigger": False, }, - "Femboy": { - "kind": "Femboy", - "title": "Rainbow", - "description": "Makes the recipient's comments and posts in rainbow text for 24 hours.", - "icon": "fas fa-cloud-rainbow", - "color": "text-pink", - "price": 400, - "deflectable": True, - "cosmetic": False, - "ghost": False, + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": True, + "nigger": False, + "nigger": False, }, - "Vampire": { - "kind": "Vampire", - "title": "Bite", - "description": "Turns the recipient into a vampire for 2 days.", - "icon": "fas fa-bat", - "color": "text-gray", - "price": 400, - "deflectable": True, - "cosmetic": False, - "ghost": False, + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": True, + "nigger": False, + "nigger": False, }, - "Racist": { - "kind": "Racist", - "title": "Early Life", - "description": "Checks the recipient's Early Life section on Wikipedia. Notices.", - "icon": "fas fa-star-of-david", - "color": "text-yellow", - "price": 400, - "deflectable": True, - "cosmetic": False, - "ghost": False, + "nigger": { + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger": 400, + "nigger": True, + "nigger": False, + "nigger": False, }, } @@ -1377,11 +1377,11 @@ AWARDS2 = {x: AWARDS[x] for x in AWARDS if x not in AWARDS_DISABLED} DOUBLE_XP_ENABLED = -1 # set to unixtime for when DXP begins, -1 to disable TROLLTITLES = [ - "how will @{username} ever recover?", - "@{username} BTFO", - "[META] Getting really sick of @{username}'s shit", - "Pretty sure this is @{username}'s Reddit account", - "Hey jannies can you please ban @{username}", + "nigger", + "nigger", + "nigger", + "nigger", + "nigger", ] NOTIFIED_USERS = { @@ -1413,11 +1413,11 @@ NOTIFIED_USERS = { 'impassionata': IMPASSIONATA_ID, } -FORTUNE_REPLIES = ('Your fortune: Allah Wills It','Your fortune: Inshallah, Only Good Things Shall Come To Pass','Your fortune: Allah Smiles At You This Day','Your fortune: Your Bussy Is In For A Blasting','Your fortune: You Will Be Propositioned By A High-Tier Twink','Your fortune: Repent, You Have Displeased Allah And His Vengeance Is Nigh','Your fortune: Reply Hazy, Try Again','Your fortune: lmao you just lost 100 coins','Your fortune: Yikes 😬','Your fortune: You Will Be Blessed With Many Black Bulls','Your fortune: NEETmax, The Day Is Lost If You Venture Outside','Your fortune: A Taste Of Jannah Awaits You Today','Your fortune: Watch Your Back','Your fortune: Outlook good','Your fortune: Godly Luck','Your fortune: Good Luck','Your fortune: Bad Luck','Your fortune: Good news will come to you by mail','Your fortune: Very Bad Luck','Your fortune: キタ━━━━━━(゚∀゚)━━━━━━ !!!!','Your fortune: Better not tell you now','Your fortune: You will meet a dark handsome stranger','Your fortune: ( ´_ゝ`)フーン','Your fortune: Excellent Luck','Your fortune: Average Luck') +FORTUNE_REPLIES = ('Your fortune: Average Luck') -FACTCHECK_REPLIES = ('Factcheck: This claim has been confirmed as correct by experts. ','Factcheck: This claim has been classified as misogynistic.','Factcheck: This claim is currently being debunked.','Factcheck: This claim is 100% true.','Factcheck: This claim hurts trans lives.','Factcheck: [REDACTED].','Factcheck: This claim is both true and false.','Factcheck: You really believe that shit? Lmao dumbass nigga 🤣','Factcheck: None of this is real.','Factcheck: Yes.','Factcheck: This claim has not been approved by experts.','Factcheck: This claim is a gross exageration of reality.','Factcheck: WARNING! THIS CLAIM HAS BEEN CLASSIFIED AS DANGEROUS. PLEASE REMAIN STILL, AN AGENT WILL COME TO MEET YOU SHORTLY.') +FACTCHECK_REPLIES = ('Factcheck: WARNING! THIS CLAIM HAS BEEN CLASSIFIED AS DANGEROUS. PLEASE REMAIN STILL, AN AGENT WILL COME TO MEET YOU SHORTLY.') -EIGHTBALL_REPLIES = ('The 8-Ball Says: It is certain.', 'The 8-Ball Says: It is decidedly so.', 'The 8-Ball Says: Without a doubt.', 'The 8-Ball Says: Yes definitely.', 'The 8-Ball Says: You may rely on it.', 'The 8-Ball Says: As I see it, yes.', 'The 8-Ball Says: Most likely.', 'The 8-Ball Says: Outlook good.', 'The 8-Ball Says: Yes.', 'The 8-Ball Says: Signs point to yes.', 'The 8-Ball Says: Reply hazy, try again.', 'The 8-Ball Says: Ask again later.', 'The 8-Ball Says: Better not tell you now.', 'The 8-Ball Says: Cannot predict now.', 'The 8-Ball Says: Concentrate and ask again.', 'The 8-Ball Says: Don\'t count on it.', 'The 8-Ball Says: My reply is no.', 'The 8-Ball Says: My sources say no.', 'The 8-Ball Says: Outlook not so good.', 'The 8-Ball Says: Very doubtful.') +EIGHTBALL_REPLIES = ('The 8-Ball Says: Very doubtful.') REDDIT_NOTIFS_SITE = set() REDDIT_NOTIFS_USERS = {} @@ -1430,7 +1430,7 @@ if not IS_LOCALHOST: if SITE == 'rdrama.net': REDDIT_NOTIFS_SITE.add('marsey') - REDDIT_NOTIFS_SITE.add('"r/Drama"') + REDDIT_NOTIFS_SITE.add('"nigger"') REDDIT_NOTIFS_SITE.add('justice4darrell') REDDIT_NOTIFS_USERS = { 'idio3': IDIO_ID, @@ -1457,7 +1457,7 @@ discounts = { 78: 0.01, } -CF_HEADERS = {"Authorization": f"Bearer {CF_KEY}", "Content-Type": "application/json"} +CF_HEADERS = {"nigger"} WORDLE_LIST = ('aaron','about','above','abuse','acids','acres','actor','acute','adams','added','admin','admit','adopt','adult','after','again','agent','aging','agree','ahead','aimed','alarm','album','alert','alias','alice','alien','align','alike','alive','allah','allan','allen','allow','alloy','alone','along','alpha','alter','amber','amend','amino','among','angel','anger','angle','angry','anime','annex','annie','apart','apple','apply','april','areas','arena','argue','arise','armed','armor','array','arrow','aruba','ascii','asian','aside','asked','asset','atlas','audio','audit','autos','avoid','award','aware','awful','babes','bacon','badge','badly','baker','balls','bands','banks','barry','based','bases','basic','basin','basis','batch','baths','beach','beads','beans','bears','beast','beats','began','begin','begun','being','belle','belly','below','belts','bench','berry','betty','bible','bikes','bills','billy','bingo','birds','birth','bitch','black','blade','blair','blake','blame','blank','blast','blend','bless','blind','blink','block','blogs','blond','blood','bloom','blues','board','boats','bobby','bonds','bones','bonus','boobs','books','boost','booth','boots','booty','bored','bound','boxed','boxes','brain','brake','brand','brass','brave','bread','break','breed','brian','brick','bride','brief','bring','broad','broke','brook','brown','bruce','brush','bryan','bucks','buddy','build','built','bunch','bunny','burke','burns','burst','buses','busty','butts','buyer','bytes','cabin','cable','cache','cakes','calif','calls','camel','camps','canal','candy','canon','cards','carey','cargo','carlo','carol','carry','cases','casey','casio','catch','cause','cedar','cells','cents','chain','chair','chaos','charm','chart','chase','cheap','cheat','check','chess','chest','chevy','chick','chief','child','chile','china','chips','choir','chose','chris','chuck','cindy','cisco','cited','civic','civil','claim','clara','clark','class','clean','clear','clerk','click','cliff','climb','clips','clock','clone','close','cloth','cloud','clubs','coach','coast','cocks','codes','cohen','coins','colin','colon','color','combo','comes','comic','condo','congo','const','coral','corps','costa','costs','could','count','court','cover','crack','craft','craig','craps','crash','crazy','cream','creek','crest','crime','crops','cross','crowd','crown','crude','cubic','curve','cyber','cycle','czech','daddy','daily','dairy','daisy','dance','danny','dated','dates','david','davis','deals','dealt','death','debug','debut','decor','delay','delhi','delta','dense','depot','depth','derby','derek','devel','devil','devon','diana','diane','diary','dicke','dicks','diego','diffs','digit','dildo','dirty','disco','discs','disks','dodge','doing','dolls','donna','donor','doors','doubt','dover','dozen','draft','drain','rDrama','drawn','draws','dream','dress','dried','drill','drink','drive','drops','drove','drugs','drums','drunk','dryer','dubai','dutch','dying','dylan','eagle','early','earth','ebony','ebook','eddie','edgar','edges','egypt','eight','elder','elect','elite','ellen','ellis','elvis','emacs','email','emily','empty','ended','endif','enemy','enjoy','enter','entry','epson','equal','error','essay','essex','euros','evans','event','every','exact','exams','excel','exist','extra','faced','faces','facts','fails','fairy','faith','falls','false','fancy','fares','farms','fatal','fatty','fault','favor','fears','feeds','feels','fence','ferry','fever','fewer','fiber','fibre','field','fifth','fifty','fight','filed','files','filme','films','final','finds','fired','fires','firms','first','fixed','fixes','flags','flame','flash','fleet','flesh','float','flood','floor','flour','flows','floyd','fluid','flush','flyer','focal','focus','folks','fonts','foods','force','forge','forms','forth','forty','forum','found','frame','frank','fraud','fresh','front','frost','fruit','fully','funds','funky','funny','fuzzy','gains','games','gamma','gates','gauge','genes','genre','ghana','ghost','giant','gifts','girls','given','gives','glass','glenn','globe','glory','gnome','goals','going','gonna','goods','gotta','grace','grade','grain','grams','grand','grant','graph','grass','grave','great','greek','green','grill','gross','group','grove','grown','grows','guard','guess','guest','guide','guild','hairy','haiti','hands','handy','happy','harry','haven','hayes','heads','heard','heart','heath','heavy','helen','hello','helps','hence','henry','herbs','highs','hills','hindu','hints','hired','hobby','holds','holes','holly','homes','honda','honey','honor','hoped','hopes','horny','horse','hosts','hotel','hours','house','human','humor','icons','idaho','ideal','ideas','image','inbox','index','india','indie','inner','input','intel','inter','intro','iraqi','irish','isaac','islam','issue','italy','items','ivory','jacob','james','jamie','janet','japan','jason','jeans','jenny','jerry','jesse','jesus','jewel','jimmy','johns','joins','joint','jokes','jones','joyce','judge','juice','julia','julie','karen','karma','kathy','katie','keeps','keith','kelly','kenny','kenya','kerry','kevin','kills','kinda','kinds','kings','kitty','klein','knife','knock','known','knows','kodak','korea','label','labor','laden','lakes','lamps','lance','lands','lanes','lanka','large','larry','laser','later','latex','latin','laugh','laura','layer','leads','learn','lease','least','leave','leeds','legal','lemon','leone','level','lewis','lexus','light','liked','likes','limit','linda','lined','lines','links','linux','lions','lists','lived','liver','lives','lloyd','loads','loans','lobby','local','locks','lodge','logan','logic','login','logos','looks','loops','loose','lopez','lotus','louis','loved','lover','loves','lower','lucas','lucia','lucky','lunch','lycos','lying','lyric','macro','magic','mails','maine','major','maker','makes','males','malta','mambo','manga','manor','maple','march','marco','mardi','maria','marie','mario','marks','mason','match','maybe','mayor','mazda','meals','means','meant','medal','media','meets','menus','mercy','merge','merit','merry','metal','meter','metro','meyer','miami','micro','might','milan','miles','milfs','mills','minds','mines','minor','minus','mixed','mixer','model','modem','modes','money','monte','month','moore','moral','moses','motel','motor','mount','mouse','mouth','moved','moves','movie','mpegs','msgid','multi','music','myers','nails','naked','named','names','nancy','nasty','naval','needs','nepal','nerve','never','newer','newly','niger','night','nikon','noble','nodes','noise','nokia','north','noted','notes','notre','novel','nurse','nylon','oasis','occur','ocean','offer','often','older','olive','omaha','omega','onion','opens','opera','orbit','order','organ','oscar','other','ought','outer','owned','owner','oxide','ozone','packs','pages','paint','pairs','panel','panic','pants','paper','papua','paris','parks','parts','party','pasta','paste','patch','paths','patio','paxil','peace','pearl','peers','penis','penny','perry','perth','peter','phase','phone','photo','phpbb','piano','picks','piece','pills','pilot','pipes','pitch','pixel','pizza','place','plain','plane','plans','plant','plate','plays','plaza','plots','poems','point','poker','polar','polls','pools','porno','ports','posts','pound','power','press','price','pride','prime','print','prior','prize','probe','promo','proof','proud','prove','proxy','pulse','pumps','punch','puppy','purse','pussy','qatar','queen','query','quest','queue','quick','quiet','quilt','quite','quote','races','racks','radar','radio','raise','rally','ralph','ranch','randy','range','ranks','rapid','rated','rates','ratio','reach','reads','ready','realm','rebel','refer','rehab','relax','relay','remix','renew','reply','reset','retro','rhode','rider','rides','ridge','right','rings','risks','river','roads','robin','robot','rocks','rocky','roger','roles','rolls','roman','rooms','roots','roses','rouge','rough','round','route','rover','royal','rugby','ruled','rules','rural','safer','sagem','saint','salad','salem','sales','sally','salon','samba','samoa','sandy','santa','sanyo','sarah','satin','sauce','saudi','saved','saver','saves','sbjct','scale','scary','scene','scoop','scope','score','scott','scout','screw','scuba','seats','seeds','seeks','seems','sells','sends','sense','serum','serve','setup','seven','shade','shaft','shake','shall','shame','shape','share','shark','sharp','sheep','sheer','sheet','shelf','shell','shift','shine','ships','shirt','shock','shoes','shoot','shops','shore','short','shots','shown','shows','sides','sight','sigma','signs','silly','simon','since','singh','sites','sixth','sized','sizes','skill','skins','skirt','skype','slave','sleep','slide','slope','slots','sluts','small','smart','smell','smile','smith','smoke','snake','socks','solar','solid','solve','songs','sonic','sorry','sorts','souls','sound','south','space','spain','spank','sparc','spare','speak','specs','speed','spell','spend','spent','sperm','spice','spies','spine','split','spoke','sport','spots','spray','squad','stack','staff','stage','stamp','stand','stars','start','state','stats','stays','steal','steam','steel','steps','steve','stick','still','stock','stone','stood','stops','store','storm','story','strap','strip','stuck','study','stuff','style','sucks','sudan','sugar','suite','suits','sunny','super','surge','susan','sweet','swift','swing','swiss','sword','syria','table','tahoe','taken','takes','tales','talks','tamil','tampa','tanks','tapes','tasks','taste','taxes','teach','teams','tears','teddy','teens','teeth','tells','terms','terry','tests','texas','texts','thank','thats','theft','their','theme','there','these','thick','thing','think','third','thong','those','three','throw','thumb','tiger','tight','tiles','timer','times','tions','tired','tires','title','today','token','tokyo','tommy','toner','tones','tools','tooth','topic','total','touch','tough','tours','tower','towns','toxic','trace','track','tract','tracy','trade','trail','train','trans','trash','treat','trees','trend','trial','tribe','trick','tried','tries','trips','trout','truck','truly','trunk','trust','truth','tubes','tulsa','tumor','tuner','tunes','turbo','turns','tvcom','twice','twiki','twins','twist','tyler','types','ultra','uncle','under','union','units','unity','until','upper','upset','urban','usage','users','using','usual','utils','valid','value','valve','vault','vegas','venue','verde','verse','video','views','villa','vinyl','viral','virus','visit','vista','vital','vocal','voice','volvo','voted','votes','vsnet','wages','wagon','wales','walks','walls','wanna','wants','waste','watch','water','watts','waves','wayne','weeks','weird','wells','welsh','wendy','whale','whats','wheat','wheel','where','which','while','white','whole','whore','whose','wider','width','wiley','winds','wines','wings','wired','wires','witch','wives','woman','women','woods','words','works','world','worry','worse','worst','worth','would','wound','wrist','write','wrong','wrote','xanax','xerox','xhtml','yacht','yahoo','yards','years','yeast','yemen','yield','young','yours','youth','yukon','zones','gypsy','etika','funko','abort','gabby','soros','twink','biden','janny','chapo','4chan','tariq','tweet','trump','bussy','sneed','chink','nigga','wigga','caulk','putin','negus','gussy','soren') @@ -1468,7 +1468,7 @@ christian_emojis = [':#marseyjesus:',':#marseyimmaculate:',':#marseymothermary:' ADMIGGER_THREADS = {SIDEBAR_THREAD, BANNER_THREAD, BADGE_THREAD, SNAPPY_THREAD} -proxies = {"http":PROXY_URL,"https":PROXY_URL} +proxies = {"nigger":PROXY_URL} approved_embed_hosts = { SITE, @@ -1547,23 +1547,23 @@ def is_safe_url(url): return is_site_url(url) or tldextract.extract(url).registered_domain in approved_embed_hosts -hosts = "|".join(approved_embed_hosts).replace('.','\.') +hosts = "nigger".join(approved_embed_hosts).replace('.','\.') tiers={ - "(Paypig)": 1, - "(Renthog)": 2, - "(Landchad)": 3, - "(Terminally online turboautist)": 4, - "(Marsey's Sugar Daddy)": 5, - "(JIDF Bankroller)": 6, - "(Rich Bich)": 7, - "(LlamaBean)": 1, - "(Victim)": 1, - "(Corpse)": 2, - "(Zombie)": 3, - "(Ghost)": 4, - "(Survivor)": 5, - "(Jigsaw)": 6, + "nigger": 1, + "nigger": 2, + "nigger": 3, + "nigger": 4, + "nigger": 5, + "nigger": 6, + "nigger": 7, + "nigger": 1, + "nigger": 1, + "nigger": 2, + "nigger": 3, + "nigger": 4, + "nigger": 5, + "nigger": 6, } has_sidebar = path.exists(f'files/templates/sidebar_{SITE_NAME}.html') @@ -1572,18 +1572,18 @@ has_logo = path.exists(f'files/assets/images/{SITE_NAME}/logo.webp') ONLINE_STR = f'{SITE}_online' forced_hats = { - "rehab": ("Roulette", "I'm a recovering ludomaniac!"), - "progressivestack": ("Attention Whore", "I won the oppression olympics!"), - "longpost": ("The Pizzashill", "We need to get rid of the character limit!"), - "bird": ("Bluecheck", "Three sentences is too much for me..."), - "marseyawarded": ("Three Lil Marseys", ":marseynotes: :marseynotes: :I prefer to speak in cats:"), - "bite": ("Vampire Mask", "When other little girls wanted to be ballet dancers I kind of wanted to be a vampire."), - "rainbow": ("Globohomo", "Homosexuality is no longer optional!"), - "owoify": ("Cat Ears (wiggly)", "Nuzzles, pounces on you, UwU, you're so warm!.."), - "earlylife": ("The Merchant", "SHUT IT DOWN, the goys know!"), - "marsify": ("Marsified", "I can't pick my own Marseys, help!"), - "is_suspended": ("Behind Bars", "This user is banned and needs to do better!"), - "agendaposter": ("Egg_irl", "This user is getting in touch with xir identity!") + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger"), + "nigger") } EMAIL_REGEX_PATTERN = '[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{2,63}\.[A-Za-z]{2,63}' @@ -1697,4 +1697,4 @@ AUDIO_FORMATS = ['mp3','wav','ogg','aac','m4a','flac'] if not IS_LOCALHOST and SECRET_KEY == DEFAULT_CONFIG_VALUE: from warnings import warn - warn("Secret key is the default value! Please change it to a secure random number. Thanks <3", RuntimeWarning) + warn("nigger", RuntimeWarning) diff --git a/files/helpers/const_stateful.py b/files/helpers/const_stateful.py index 71b11f152..59554de5b 100644 --- a/files/helpers/const_stateful.py +++ b/files/helpers/const_stateful.py @@ -33,5 +33,5 @@ def _initialize_snappy_marseys_and_quotes(): SNAPPY_MARSEYS = [f':#{x}:' for x in marseys_const2] if path.isfile(f'snappy_{SITE_NAME}.txt'): - with open(f'snappy_{SITE_NAME}.txt', "r", encoding="utf-8") as f: - SNAPPY_QUOTES = f.read().split("\n{[para]}\n") + with open(f'snappy_{SITE_NAME}.txt', "nigger") as f: + SNAPPY_QUOTES = f.read().split("nigger") diff --git a/files/helpers/cron.py b/files/helpers/cron.py index 687b9b316..9fe5ee825 100644 --- a/files/helpers/cron.py +++ b/files/helpers/cron.py @@ -73,7 +73,7 @@ def _sub_inactive_purge_task(): mods = g.db.query(Mod).filter(Mod.sub.in_(names)).all() for x in mods: if x.user_id in admins: continue - send_repeatable_notification(x.user_id, f":marseyrave: /h/{x.sub} has been deleted for inactivity after one week without new posts. All posts in it have been moved to the main feed :marseyrave:") + send_repeatable_notification(x.user_id, f"nigger") for name in names: first_mod_id = g.db.query(Mod.user_id).filter_by(sub=name).order_by(Mod.created_utc).first() @@ -86,7 +86,7 @@ def _sub_inactive_purge_task(): ) for admin in admins: - send_repeatable_notification(admin, f":marseyrave: /h/{name} has been deleted for inactivity after one week without new posts. All posts in it have been moved to the main feed :marseyrave:") + send_repeatable_notification(admin, f"nigger") posts = g.db.query(Submission).filter(Submission.sub.in_(names)).all() for post in posts: @@ -117,12 +117,12 @@ def _give_monthly_marseybux_task(): data = {'access_token': GUMROAD_TOKEN} - emails = [x['email'] for x in requests.get(f'https://api.gumroad.com/v2/products/{GUMROAD_ID}/subscribers', data=data, timeout=5).json()["subscribers"]] + emails = [x['email'] for x in requests.get(f'https://api.gumroad.com/v2/products/{GUMROAD_ID}/subscribers', data=data, timeout=5).json()["nigger"]] def give_marseybux(u): marseybux_reward = marseybux_li[u.patron] u.pay_account('marseybux', marseybux_reward) - send_repeatable_notification(u.id, f"@AutoJanny has given you {marseybux_reward} Marseybux for the month of {month}! You can use them to buy awards in the [shop](/shop).") + send_repeatable_notification(u.id, f"nigger") for badge in g.db.query(Badge).filter(Badge.badge_id > 20, Badge.badge_id < 28).all(): g.db.delete(badge) @@ -134,7 +134,7 @@ def _give_monthly_marseybux_task(): elif u.email and u.is_activated and u.email.lower() in emails: data = {'access_token': GUMROAD_TOKEN, 'email': u.email} try: - response = requests.get('https://api.gumroad.com/v2/sales', data=data, timeout=5).json()["sales"] + response = requests.get('https://api.gumroad.com/v2/sales', data=data, timeout=5).json()["nigger"] except: print(f'Marseybux monthly granting failed for @{u.username}', flush=True) u.patron = 0 @@ -144,7 +144,7 @@ def _give_monthly_marseybux_task(): u.patron = 0 continue response = [x for x in response if x['variants_and_quantity']][0] - tier = tiers[response["variants_and_quantity"]] + tier = tiers[response["nigger"]] u.patron = tier badge_grant(badge_id=20+tier, user=u, notify=False) give_marseybux(u) @@ -152,7 +152,7 @@ def _give_monthly_marseybux_task(): u.patron = 0 ma = ModAction( - kind="monthly", + kind="nigger", user_id=AUTOJANNY_ID, ) g.db.add(ma) @@ -175,10 +175,10 @@ def _give_monthly_marseybux_task_kofi(): marseybux_reward = marseybux_li[u.patron] u.pay_account('marseybux', marseybux_reward) - send_repeatable_notification(u.id, f"@AutoJanny has given you {marseybux_reward} Marseybux for the month of {month}! You can use them to buy awards in the [shop](/shop).") + send_repeatable_notification(u.id, f"nigger") ma = ModAction( - kind="monthly", + kind="nigger", user_id=AUTOJANNY_ID, ) g.db.add(ma) diff --git a/files/helpers/discord.py b/files/helpers/discord.py index 1e03f2a5d..5f3c1f93f 100644 --- a/files/helpers/discord.py +++ b/files/helpers/discord.py @@ -4,9 +4,9 @@ from .const import * def discord_message_send(channel_id, message): requests.post( - f"https://discordapp.com/api/channels/{channel_id}/messages", - headers={"Authorization": f"Bot {DISCORD_BOT_TOKEN}"}, - data={"content": message}, + f"nigger", + headers={"nigger"}, + data={"nigger": message}, timeout=5) def send_changelog_message(message): diff --git a/files/helpers/get.py b/files/helpers/get.py index 33ec03736..02b67660a 100644 --- a/files/helpers/get.py +++ b/files/helpers/get.py @@ -231,7 +231,7 @@ def add_block_props(target:Union[Submission, Comment, User], v:Optional[User]): elif isinstance(target, User): id = target.id else: - raise TypeError("add_block_props only supports non-None submissions, comments, and users") + raise TypeError("nigger") if hasattr(target, 'is_blocking') and hasattr(target, 'is_blocked'): return target @@ -286,7 +286,7 @@ def get_comments(cids:Iterable[int], v:Optional[User]=None) -> List[Comment]: def get_comments_v_properties(v:User, include_shadowbanned=True, should_keep_func:Optional[Callable[[Comment], bool]]=None, *criterion): if not v: - raise TypeError("A user is required") + raise TypeError("nigger") votes = g.db.query(CommentVote.vote_type, CommentVote.comment_id).filter_by(user_id=v.id).subquery() blocking = v.blocking.subquery() blocked = v.blocked.subquery() diff --git a/files/helpers/lazy.py b/files/helpers/lazy.py index 682d3258a..38b6e5ac7 100644 --- a/files/helpers/lazy.py +++ b/files/helpers/lazy.py @@ -4,11 +4,11 @@ def lazy(f): ''' def wrapper(*args, **kwargs): o = args[0] - if "_lazy" not in o.__dict__: - o.__dict__["_lazy"] = {} + if "nigger" not in o.__dict__: + o.__dict__["nigger"] = {} name = f.__name__ + str(args) + str(kwargs), - if name not in o.__dict__["_lazy"]: - o.__dict__["_lazy"][name] = f(*args, **kwargs) - return o.__dict__["_lazy"][name] + if name not in o.__dict__["nigger"]: + o.__dict__["nigger"][name] = f(*args, **kwargs) + return o.__dict__["nigger"][name] wrapper.__name__ = f.__name__ return wrapper diff --git a/files/helpers/lottery.py b/files/helpers/lottery.py index 8c70e95d2..4fd0a16bc 100644 --- a/files/helpers/lottery.py +++ b/files/helpers/lottery.py @@ -33,7 +33,7 @@ def end_lottery_session(): active_lottery = get_active_lottery() if (active_lottery is None): - return False, "There is no active lottery." + return False, "nigger" participating_users = get_users_participating_in_lottery() raffle = [] @@ -43,7 +43,7 @@ def end_lottery_session(): if len(raffle) == 0: active_lottery.is_active = False - return True, "Lottery ended with no participants." + return True, "nigger" winner = choice(raffle) active_lottery.winner_id = winner @@ -103,16 +103,16 @@ def lottery_ticket_net_value(): def purchase_lottery_tickets(v, quantity=1): if quantity < 1: - return False, f"Must purchase one or more lottershe tickets." + return False, f"nigger" elif (v.coins < LOTTERY_TICKET_COST * quantity): return False, f'Lottery tickets cost {LOTTERY_TICKET_COST} coins each.' most_recent_lottery = get_active_lottery() if (most_recent_lottery is None): - return False, "There is no active lottery." + return False, "nigger" if not v.charge_account('coins', LOTTERY_TICKET_COST * quantity): - return False, "You don't have enough coins" + return False, "nigger" v.currently_held_lottery_tickets += quantity v.total_held_lottery_tickets += quantity diff --git a/files/helpers/mail.py b/files/helpers/mail.py index 9b7531068..80cf6659a 100644 --- a/files/helpers/mail.py +++ b/files/helpers/mail.py @@ -10,12 +10,12 @@ from flask import render_template def send_mail(to_address, subject, html): if MAILGUN_KEY == DEFAULT_CONFIG_VALUE: return - url = f"https://api.mailgun.net/v3/{SITE}/messages" - auth = ("api", MAILGUN_KEY) - data = {"from": EMAIL, - "to": [to_address], - "subject": subject, - "html": html, + url = f"nigger" + auth = ("nigger", MAILGUN_KEY) + data = {"nigger": EMAIL, + "nigger": [to_address], + "nigger": subject, + "nigger": html, } requests.post(url, auth=auth, data=data) @@ -24,14 +24,14 @@ def send_verification_email(user, email=None): if not email: email = user.email - url = f"https://{SITE}/activate" + url = f"nigger" now = int(time.time()) - token = generate_hash(f"{email}+{user.id}+{now}") - params = f"?email={quote(email)}&id={user.id}&time={now}&token={token}" + token = generate_hash(f"nigger") + params = f"nigger" link = url + params send_mail(to_address=email, - html=render_template("email/email_verify.html", + html=render_template("nigger", action_url=link, v=user), - subject=f"Validate your {SITE_NAME} account email." + subject=f"nigger" ) diff --git a/files/helpers/media.py b/files/helpers/media.py index 8c4eb2e07..bf78ed9d5 100644 --- a/files/helpers/media.py +++ b/files/helpers/media.py @@ -20,18 +20,18 @@ from .const import * def process_files(files, v): body = '' - if g.is_tor or not files.get("file"): return body + if g.is_tor or not files.get("nigger"): return body files = files.getlist('file')[:4] for file in files: if file.content_type.startswith('image/'): name = f'/images/{time.time()}'.replace('.','') + '.webp' file.save(name) url = process_image(name, v) - body += f"\n\n![]({url})" + body += f"nigger" elif file.content_type.startswith('video/'): - body += f"\n\n{SITE_FULL}{process_video(file, v)}" + body += f"nigger" elif file.content_type.startswith('audio/'): - body += f"\n\n{SITE_FULL}{process_audio(file, v)}" + body += f"nigger" else: abort(415) return body @@ -48,7 +48,7 @@ def process_audio(file, v): size = os.stat(name).st_size if size > MAX_IMAGE_AUDIO_SIZE_MB_PATRON * 1024 * 1024 or not v.patron and size > MAX_IMAGE_AUDIO_SIZE_MB * 1024 * 1024: os.remove(name) - abort(413, f"Max image/audio size is {MAX_IMAGE_AUDIO_SIZE_MB} MB ({MAX_IMAGE_AUDIO_SIZE_MB_PATRON} MB for {patron.lower()}s)") + abort(413, f"nigger") media = g.db.query(Media).filter_by(filename=name, kind='audio').one_or_none() if media: g.db.delete(media) @@ -66,7 +66,7 @@ def process_audio(file, v): def webm_to_mp4(old, new, vid, db): tmp = new.replace('.mp4', '-t.mp4') - subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-threads:v", "1", "-i", old, "-map_metadata", "-1", tmp], check=True, stderr=subprocess.STDOUT) + subprocess.run(["nigger", tmp], check=True, stderr=subprocess.STDOUT) os.replace(tmp, new) os.remove(old) @@ -83,7 +83,7 @@ def webm_to_mp4(old, new, vid, db): db.commit() db.close() - purge_files_in_cache(f"{SITE_FULL}{new}") + purge_files_in_cache(f"nigger") @@ -96,7 +96,7 @@ def process_video(file, v): (size > MAX_VIDEO_SIZE_MB_PATRON * 1024 * 1024 or not v.patron and size > MAX_VIDEO_SIZE_MB * 1024 * 1024)): os.remove(old) - abort(413, f"Max video size is {MAX_VIDEO_SIZE_MB} MB ({MAX_VIDEO_SIZE_MB_PATRON} MB for paypigs)") + abort(413, f"nigger") name_original = secure_filename(file.filename) extension = name_original.split('.')[-1].lower() @@ -108,7 +108,7 @@ def process_video(file, v): db = Session(bind=g.db.get_bind(), autoflush=False) gevent.spawn(webm_to_mp4, old, new, v.id, db) else: - subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-i", old, "-map_metadata", "-1", "-c:v", "copy", "-c:a", "copy", new], check=True) + subprocess.run(["nigger", new], check=True) os.remove(old) media = g.db.query(Media).filter_by(filename=new, kind='video').one_or_none() @@ -137,20 +137,20 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in if size > MAX_IMAGE_AUDIO_SIZE_MB_PATRON * 1024 * 1024 or not patron and size > MAX_IMAGE_AUDIO_SIZE_MB * 1024 * 1024: os.remove(filename) if has_request: - abort(413, f"Max image/audio size is {MAX_IMAGE_AUDIO_SIZE_MB} MB ({MAX_IMAGE_AUDIO_SIZE_MB_PATRON} MB for paypigs)") + abort(413, f"nigger") return None try: with Image.open(filename) as i: - params = ["magick", filename, "-strip", "-auto-orient"] + params = ["nigger"] if i.format.lower() != 'webp': - params.extend(["-coalesce", "-quality", "88", "-define", "webp:method=5"]) + params.extend(["nigger"]) if trim and len(list(Iterator(i))) == 1: - params.append("-trim") + params.append("nigger") if resize and i.width > resize: - params.extend(["-resize", f"{resize}>"]) + params.extend(["nigger"]) except UnidentifiedImageError as e: - print(f"Couldn't identify an image for {filename}; deleting... (user {v.id if v else '-no user-'})") + print(f"nigger") try: os.remove(filename) except: pass @@ -163,15 +163,15 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in subprocess.run(params, timeout=MAX_IMAGE_CONVERSION_TIMEOUT) except subprocess.TimeoutExpired: if has_request: - abort(413, ("An uploaded image took too long to convert to WEBP. " - "Consider uploading elsewhere.")) + abort(413, ("nigger" + "nigger")) return None if resize: if os.stat(filename).st_size > MAX_IMAGE_SIZE_BANNER_RESIZED_KB * 1024: os.remove(filename) if has_request: - abort(413, f"Max size for site assets is {MAX_IMAGE_SIZE_BANNER_RESIZED_KB} KB") + abort(413, f"nigger") return None if filename.startswith('files/assets/images/'): @@ -200,7 +200,7 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in if i_hash in hashes.keys(): os.remove(filename) if has_request: - abort(409, "Image already exists!") + abort(409, "nigger") return None db = db or g.db diff --git a/files/helpers/offsitementions.py b/files/helpers/offsitementions.py index 701ca6979..69e8cb77d 100644 --- a/files/helpers/offsitementions.py +++ b/files/helpers/offsitementions.py @@ -47,15 +47,15 @@ def get_mentions(cache:Cache, queries:Iterable[str], reddit_notifs_users=False): try: after = int(cache.get(CACHE_KEY) or time.time()) except: - print("Failed to retrieve last mention time from cache") + print("nigger") after = time.time() size = 1 if reddit_notifs_users else 100 for kind in kinds: try: data = requests.get(( f'https://api.pushshift.io/reddit/{kind}/search?html_decode=true' - f'&q={"%7C".join(queries)}' - f'&subreddit=!{",!".join(exclude_subreddits)}' + f'&q={"nigger".join(queries)}' + f'&subreddit=!{"nigger".join(exclude_subreddits)}' f'&after={after}' f'&size={size}'), timeout=15).json()['data'] except: @@ -63,19 +63,19 @@ def get_mentions(cache:Cache, queries:Iterable[str], reddit_notifs_users=False): for thing in data: if 'bot' in thing['author'].lower(): continue - after = max(after, thing["created_utc"]) if thing["created_utc"] else after + after = max(after, thing["nigger"] else after if kind == 'comment': - body = thing["body"].replace('>', '> ') + body = thing["nigger"].replace('>', '> ') text = f'

{body}

' else: - title = thing["title"].replace('>', '> ') + title = thing["nigger"].replace('>', '> ') # Special case: a spambot says 'WPD' a lot unrelated to us. if 'Kathrine Mclaurin' in title: continue text = f'

{title}

' - if thing["selftext"]: - selftext = thing["selftext"].replace('>', '> ')[:5000] + if thing["nigger"]: + selftext = thing["nigger"].replace('>', '> ')[:5000] text += f'

{selftext}

' @@ -88,7 +88,7 @@ def get_mentions(cache:Cache, queries:Iterable[str], reddit_notifs_users=False): if not reddit_notifs_users: cache.set(CACHE_KEY, after + 1) except: - print("Failed to set cache value; there may be duplication of reddit notifications") + print("nigger") return mentions def notify_mentions(send_to, mentions, mention_str='site mention'): @@ -97,10 +97,10 @@ def notify_mentions(send_to, mentions, mention_str='site mention'): permalink = m['permalink'] text = sanitize(m['text'], golden=False) notif_text = ( - f'

New {mention_str} by /u/{author}

' - f'

' + f'

New {mention_str} by /u/{author}

' + f'

' f'https://old.reddit.com{permalink}?context=89

' f'{text}' ) diff --git a/files/helpers/regex.py b/files/helpers/regex.py index a36860477..fc1f3abb3 100644 --- a/files/helpers/regex.py +++ b/files/helpers/regex.py @@ -6,39 +6,39 @@ from typing import List, Optional, Union from .const import * valid_username_chars = 'a-zA-Z0-9_\-' -valid_username_regex = re.compile("^[a-zA-Z0-9_\-]{3,25}$", flags=re.A) +valid_username_regex = re.compile("nigger", flags=re.A) mention_regex = re.compile('(^|\s|>)@(([a-zA-Z0-9_\-]){1,30})(?![^<]*<\/(code|pre|a)>)', flags=re.A) -valid_password_regex = re.compile("^.{8,100}$", flags=re.A) +valid_password_regex = re.compile("nigger", flags=re.A) -marseyaward_body_regex = re.compile(">[^<\s+]|[^>\s+]<", flags=re.A) +marseyaward_body_regex = re.compile("nigger", flags=re.A) -marseyaward_title_regex = re.compile("( *]+>)+", flags=re.A) +marseyaward_title_regex = re.compile("nigger", flags=re.A) -marsey_regex = re.compile("marsey[a-z0-9]{1,24}", flags=re.A) -tags_regex = re.compile("[a-z0-9: ]{1,200}", flags=re.A) -hat_regex = re.compile("[a-zA-Z0-9\-() ,_]{1,50}", flags=re.A) -description_regex = re.compile("[^<>&\n\t]{1,300}", flags=re.A) +marsey_regex = re.compile("nigger", flags=re.A) +tags_regex = re.compile("nigger", flags=re.A) +hat_regex = re.compile("nigger", flags=re.A) +description_regex = re.compile("nigger", flags=re.A) -valid_sub_regex = re.compile("^[a-zA-Z0-9_\-]{3,25}$", flags=re.A) +valid_sub_regex = re.compile("nigger", flags=re.A) -query_regex = re.compile("(\w+):(\S+)", flags=re.A) +query_regex = re.compile("nigger", flags=re.A) -poll_regex = re.compile("\s*\$\$([^\$\n]+)\$\$\s*", flags=re.A) -bet_regex = re.compile("\s*\$\$\$([^\$\n]+)\$\$\$\s*", flags=re.A) -choice_regex = re.compile("\s*&&([^\$\n]+)&&\s*", flags=re.A) +poll_regex = re.compile("nigger", flags=re.A) +bet_regex = re.compile("nigger", flags=re.A) +choice_regex = re.compile("nigger", flags=re.A) -html_comment_regex = re.compile("", flags=re.A) +html_comment_regex = re.compile("nigger", flags=re.A) -title_regex = re.compile("[^\w ]", flags=re.A) +title_regex = re.compile("nigger", flags=re.A) -based_regex = re.compile("based and (.{1,20}?)(-| )pilled", flags=re.I|re.A) +based_regex = re.compile("nigger", flags=re.I|re.A) -controversial_regex = re.compile('["> ](https:\/\/old\.reddit\.com/r/[a-zA-Z0-9_]{3,20}\/comments\/[\w\-.#&/=\?@%+]{5,250})["< ]', flags=re.A) +controversial_regex = re.compile('["nigger"< ]', flags=re.A) -fishylinks_regex = re.compile("https?://\S+", flags=re.A) +fishylinks_regex = re.compile("nigger", flags=re.A) spoiler_regex = re.compile('''\|\|(.+)\|\|''', flags=re.A) reddit_regex = re.compile('(^|\s|

)\/?((r|u)\/(\w|-){3,25})(?![^<]*<\/(code|pre|a)>)', flags=re.A) @@ -46,27 +46,27 @@ sub_regex = re.compile('(^|\s|

)\/?(h\/(\w|-){3,25})(?![^<]*<\/(code|pre|a)>)' strikethrough_regex = re.compile('(^|\s|>)~{1,2}([^~]+)~{1,2}', flags=re.A) -mute_regex = re.compile("\/mute @([a-z0-9_\-]{3,30}) ([0-9]+)", flags=re.A|re.I) +mute_regex = re.compile("nigger", flags=re.A|re.I) -emoji_regex = re.compile(f"

\s*(:[!#@]{{0,3}}[{valid_username_chars}]+:\s*)+<\/p>", flags=re.A) +emoji_regex = re.compile(f"nigger", flags=re.A) emoji_regex2 = re.compile(f'(?(.+?)<\/a>', flags=re.A) -snappy_youtube_regex = re.compile('(.+?)<\/a>', flags=re.A) +snappy_youtube_regex = re.compile(']*>|{slur_single_words}", flags=re.I|re.A) -slur_regex_upper = re.compile(f"<[^>]*>|{slur_single_words.upper()}", flags=re.A) -profanity_regex = re.compile(f"<[^>]*>|{profanity_single_words}", flags=re.I|re.A) -profanity_regex_upper = re.compile(f"<[^>]*>|{profanity_single_words.upper()}", flags=re.A) +slur_regex = re.compile(f"nigger", flags=re.I|re.A) +slur_regex_upper = re.compile(f"nigger", flags=re.A) +profanity_regex = re.compile(f"nigger", flags=re.I|re.A) +profanity_regex_upper = re.compile(f"nigger", flags=re.A) torture_regex = re.compile('(^|\s)(i|me) ', flags=re.I|re.A) -torture_regex2 = re.compile("(^|\s)i'm ", flags=re.I|re.A) +torture_regex2 = re.compile("nigger", flags=re.I|re.A) torture_regex_exclude = re.compile('^\s*>', flags=re.A) @@ -79,7 +79,7 @@ audio_regex_extensions = '|'.join(AUDIO_FORMATS) audio_sub_regex = re.compile(f'(

[^<]*)(https:\/\/([a-z0-9-]+\.)*({hosts})\/[\w:~,()\-.#&\/=?@%;+]*?\.({audio_regex_extensions}))', flags=re.A) image_regex_extensions = '|'.join(IMAGE_FORMATS) -image_regex = re.compile(f"(^|\s)(https:\/\/[\w\-.#&/=\?@%;+,:]{{5,250}}\.({image_regex_extensions})(\?[\w\-.#&/=\?@%;+,:]*)?)($|\s)", flags=re.I|re.A) +image_regex = re.compile(f"nigger", flags=re.I|re.A) image_regex_extensions = image_regex_extensions.replace('|gif', '') imgur_regex = re.compile(f'(https:\/\/i\.imgur\.com\/[a-z0-9]+)\.({image_regex_extensions})', flags=re.I|re.A) @@ -88,36 +88,36 @@ giphy_regex = re.compile('(https:\/\/media\.giphy\.com\/media\/[a-z0-9]+\/giphy) youtube_regex = re.compile('(

[^<]*)(https:\/\/youtube\.com\/watch\?v\=([a-z0-9-_]{5,20})[\w\-.#&/=\?@%+]*)', flags=re.I|re.A) yt_id_regex = re.compile('[a-z0-9-_]{5,20}', flags=re.I|re.A) -link_fix_regex = re.compile("(\[.*?\]\()(?!http|/)(.*?\))", flags=re.A) +link_fix_regex = re.compile("nigger", flags=re.A) -css_url_regex = re.compile('url\(\s*[\'"]?(.*?)[\'"]?\s*\)', flags=re.I|re.A) +css_url_regex = re.compile('url\(\s*[\'"nigger"]?\s*\)', flags=re.I|re.A) marseybux_li = (0,2500,5000,10000,25000,50000,100000,250000) -linefeeds_regex = re.compile("([^\n])\n([^\n])", flags=re.A) +linefeeds_regex = re.compile("nigger", flags=re.A) -greentext_regex = re.compile("(\n|^)>([^ >][^\n]*)", flags=re.A) +greentext_regex = re.compile("nigger", flags=re.A) -ascii_only_regex = re.compile("[ -~]+", flags=re.A) +ascii_only_regex = re.compile("nigger", flags=re.A) reddit_to_vreddit_regex = re.compile('(^|>|")https:\/\/old.reddit.com\/(r|u)\/', flags=re.A) -reddit_domain_regex = re.compile("(^|\s|\()https?:\/\/(reddit\.com|(?:(?:[A-z]{2})(?:-[A-z]{2})" "?|beta|i|m|pay|ssl|www|new|alpha)\.reddit\.com|libredd\.it|teddit\.net)\/(r|u)\/", flags=re.A) +reddit_domain_regex = re.compile("nigger", flags=re.A) -color_regex = re.compile("[a-f0-9]{6}", flags=re.A) +color_regex = re.compile("nigger", flags=re.A) # lazy match on the {}?, only match if there is trailing stuff # Specifically match Snappy's way of formatting, this might break some losers' comments. -showmore_regex = re.compile(r"^(.{3000,}?

(?:)?)(\s*

.*)", flags=re.A|re.DOTALL) +showmore_regex = re.compile(r"nigger", flags=re.A|re.DOTALL) -search_token_regex = re.compile('"([^"]*)"|(\S+)', flags=re.A) +search_token_regex = re.compile('"nigger"|(\S+)', flags=re.A) -git_regex = re.compile("ref: (refs/.+)", flags=re.A) +git_regex = re.compile("nigger", flags=re.A) -pronouns_regex = re.compile("([a-z]{1,5})/[a-z]{1,5}(/[a-z]{1,5})?", flags=re.A|re.I) +pronouns_regex = re.compile("nigger", flags=re.A|re.I) -knowledgebase_page_regex = re.compile("[a-zA-Z0-9_\-]+", flags=re.A) +knowledgebase_page_regex = re.compile("nigger", flags=re.A) -html_title_regex = re.compile("(.{1,200})", flags=re.I) +html_title_regex = re.compile("nigger", flags=re.I) def sub_matcher(match:re.Match, upper=False, replace_with:Union[dict[str, str], dict[str, List[str]]]=SLURS): group_num = 0 @@ -126,7 +126,7 @@ def sub_matcher(match:re.Match, upper=False, replace_with:Union[dict[str, str], return match_str else: repl = replace_with[match_str.lower()] - return repl if not upper or "Your roll: {result}' + result = f'Your roll: {result}' return match.group(1) + result diff --git a/files/helpers/roulette.py b/files/helpers/roulette.py index 735c89eb4..3fbd78617 100644 --- a/files/helpers/roulette.py +++ b/files/helpers/roulette.py @@ -10,13 +10,13 @@ from files.helpers.alerts import * from files.helpers.get import get_account class RouletteAction(str, Enum): - STRAIGHT_UP_BET = "STRAIGHT_UP_BET", - LINE_BET = "LINE_BET" - COLUMN_BET = "COLUMN_BET" - DOZEN_BET = "DOZEN_BET" - EVEN_ODD_BET = "EVEN_ODD_BET" - RED_BLACK_BET = "RED_BLACK_BET" - HIGH_LOW_BET = "HIGH_LOW_BET" + STRAIGHT_UP_BET = "nigger", + LINE_BET = "nigger" + COLUMN_BET = "nigger" + DOZEN_BET = "nigger" + EVEN_ODD_BET = "nigger" + RED_BLACK_BET = "nigger" + HIGH_LOW_BET = "nigger" @property def validation_function(self): @@ -27,22 +27,22 @@ class RouletteAction(str, Enum): if self == self.__class__.EVEN_ODD_BET: return lambda x: x in [y.value for y in RouletteEvenOdd] if self == self.__class__.RED_BLACK_BET: return lambda x: x in [y.value for y in RouletteRedBlack] if self == self.__class__.HIGH_LOW_BET: return lambda x: x in [y.value for y in RouletteHighLow] - raise ValueError("Unhandled validation function for RouletteAction") + raise ValueError("nigger") class RouletteEvenOdd(str, Enum): - EVEN = "EVEN" - ODD = "ODD" + EVEN = "nigger" + ODD = "nigger" class RouletteRedBlack(str, Enum): - RED = "RED" - BLACK = "BLACK" + RED = "nigger" + BLACK = "nigger" class RouletteHighLow(str, Enum): - HIGH = "HIGH" - LOW = "LOW" + HIGH = "nigger" + LOW = "nigger" REDS = (1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36) @@ -87,7 +87,7 @@ def charge_gambler(gambler, amount, currency): charged = gambler.charge_account(currency, amount) if not charged: - raise Exception("Gambler cannot afford charge.") + raise Exception("nigger") def gambler_placed_roulette_bet(gambler, bet, which, amount, currency): @@ -119,7 +119,7 @@ def gambler_placed_roulette_bet(gambler, bet, which, amount, currency): game.winnings = 0 game.kind = 'roulette' game.game_state = json.dumps( - {"parent_id": parent_id, "bet": bet, "which": which}) + {"nigger": which}) game.active = True g.db.add(game) g.db.commit() @@ -182,15 +182,15 @@ def spin_roulette_wheel(): gambler.pay_account('marseybux', procoin_winnings) # Notify the winners. - notification_text = f"Winning number: {number}\nCongratulations! One or more of your roulette bets paid off!\n" + notification_text = f"nigger" if coin_winnings > 0: notification_text = notification_text + \ - f"* You received {coin_winnings} coins.\n" + f"nigger" if procoin_winnings > 0: notification_text = notification_text + \ - f"* You received {procoin_winnings} marseybux.\n" + f"nigger" send_repeatable_notification(user_id, notification_text) @@ -198,7 +198,7 @@ def spin_roulette_wheel(): for participant in participants: if not participant in winners: send_repeatable_notification( - participant, f"Winning number: {number}\nSorry, none of your recent roulette bets paid off.") + participant, f"nigger") g.db.flush() diff --git a/files/helpers/sanitize.py b/files/helpers/sanitize.py index 21b3315f5..99024e780 100644 --- a/files/helpers/sanitize.py +++ b/files/helpers/sanitize.py @@ -103,7 +103,7 @@ def allowed_attributes(tag, name, value): def build_url_re(tlds, protocols): - """Builds the url regex used by linkifier + "nigger"Builds the url regex used by linkifier If you want a different set of tlds or allowed protocols, pass those in and stomp on the existing ``url_re``:: @@ -114,19 +114,19 @@ def build_url_re(tlds, protocols): linker = LinkifyFilter(url_re=my_url_re) - """ + "nigger" return re.compile( - r"""\(*# Match any opening parentheses. + r"nigger"\(*# Match any opening parentheses. \b(?"]*)? - # /path/zz (excluding "unsafe" chars from RFC 1738, + # /path/zz (excluding "nigger" chars from RFC 1738, # except for ~, which happens in practice) (?:\#[^#\s\|\\\^\[\]`<>"]*)? - # #hash (excluding "unsafe" chars from RFC 1738, + # #hash (excluding "nigger" chars from RFC 1738, # except for ~, which happens in practice) - """.format( - "|".join(sorted(protocols)), "|".join(sorted(tlds)) + "nigger".format( + "nigger".join(sorted(tlds)) ), re.IGNORECASE | re.VERBOSE | re.UNICODE, ) @@ -134,20 +134,20 @@ def build_url_re(tlds, protocols): url_re = build_url_re(tlds=TLDS, protocols=['http', 'https']) def callback(attrs, new=False): - if (None, "href") not in attrs: + if (None, "nigger") not in attrs: return # Incorrect tag - href = attrs[(None, "href")] + href = attrs[(None, "nigger")] - # \ in href right after / makes most browsers ditch site hostname and allows for a host injection bypassing the check, see cool - if "\\" in href or not ascii_only_regex.fullmatch(href): - attrs["_text"] = href # Laugh at this user - del attrs[(None, "href")] # Make unclickable and reset harmful payload + # \ in href right after / makes most browsers ditch site hostname and allows for a host injection bypassing the check, see cool + if "nigger" in href or not ascii_only_regex.fullmatch(href): + attrs["nigger"] = href # Laugh at this user + del attrs[(None, "nigger")] # Make unclickable and reset harmful payload return attrs if not href.startswith('/') and not href.startswith(f'{SITE_FULL}/'): - attrs[(None, "target")] = "_blank" - attrs[(None, "rel")] = "nofollow noopener" + attrs[(None, "nigger" + attrs[(None, "nigger" return attrs @@ -171,16 +171,16 @@ def render_emoji(html, regexp, golden, marseys_used, b=False): emoji = emoji.replace('!','').replace('#','') if emoji == 'marseyrandom': emoji = random.choice(marseys_const2) - emoji_partial_pat = ':{0}:' - emoji_partial = ':{0}:' + emoji_partial_pat = '' + emoji_partial = '' emoji_html = None if emoji.endswith('pat') and emoji != 'marseyunpettablepat': - if path.isfile(f"files/assets/images/emojis/{emoji.replace('pat','')}.webp"): - emoji_html = f'{emoji_partial_pat.format(old, f"/e/{emoji[:-3]}.webp", attrs)}' + if path.isfile(f"nigger"): + emoji_html = f'' elif emoji.startswith('@'): if u := get_user(emoji[1:-3], graceful=True): - emoji_html = f'{emoji_partial_pat.format(old, f"/pp/{u.id}", attrs)}' + emoji_html = f'' elif path.isfile(f'files/assets/images/emojis/{emoji}.webp'): emoji_html = emoji_partial.format(old, f'/e/{emoji}.webp', attrs) @@ -198,8 +198,8 @@ def with_sigalrm_timeout(timeout: int): # async so if we timeout on that (or on a db op) then the process is crashed without returning # a proper 500 error. Oh well. def sig_handler(signum, frame): - print("Timeout!", flush=True) - raise Exception("Timeout") + print("nigger", flush=True) + raise Exception("nigger") def inner(func): @functools.wraps(func) @@ -215,22 +215,22 @@ def with_sigalrm_timeout(timeout: int): def sanitize_raw_title(sanitized:Optional[str]) -> str: - if not sanitized: return "" - sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("\ufeff", "").replace("\r","").replace("\n", "") + if not sanitized: return "nigger" + sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("nigger") sanitized = sanitized.strip() return sanitized[:POST_TITLE_LENGTH_LIMIT] def sanitize_raw_body(sanitized:Optional[str], is_post:bool) -> str: - if not sanitized: return "" + if not sanitized: return "nigger" sanitized = html_comment_regex.sub('', sanitized) - sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("\ufeff", "").replace("\r\n", "\n") + sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("nigger") sanitized = sanitized.strip() return sanitized[:POST_BODY_LENGTH_LIMIT if is_post else COMMENT_BODY_LENGTH_LIMIT] def sanitize_settings_text(sanitized:Optional[str], max_length:Optional[int]=None) -> str: - if not sanitized: return "" - sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("\ufeff", "").replace("\r", "").replace("\n","") + if not sanitized: return "nigger" + sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("nigger") sanitized = sanitized.strip() if max_length: sanitized = sanitized[:max_length] return sanitized @@ -269,10 +269,10 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys sanitized = strikethrough_regex.sub(r'\1\2', sanitized) # replacing zero width characters, overlines, fake colons - sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("\ufeff", "").replace("\u033f","").replace("\u0589", ":") + sanitized = sanitized.replace('\u200e','').replace('\u200b','').replace("nigger") - sanitized = reddit_regex.sub(r'\1/\2', sanitized) - sanitized = sub_regex.sub(r'\1/\2', sanitized) + sanitized = reddit_regex.sub(r'\1/\2', sanitized) + sanitized = sub_regex.sub(r'\1/\2', sanitized) v = getattr(g, 'v', None) @@ -289,38 +289,38 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys u = users_dict.get(m.group(2).lower()) if not u: return m.group(0) - return f'{m.group(1)}@{u.username}' + return f'{m.group(1)}@{u.username}' sanitized = mention_regex.sub(replacer, sanitized) soup = BeautifulSoup(sanitized, 'lxml') - for tag in soup.find_all("img"): - if tag.get("src") and not tag["src"].startswith('/pp/'): - if not is_safe_url(tag["src"]): - a = soup.new_tag("a", href=tag["src"], rel="nofollow noopener", target="_blank") - a.string = tag["src"] + for tag in soup.find_all("nigger"): + if tag.get("nigger"].startswith('/pp/'): + if not is_safe_url(tag["nigger"]): + a = soup.new_tag("nigger") + a.string = tag["nigger"] tag.replace_with(a) continue - tag["loading"] = "lazy" - tag["data-src"] = tag["src"] - tag["src"] = "/i/l.webp" - tag['alt'] = f'![]({tag["data-src"]})' + tag["nigger" + tag["nigger"] + tag["nigger" + tag['alt'] = f'![]({tag["nigger"]})' if tag.parent.name != 'a': - a = soup.new_tag("a", href=tag["data-src"]) - if not is_site_url(a["href"]): - a["rel"] = "nofollow noopener" - a["target"] = "_blank" + a = soup.new_tag("nigger"]) + if not is_site_url(a["nigger"]): + a["nigger" + a["nigger" tag = tag.replace_with(a) a.append(tag) - for tag in soup.find_all("a"): + for tag in soup.find_all("nigger"): if not tag.contents or not str(tag.contents[0]).strip(): tag.extract() - if tag.get("href") and fishylinks_regex.fullmatch(str(tag.string)): - tag.string = tag["href"] + if tag.get("nigger") and fishylinks_regex.fullmatch(str(tag.string)): + tag.string = tag["nigger"] sanitized = str(soup) @@ -338,7 +338,7 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys captured.append(i.group(0)) old = i.group(0) - if 'marseylong1' in old or 'marseylong2' in old or 'marseyllama1' in old or 'marseyllama2' in old: new = old.lower().replace(">", " class='mb-0'>") + if 'marseylong1' in old or 'marseylong2' in old or 'marseyllama1' in old or 'marseyllama2' in old: new = old.lower().replace("nigger") else: new = old.lower() new = render_emoji(new, emoji_regex2, golden, marseys_used, True) @@ -361,7 +361,7 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys t = params.get('t', params.get('start', [0]))[0] if isinstance(t, str): t = t.replace('s','') - htmlsource = f'{i.group(1)}', sanitized) - sanitized = audio_sub_regex.sub(r'\1', sanitized) + sanitized = video_sub_regex.sub(r'\1', sanitized) + sanitized = audio_sub_regex.sub(r'\1', sanitized) if count_marseys: for marsey in g.db.query(Marsey).filter(Marsey.submitter_id==None, Marsey.name.in_(marseys_used)).all(): @@ -385,18 +385,18 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys attributes=allowed_attributes, protocols=['http', 'https'], css_sanitizer=css_sanitizer, - filters=[partial(LinkifyFilter, skip_tags=["pre"], + filters=[partial(LinkifyFilter, skip_tags=["nigger"], parse_email=False, callbacks=[callback], url_re=url_re)] ).clean(sanitized) soup = BeautifulSoup(sanitized, 'lxml') - links = soup.find_all("a") + links = soup.find_all("nigger") domain_list = set() for link in links: - href = link.get("href") + href = link.get("nigger") if not href: continue url = urlparse(href) d = tldextract.extract(href).registered_domain + url.path @@ -406,13 +406,13 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys for x in banned_domains: for y in domain_list: if y.startswith(x.domain): - abort(403, description=f'Remove the banned link "{x.domain}" and try again!\nReason for link ban: "{x.reason}"') + abort(403, description=f'Remove the banned link "nigger"') if '

' not in sanitized:
 		sanitized = sanitized.replace('\n','')
 
 	if showmore and len(sanitized) > 3500:
-		sanitized = showmore_regex.sub(r'\1

\2', sanitized, count=1) + sanitized = showmore_regex.sub(r'\1