replace urls in t.co redirect and fix missing X urls in replacer
This commit is contained in:
parent
9b3862de69
commit
c09266cd17
@ -9,8 +9,8 @@ const
|
||||
twitter = parseUri("https://twitter.com")
|
||||
|
||||
let
|
||||
twRegex = re"(?<=(?<!\S)https:\/\/|(?<=\s))(www\.|mobile\.)?twitter\.com"
|
||||
twLinkRegex = re"""<a href="https:\/\/twitter.com([^"]+)">twitter\.com(\S+)</a>"""
|
||||
twRegex = re"(?<=(?<!\S)https:\/\/|(?<=\s))(www\.|mobile\.)?(twitter|x)\.com"
|
||||
twLinkRegex = re"""<a href="https:\/\/(twitter|x).com([^"]+)">(twitter|x)\.com(\S+)</a>"""
|
||||
|
||||
ytRegex = re(r"([A-z.]+\.)?youtu(be\.com|\.be)", {reStudy, reIgnoreCase})
|
||||
|
||||
@ -58,12 +58,12 @@ proc replaceUrls*(body: string; prefs: Prefs; absolute=""): string =
|
||||
if prefs.replaceYouTube.len > 0 and "youtu" in result:
|
||||
result = result.replace(ytRegex, prefs.replaceYouTube)
|
||||
|
||||
if prefs.replaceTwitter.len > 0 and ("twitter.com" in body or tco in body):
|
||||
if prefs.replaceTwitter.len > 0 and ("twitter.com" in result or "/x.com" in result or tco in result):
|
||||
result = result.replace(tco, https & prefs.replaceTwitter & "/t.co")
|
||||
result = result.replace(cards, prefs.replaceTwitter & "/cards")
|
||||
result = result.replace(twRegex, prefs.replaceTwitter)
|
||||
result = result.replacef(twLinkRegex, a(
|
||||
prefs.replaceTwitter & "$2", href = https & prefs.replaceTwitter & "$1"))
|
||||
prefs.replaceTwitter & "$4", href = https & prefs.replaceTwitter & "$2"))
|
||||
|
||||
if prefs.replaceReddit.len > 0 and ("reddit.com" in result or "redd.it" in result):
|
||||
result = result.replace(rdShortRegex, prefs.replaceReddit & "/comments/")
|
||||
|
||||
@ -4,22 +4,26 @@ import strutils
|
||||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[types, api]
|
||||
import ".."/[types, api, formatters]
|
||||
import ../views/general
|
||||
|
||||
template respResolved*(url, kind: string): untyped =
|
||||
template respResolved*(url, kind: string; prefs: Prefs): untyped =
|
||||
let u = url
|
||||
if u.len == 0:
|
||||
resp showError("Invalid $1 link" % kind, cfg)
|
||||
else:
|
||||
redirect(u)
|
||||
redirect(replaceUrls(u, prefs))
|
||||
|
||||
proc createResolverRouter*(cfg: Config) =
|
||||
router resolver:
|
||||
get "/cards/@card/@id":
|
||||
let url = "https://cards.twitter.com/cards/$1/$2" % [@"card", @"id"]
|
||||
respResolved(await resolve(url, cookiePrefs()), "card")
|
||||
let
|
||||
prefs = cookiePrefs()
|
||||
url = "https://cards.twitter.com/cards/$1/$2" % [@"card", @"id"]
|
||||
respResolved(await resolve(url, prefs), "card", prefs)
|
||||
|
||||
get "/t.co/@url":
|
||||
let url = "https://t.co/" & @"url"
|
||||
respResolved(await resolve(url, cookiePrefs()), "t.co")
|
||||
let
|
||||
prefs = cookiePrefs()
|
||||
url = "https://t.co/" & @"url"
|
||||
respResolved(await resolve(url, prefs), "t.co", prefs)
|
||||
|
||||
@ -3,8 +3,7 @@ import strutils, strformat, options, json, sequtils, times, math
|
||||
import ".."/[types, formatters, utils]
|
||||
|
||||
proc formatTweetForMastoAPI*(tweet: Tweet, cfg: Config, prefs: Prefs): string =
|
||||
var content = replaceUrls(tweet.text, prefs)
|
||||
content = content.replace("href=\"/", &"href=\"{getUrlPrefix(cfg)}/")
|
||||
var content = replaceUrls(tweet.text, prefs, absolute=getUrlPrefix(cfg))
|
||||
|
||||
if tweet.poll.isSome():
|
||||
let poll = get(tweet.poll)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user