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