diff --git a/src/views/rss.nimf b/src/views/rss.nimf index 218c082..9c703d5 100644 --- a/src/views/rss.nimf +++ b/src/views/rss.nimf @@ -12,7 +12,7 @@ #elif retweet.len > 0: prefix = &"RT by @{retweet}: " #elif tweet.reply.len > 0: prefix = &"R to @{tweet.reply[0]}: " #end if -#var text = stripHtml(tweet.text) +#var text = strutils.splitWhitespace(stripHtml(tweet.text)).join(" ") ##if unicode.runeLen(text) > 32: ## text = unicode.runeSubStr(text, 0, 32) & "..." ##end if @@ -34,6 +34,12 @@ # end case # end if #end if +#if result.len == 0 and tweet.articlePreview.isSome: +# let art = tweet.articlePreview.get() +# if art.title.len > 0: +# result = prefix & xmltree.escape(art.title) +# end if +#end if #if result.len == 0 and tweet.card.isSome: # let card = tweet.card.get() # if card.kind notin {hidden, unknown} and card.title.len > 0: @@ -69,6 +75,8 @@ Twitter feed for: ${desc}. Generated by ${getUrlPrefix(cfg)} #proc renderRssCard(card: Card; prefs: Prefs; urlPrefix: string): string = #let cardLink = if card.url.startsWith("/"): urlPrefix & card.url else: replaceUrls(card.url, prefs) #let title = xmltree.escape(card.title) +
+Link
#if cardLink.len > 0: #end if @@ -87,11 +95,49 @@ Twitter feed for: ${desc}. Generated by ${getUrlPrefix(cfg)} #if card.text.len > 0:

${xmltree.escape(card.text)}

#end if -#if card.dest.len > 0: +#if cardLink.len > 0: +# let destText = if card.dest.len > 0: xmltree.escape(card.dest) else: xmltree.escape(cardLink) +
${destText} +#elif card.dest.len > 0: ${xmltree.escape(card.dest)} #end if #end proc # +#proc renderRssArticle(article: ArticlePreview; urlPrefix: string): string = +#let link = urlPrefix & "/i/article/" & $article.tweetId +
+Article
+ +#if article.coverImage.len > 0: + +#end if +#if article.title.len > 0: +# if article.coverImage.len > 0: +
+# end if +${xmltree.escape(article.title)} +#end if +
+#if article.previewText.len > 0: +

${xmltree.escape(article.previewText)}

+#end if +#end proc +# +#proc renderRssPoll(poll: Poll): string = +
+Poll +

+#for i in 0 ..< poll.options.len: +# let perc = if poll.votes > 0: poll.values[i] / poll.votes * 100 else: 0.0 +# let pct = (&"{perc:.0f}").strip(chars={'.'}) +# let line = pct & "% — " & xmltree.escape(poll.options[i]) +${line}
+#end for +#let votesStr = insertSep($poll.votes, ',') +${votesStr} votes • ${xmltree.escape(poll.status)} +

+#end proc +# #proc getTweetsWithPinned(profile: Profile): seq[Tweets] = #result = profile.tweets.content #if profile.pinned.isSome and result.len > 0: @@ -114,7 +160,9 @@ Twitter feed for: ${desc}. Generated by ${getUrlPrefix(cfg)} #let tweet = tweet.retweet.get(tweet) #let urlPrefix = getUrlPrefix(cfg) #let text = replaceUrls(tweet.text, prefs, absolute=urlPrefix) +#if text.len > 0:

${text.replace("\n", "
\n")}

+#end if #if tweet.media.len > 0: # for media in tweet.media: ${renderRssMedia(media, tweet, urlPrefix)} @@ -122,6 +170,12 @@ ${renderRssMedia(media, tweet, urlPrefix)} #elif tweet.card.isSome and tweet.card.get().kind notin {hidden, unknown}: ${renderRssCard(tweet.card.get(), prefs, urlPrefix)} #end if +#if tweet.articlePreview.isSome: +${renderRssArticle(tweet.articlePreview.get(), urlPrefix)} +#end if +#if tweet.poll.isSome: +${renderRssPoll(tweet.poll.get())} +#end if #if tweet.note.len > 0 and not prefs.hideCommunityNotes:

Community note: ${replaceUrls(tweet.note, prefs, absolute=urlPrefix)}

#end if