diff --git a/files/helpers/actions.py b/files/helpers/actions.py index f2b433472..26c1d94a1 100644 --- a/files/helpers/actions.py +++ b/files/helpers/actions.py @@ -1,6 +1,17 @@ from flask import g from files.classes.badges import Badge from files.helpers.alerts import send_repeatable_notification +from files.helpers.const import * +from files.helpers.get import * +from files.helpers.sanitize import * +import random + +if SITE_NAME == 'PCM': snappyquotes = [] +else: snappyquotes = [f':#{x}:' for x in marseys_const2] + +if path.exists(f'snappy_{SITE_NAME}.txt'): + with open(f'snappy_{SITE_NAME}.txt', "r", encoding="utf-8") as f: + snappyquotes += f.read().split("\n{[para]}\n") def badge_grant(user, badge_id, description=None, url=None): assert user != None @@ -20,3 +31,124 @@ def badge_grant(user, badge_id, description=None, url=None): send_repeatable_notification(user.id, f"@AutoJanny has given you the following profile badge:\n\n" + f"![]({badge.path})\n\n{badge.name}") + + +def execute_snappy(post, v): + snappy = get_account(SNAPPY_ID) + + 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" + else: body = ":#marseyfuckoffcarp:" + elif v.id == LAWLZ_ID: + if random.random() < 0.5: body = "wow, this lawlzpost sucks!" + else: body = "wow, a good lawlzpost for once!" + else: + body = random.choice(snappyquotes).strip() + if body.startswith('▼'): + body = body[1:] + vote = Vote(user_id=SNAPPY_ID, + vote_type=-1, + submission_id=post.id, + real = True + ) + g.db.add(vote) + post.downvotes += 1 + if body.startswith('OP is a Trump supporter'): + flag = Flag(post_id=post.id, user_id=SNAPPY_ID, reason='Trump supporter') + g.db.add(flag) + elif body.startswith('You had your chance. Downvoted and reported'): + flag = Flag(post_id=post.id, user_id=SNAPPY_ID, reason='Retard') + g.db.add(flag) + elif body.startswith('▲'): + body = body[1:] + vote = Vote(user_id=SNAPPY_ID, + vote_type=1, + submission_id=post.id, + real = True + ) + g.db.add(vote) + post.upvotes += 1 + elif body == '!slots': + body = f'!slots{snappy.coins}' + + body += "\n\n" + + if post.url: + 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 = post.url.replace('https://old.reddit.com/u/', '') + rev = f"* [search.marsey.cat](https://search.marsey.cat/reddit-search/#\u007b\"author\":\"{rev}\",\"resultSize\":100\u007d)\n" + else: rev = '' + + newposturl = post.url + if newposturl.startswith('/'): newposturl = f"{SITE_FULL}{newposturl}" + body += f"Snapshots:\n\n{rev}* [archive.org](https://web.archive.org/{newposturl})\n* [archive.ph](https://archive.ph/?url={quote(newposturl)}&run=1) (click to archive)\n* [ghostarchive.org](https://ghostarchive.org/search?term={quote(newposturl)}) (click to archive)\n\n" + gevent.spawn(archiveorg, newposturl) + + captured = [] + body_for_snappy = post.body_html.replace(' data-src="', ' src="') + for i in list(snappy_url_regex.finditer(body_for_snappy)): + if i.group(1) in captured: continue + captured.append(i.group(1)) + + href = i.group(1) + if not href: continue + + title = i.group(2) + if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n" + + if f'**[{title}]({href})**:\n\n' not in body: + addition = f'**[{title}]({href})**:\n\n' + if href.startswith('https://old.reddit.com/r/'): + rev = href.replace('https://old.reddit.com/', '') + 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"* [search.marsey.cat](https://search.marsey.cat/reddit-search/#\u007b\"author\":\"{rev}\",\"resultSize\":100\u007d)\n" + addition += f'* [archive.org](https://web.archive.org/{href})\n' + addition += f'* [archive.ph](https://archive.ph/?url={quote(href)}&run=1) (click to archive)\n' + addition += f'* [ghostarchive.org](https://ghostarchive.org/search?term={quote(href)}) (click to archive)\n\n' + if len(f'{body}{addition}') > 10000: break + body += addition + gevent.spawn(archiveorg, href) + + body = body.strip() + + body_html = sanitize(body) + + if len(body_html) < 40000: + c = Comment(author_id=SNAPPY_ID, + distinguish_level=6, + parent_submission=post.id, + level=1, + over_18=False, + is_bot=True, + app_id=None, + body=body, + body_html=body_html, + ghost=post.ghost + ) + + g.db.add(c) + + snappy.comment_count += 1 + snappy.coins += 1 + g.db.add(snappy) + + if body.startswith('!slots'): + check_for_slots_command(body, snappy, c) + + if PIN_ENABLED and (body.startswith(':#marseypin:') or body.startswith(':#marseypin2:')): + post.stickied = "Snappy" + post.stickied_utc = int(time.time()) + 3600 + + g.db.flush() + + c.top_comment_id = c.id + + post.comment_count += 1 + post.replies = [c] \ No newline at end of file diff --git a/files/routes/posts.py b/files/routes/posts.py index b13a72446..47c42d196 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -9,6 +9,7 @@ from files.helpers.const import * from files.helpers.regex import * from files.helpers.slots import * from files.helpers.get import * +from files.helpers.actions import * from files.classes import * from flask import * from io import BytesIO @@ -22,12 +23,6 @@ from shutil import copyfile from sys import stdout import os -if SITE_NAME == 'PCM': snappyquotes = [] -else: snappyquotes = [f':#{x}:' for x in marseys_const2] - -if path.exists(f'snappy_{SITE_NAME}.txt'): - with open(f'snappy_{SITE_NAME}.txt', "r", encoding="utf-8") as f: - snappyquotes += f.read().split("\n{[para]}\n") titleheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36"} @@ -89,6 +84,8 @@ def publish(pid, v): send_discord_message(post.permalink) cache.delete_memoized(changeloglist) + execute_snappy(post, v) + if request.referrer and request.referrer.startswith(f'{SITE_FULL}/'): return redirect(request.referrer) @@ -1066,125 +1063,13 @@ def submit_post(v, sub=None): n = Notification(comment_id=c_jannied.id, user_id=v.id) g.db.add(n) - snappy = get_account(SNAPPY_ID) - if not (post.sub and g.db.query(Exile.user_id).filter_by(user_id=SNAPPY_ID, sub=post.sub).one_or_none()): - 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" - else: body = ":#marseyfuckoffcarp:" - elif v.id == LAWLZ_ID: - if random.random() < 0.5: body = "wow, this lawlzpost sucks!" - else: body = "wow, a good lawlzpost for once!" - else: - body = random.choice(snappyquotes).strip() - if body.startswith('▼'): - body = body[1:] - vote = Vote(user_id=SNAPPY_ID, - vote_type=-1, - submission_id=post.id, - real = True - ) - g.db.add(vote) - post.downvotes += 1 - if body.startswith('OP is a Trump supporter'): - flag = Flag(post_id=post.id, user_id=SNAPPY_ID, reason='Trump supporter') - g.db.add(flag) - elif body.startswith('You had your chance. Downvoted and reported'): - flag = Flag(post_id=post.id, user_id=SNAPPY_ID, reason='Retard') - g.db.add(flag) - elif body.startswith('▲'): - body = body[1:] - vote = Vote(user_id=SNAPPY_ID, - vote_type=1, - submission_id=post.id, - real = True - ) - g.db.add(vote) - post.upvotes += 1 - elif body == '!slots': - body = f'!slots{snappy.coins}' - body += "\n\n" + if not post.private and not (post.sub and g.db.query(Exile.user_id).filter_by(user_id=SNAPPY_ID, sub=post.sub).one_or_none()): + execute_snappy(post, v) - if post.url: - 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 = post.url.replace('https://old.reddit.com/u/', '') - rev = f"* [search.marsey.cat](https://search.marsey.cat/reddit-search/#\u007b\"author\":\"{rev}\",\"resultSize\":100\u007d)\n" - else: rev = '' - - newposturl = post.url - if newposturl.startswith('/'): newposturl = f"{SITE_FULL}{newposturl}" - body += f"Snapshots:\n\n{rev}* [archive.org](https://web.archive.org/{newposturl})\n* [archive.ph](https://archive.ph/?url={quote(newposturl)}&run=1) (click to archive)\n* [ghostarchive.org](https://ghostarchive.org/search?term={quote(newposturl)}) (click to archive)\n\n" - gevent.spawn(archiveorg, newposturl) - captured = [] - body_for_snappy = post.body_html.replace(' data-src="', ' src="') - for i in list(snappy_url_regex.finditer(body_for_snappy)): - if i.group(1) in captured: continue - captured.append(i.group(1)) - href = i.group(1) - if not href: continue - - title = i.group(2) - if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n" - - if f'**[{title}]({href})**:\n\n' not in body: - addition = f'**[{title}]({href})**:\n\n' - if href.startswith('https://old.reddit.com/r/'): - rev = href.replace('https://old.reddit.com/', '') - 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"* [search.marsey.cat](https://search.marsey.cat/reddit-search/#\u007b\"author\":\"{rev}\",\"resultSize\":100\u007d)\n" - addition += f'* [archive.org](https://web.archive.org/{href})\n' - addition += f'* [archive.ph](https://archive.ph/?url={quote(href)}&run=1) (click to archive)\n' - addition += f'* [ghostarchive.org](https://ghostarchive.org/search?term={quote(href)}) (click to archive)\n\n' - if len(f'{body}{addition}') > 10000: break - body += addition - gevent.spawn(archiveorg, href) - - body = body.strip() - - body_html = sanitize(body) - - if len(body_html) < 40000: - c = Comment(author_id=SNAPPY_ID, - distinguish_level=6, - parent_submission=post.id, - level=1, - over_18=False, - is_bot=True, - app_id=None, - body=body, - body_html=body_html, - ghost=post.ghost - ) - - g.db.add(c) - - snappy.comment_count += 1 - snappy.coins += 1 - g.db.add(snappy) - - if body.startswith('!slots'): - check_for_slots_command(body, snappy, c) - - if PIN_ENABLED and (body.startswith(':#marseypin:') or body.startswith(':#marseypin2:')): - post.stickied = "Snappy" - post.stickied_utc = int(time.time()) + 3600 - - g.db.flush() - - c.top_comment_id = c.id - - post.comment_count += 1 - post.replies = [c] v.post_count = g.db.query(Submission).filter_by(author_id=v.id, deleted_utc=0).count() g.db.add(v)