diff --git a/src/routes/activityspoof.nim b/src/routes/activityspoof.nim index 6ecdd0a..0203126 100644 --- a/src/routes/activityspoof.nim +++ b/src/routes/activityspoof.nim @@ -53,10 +53,10 @@ proc createActivityPubRouter*(cfg: Config) = mediaObj["type"] = %"image" mediaObj["url"] = %image mediaObj["preview_url"] = %image - mediaObj["remote_url"] = newJNull() - mediaObj["preview_remote_url"] = newJNull() + mediaObj["remote_url"] = %image + mediaObj["preview_remote_url"] = %image mediaObj["text_url"] = newJNull() - mediaObj["description"] = newJNull() # FIXME (not used by discord, i like a11y) + mediaObj["description"] = newJNull() # FIXME this requires refactoring images # FIXME but this probably isnt used by discord mediaObj["meta"] = newJObject() @@ -66,32 +66,40 @@ proc createActivityPubRouter*(cfg: Config) = let videoObj = get(tweet.video) vars = videoObj.variants.filterIt(it.contentType == mp4) + videoUrl = vars[^1].url + videoPreview = getUrlPrefix(cfg) & getPicUrl(videoObj.thumb) var mediaObj = newJObject() + var description = videoObj.title + if videoObj.description.len > 0: + description = videoObj.description mediaObj["id"] = %"150745989836308480" mediaObj["type"] = %"video" - mediaObj["url"] = %vars[^1].url - mediaObj["preview_url"] = %(getUrlPrefix(cfg) & getPicUrl(videoObj.thumb)) - mediaObj["remote_url"] = newJNull() - mediaObj["preview_remote_url"] = newJNull() + mediaObj["url"] = %videoUrl + mediaObj["preview_url"] = %videoPreview + mediaObj["remote_url"] = %videoUrl + mediaObj["preview_remote_url"] = %videoPreview mediaObj["text_url"] = newJNull() - mediaObj["description"] = newJNull() # FIXME (not used by discord, i like a11y) + mediaObj["description"] = %description # FIXME but this probably isnt used by discord mediaObj["meta"] = newJObject() media.add(mediaObj) elif tweet.gif.isSome(): - let gif = get(tweet.gif) + let + gif = get(tweet.gif) + gifUrl = getUrlPrefix(cfg) & getPicUrl(gif.url) + gifPreview = getUrlPrefix(cfg) & getPicUrl(gif.thumb) var mediaObj = newJObject() mediaObj["id"] = %"150745989836308480" mediaObj["type"] = %"video" - mediaObj["url"] = %(&"https://{gif.url}") - mediaObj["preview_url"] = %(getUrlPrefix(cfg) & getPicUrl(gif.thumb)) - mediaObj["remote_url"] = newJNull() - mediaObj["preview_remote_url"] = newJNull() + mediaObj["url"] = %gifUrl + mediaObj["preview_url"] = %gifPreview + mediaObj["remote_url"] = %gifUrl + mediaObj["preview_remote_url"] = %gifPreview mediaObj["text_url"] = newJNull() - mediaObj["description"] = newJNull() # FIXME (not used by discord, i like a11y) + mediaObj["description"] = newJNull() # FIXME this requires refactoring gifs # FIXME but this probably isnt used by discord mediaObj["meta"] = newJObject() @@ -105,8 +113,9 @@ proc createActivityPubRouter*(cfg: Config) = postJson["edited_at"] = newJNull() postJson["reblog"] = newJNull() if tweet.replyId != 0: + let replyUser = await getGraphUser(tweet.replyHandle) postJson["in_reply_to_id"] = %(&"{tweet.replyId}") - postJson["in_reply_to_account_id"] = %"" + postJson["in_reply_to_account_id"] = %replyUser.id else: postJson["in_reply_to_id"] = newJNull() postJson["in_reply_to_account_id"] = newJNull() diff --git a/src/views/general.nim b/src/views/general.nim index 51447e3..556beec 100644 --- a/src/views/general.nim +++ b/src/views/general.nim @@ -59,12 +59,14 @@ proc renderHead*(prefs: Prefs; cfg: Config; req: Request; titleText=""; desc=""; script(src="/js/baguetteBox.min.js", `async`="") script(src="/js/zoom.js") + let isDiscord = req.headers.getOrDefault("User-Agent").toString().contains("Discordbot") + if theme.len > 0: link(rel="stylesheet", type="text/css", href=(&"/css/themes/{theme}.css")) link(rel="icon", type="image/png", sizes="32x32", href=(&"{getUrlPrefix(cfg)}/favicon-32x32.png")) link(rel="icon", type="image/png", sizes="16x16", href=(&"{getUrlPrefix(cfg)}/favicon-16x16.png")) - link(rel="apple-touch-icon", sizes="180x180", href="/apple-touch-icon.png") + link(rel="apple-touch-icon", sizes="180x180", href="/apple-touch-icon.png?v=2") link(rel="manifest", href="/site.webmanifest") link(rel="mask-icon", href="/safari-pinned-tab.svg", color="#ff6c60") link(rel="search", type="application/opensearchdescription+xml", title=cfg.title, @@ -103,9 +105,6 @@ proc renderHead*(prefs: Prefs; cfg: Config; req: Request; titleText=""; desc=""; meta(property="og:locale", content="en_US") var siteName = "Nitter" - - let isDiscord = req.headers.getOrDefault("User-Agent").toString().contains("Discordbot") - if time.isSome and not isDiscord: let timeObj = time.get let timeStr = $timeObj diff --git a/src/views/mastoapi.nim b/src/views/mastoapi.nim index bc57301..ff33a4e 100644 --- a/src/views/mastoapi.nim +++ b/src/views/mastoapi.nim @@ -39,11 +39,13 @@ proc getActivityStream*(tweet: Tweet, cfg: Config, prefs: Prefs): JsonNode = if tweet.photos.len > 0: for url in tweet.photos: - let image = getUrlPrefix(cfg) & getPicUrl(url) - var mediaObj = newJObject() + let + image = getUrlPrefix(cfg) & getPicUrl(url) + splitUrl = url.split('.') + var mediaObj = newJObject() mediaObj["type"] = %"Document" - mediaObj["mediaType"] = %"image/png" + mediaObj["mediaType"] = %("image/" & splitUrl[^1]) mediaObj["url"] = %image mediaObj["name"] = newJNull() # FIXME a11y @@ -53,21 +55,26 @@ proc getActivityStream*(tweet: Tweet, cfg: Config, prefs: Prefs): JsonNode = let videoObj = get(tweet.video) vars = videoObj.variants.filterIt(it.contentType == mp4) - var mediaObj = newJObject() + var description = videoObj.title + if videoObj.description.len > 0: + description = videoObj.description + var mediaObj = newJObject() mediaObj["type"] = %"Document" mediaObj["mediaType"] = %"video/mp4" mediaObj["url"] = %vars[^1].url - mediaObj["name"] = newJNull() # FIXME a11y + mediaObj["name"] = %description media.add(mediaObj) elif tweet.gif.isSome(): - let gif = get(tweet.gif) - var mediaObj = newJObject() + let + gif = get(tweet.gif) + gifUrl = getUrlPrefix(cfg) & getPicUrl(gif.url) + var mediaObj = newJObject() mediaObj["type"] = %"Document" mediaObj["mediaType"] = %"video/mp4" - mediaObj["url"] = %(&"https://{gif.url}") + mediaObj["url"] = %gifUrl mediaObj["name"] = newJNull() # FIXME a11y media.add(mediaObj)