forked from rDrama/rDrama
dedup shit and make it work in all contexts
parent
ee5748abd1
commit
b3d61fb515
|
@ -19,13 +19,31 @@ from files.helpers.sorting_and_time import *
|
||||||
from .saves import CommentSaveRelationship
|
from .saves import CommentSaveRelationship
|
||||||
|
|
||||||
def normalize_urls_runtime(body, v):
|
def normalize_urls_runtime(body, v):
|
||||||
if not v: return body
|
if v and v.reddit != 'old.reddit.com':
|
||||||
if v.reddit != 'old.reddit.com':
|
|
||||||
body = reddit_to_vreddit_regex.sub(rf'\1https://{v.reddit}/\2/', body)
|
body = reddit_to_vreddit_regex.sub(rf'\1https://{v.reddit}/\2/', body)
|
||||||
if v.nitter:
|
|
||||||
|
if v and v.nitter:
|
||||||
body = twitter_to_nitter_regex.sub(r'\1https://nitter.net/', body)
|
body = twitter_to_nitter_regex.sub(r'\1https://nitter.net/', body)
|
||||||
if v.imginn:
|
|
||||||
|
if v and v.imginn:
|
||||||
body = body.replace('https://instagram.com/', 'https://imginn.com/')
|
body = body.replace('https://instagram.com/', 'https://imginn.com/')
|
||||||
|
|
||||||
|
if not v or v.controversial:
|
||||||
|
captured = []
|
||||||
|
for i in controversial_regex.finditer(body):
|
||||||
|
if i.group(0) in captured: continue
|
||||||
|
captured.append(i.group(0))
|
||||||
|
|
||||||
|
url = i.group(0)
|
||||||
|
p = urlparse(url).query
|
||||||
|
p = parse_qs(p, keep_blank_values=True)
|
||||||
|
|
||||||
|
if 'sort' not in p:
|
||||||
|
p['sort'] = ['controversial']
|
||||||
|
|
||||||
|
url_noquery = url.split('?')[0]
|
||||||
|
body = body.replace(f'{url}', f'{url_noquery}?{urlencode(p, True)}')
|
||||||
|
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
|
||||||
|
@ -351,21 +369,6 @@ class Comment(Base):
|
||||||
body = censor_slurs(body, v)
|
body = censor_slurs(body, v)
|
||||||
|
|
||||||
body = normalize_urls_runtime(body, v)
|
body = normalize_urls_runtime(body, v)
|
||||||
if not v or v.controversial:
|
|
||||||
captured = []
|
|
||||||
for i in controversial_regex.finditer(body):
|
|
||||||
if i.group(1) in captured: continue
|
|
||||||
captured.append(i.group(1))
|
|
||||||
|
|
||||||
url = i.group(1)
|
|
||||||
p = urlparse(url).query
|
|
||||||
p = parse_qs(p, keep_blank_values=True)
|
|
||||||
|
|
||||||
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'>{url}<', f'>{url_noquery}?{urlencode(p, True)}<')
|
|
||||||
|
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
|
|
@ -268,11 +268,6 @@ class Post(Base):
|
||||||
|
|
||||||
url = normalize_urls_runtime(url, v)
|
url = normalize_urls_runtime(url, v)
|
||||||
|
|
||||||
if url.startswith("https://old.reddit.com/r/") and '/comments/' in url and "sort=" not in url:
|
|
||||||
if "?" in url: url += "&context=9"
|
|
||||||
else: url += "?context=8"
|
|
||||||
if not v or v.controversial: url += "&sort=controversial"
|
|
||||||
|
|
||||||
if url.startswith('/'): return SITE_FULL + url
|
if url.startswith('/'): return SITE_FULL + url
|
||||||
|
|
||||||
return url
|
return url
|
||||||
|
|
|
@ -40,7 +40,7 @@ html_comment_regex = re.compile("<!--.*-->", flags=re.A)
|
||||||
|
|
||||||
title_regex = re.compile("[^\w ]", flags=re.A)
|
title_regex = re.compile("[^\w ]", flags=re.A)
|
||||||
|
|
||||||
controversial_regex = re.compile('["> ](https:\/\/old\.reddit\.com/r/\w{2,20}\/comments\/[\w\-.#&/=\?@%+]{5,250})["< ]', flags=re.A)
|
controversial_regex = re.compile('https:\/\/old\.reddit\.com/r/\w{2,20}\/comments\/[\w\-.#&/=\?@%+]{5,250}', flags=re.A)
|
||||||
|
|
||||||
spoiler_regex = re.compile('\|\|(.+?)\|\|' + NOT_IN_CODE_OR_LINKS, flags=re.A)
|
spoiler_regex = re.compile('\|\|(.+?)\|\|' + NOT_IN_CODE_OR_LINKS, flags=re.A)
|
||||||
sub_regex = re.compile('(?<![\w/])\/?([hH]\/(\w|-){3,25})' + NOT_IN_CODE_OR_LINKS, flags=re.A)
|
sub_regex = re.compile('(?<![\w/])\/?([hH]\/(\w|-){3,25})' + NOT_IN_CODE_OR_LINKS, flags=re.A)
|
||||||
|
|
Loading…
Reference in New Issue