diff --git a/src/routes/media.nim b/src/routes/media.nim index c953a93..95446a1 100644 --- a/src/routes/media.nim +++ b/src/routes/media.nim @@ -88,6 +88,20 @@ proc createMediaRouter*(cfg: Config) = get "/pic/?": resp Http404 + get re"^\/pic\/orig\/(enc)?\/?(.+)": + var url = decoded(request, 1) + if "twimg.com" notin url: + url.insert(twimg) + if not url.startsWith(https): + url.insert(https) + url.add(":orig") + + let uri = parseUri(url) + cond isTwitterUrl(uri) == true + + let code = await proxyMedia(request, url) + check code + get re"^\/pic\/(enc)?\/?(.+)": var url = decoded(request, 1) if "twimg.com" notin url: diff --git a/src/utils.nim b/src/utils.nim index 9c8414d..9002bbf 100644 --- a/src/utils.nim +++ b/src/utils.nim @@ -42,6 +42,12 @@ proc getPicUrl*(link: string): string = else: &"/pic/{encodeUrl(link)}" +proc getOrigPicUrl*(link: string): string = + if base64Media: + &"/pic/orig/enc/{encode(link, safe=true)}" + else: + &"/pic/orig/{encodeUrl(link)}" + proc filterParams*(params: Table): seq[(string, string)] = for p in params.pairs(): if p[1].len > 0 and p[0] notin nitterParams: diff --git a/src/views/tweet.nim b/src/views/tweet.nim index 8b712a6..e64f959 100644 --- a/src/views/tweet.nim +++ b/src/views/tweet.nim @@ -57,9 +57,9 @@ proc renderAlbum(tweet: Tweet): VNode = tdiv(class="attachment image"): let named = "name=" in photo - orig = if named: photo else: photo & "?name=orig" - small = if named: photo else: photo & "?name=small" - a(href=getPicUrl(orig), class="still-image", target="_blank"): + orig = photo + small = if named: photo else: photo & ":small" + a(href=getOrigPicUrl(orig), class="still-image", target="_blank"): genImg(small) proc isPlaybackEnabled(prefs: Prefs; video: Video): bool =