#? stdtmpl(subsChar = '$', metaChar = '#') ## SPDX-License-Identifier: AGPL-3.0-only #import strutils, xmltree, strformat, options, unicode, algorithm #import ../types, ../utils, ../formatters, ../prefs # #proc getTitle(tweet: Tweet; retweet: string): string = #if tweet.pinned: result = "Pinned: " #elif retweet.len > 0: result = &"RT by @{retweet}: " #elif tweet.reply.len > 0: result = &"R to @{tweet.reply[0]}: " #end if #var text = stripHtml(tweet.text) ##if unicode.runeLen(text) > 32: ## text = unicode.runeSubStr(text, 0, 32) & "..." ##end if #result &= xmltree.escape(text) #if result.len > 0: return #end if #if tweet.photos.len > 0: # result &= "Image" #elif tweet.video.isSome: # result &= "Video" #elif tweet.gif.isSome: # result &= "Gif" #end if #end proc # #proc getDescription(desc: string; cfg: Config): string = Twitter feed for: ${desc}. Generated by ${cfg.hostname} #end proc # ## Copied from views/tweet.nim #proc isPlaybackEnabled(prefs: Prefs; playbackType: VideoType): bool = # case playbackType # of mp4: return prefs.mp4Playback # of m3u8, vmap: return prefs.hlsPlayback # end case #end proc # #proc hasMp4Url(video: Video): bool = # video.variants.anyIt(it.contentType == mp4) #end proc # #proc getVideoDisabledText(playbackType: VideoType): string = # case playbackType # of mp4: mp4 playback disabled in preferences # of m3u8, vmap: hls playback disabled in preferences # end case #end proc # #proc getVideoUnavailableText(video: Video): string = # case video.reason # of "dmcaed": This media has been disabled in response to a report by the copyright owner # else: This media is unavailable # end case #end proc # #proc renderRssTweet(tweet: Tweet; cfg: Config; prefs: Prefs): string = #let tweet = tweet.retweet.get(tweet) #let urlPrefix = getUrlPrefix(cfg) #let text = replaceUrls(tweet.text, defaultPrefs, absolute=urlPrefix)
${text.replace("\n", "
\n")}
${getVideoUnavailableText(video)}
# elif not isPlaybackEnabled(prefs, playbackType):${getVideoDisabledText(playbackType)}
# else: # let vars = video.variants.filterIt(it.contentType == playbackType) # let vidUrl = vars.sortedByIt(it.resolution)[^1].url # let source = if prefs.proxyVideos: getVidUrl(vidUrl) # else: vidUrl # let mutedAttribute = if prefs.muteVideos: "muted=\"\"" # else: "" # end if #elif tweet.gif.isSome: # let thumb = &"{urlPrefix}{getPicUrl(get(tweet.gif).thumb)}" # let url = &"{urlPrefix}{getPicUrl(get(tweet.gif).url)}" #elif tweet.card.isSome: # let card = tweet.card.get() # if card.image.len > 0: # end if #end if #end proc # #proc renderRssTweets(tweets: seq[Tweets]; cfg: Config; prefs: Prefs; userId=""): string = #let urlPrefix = getUrlPrefix(cfg) #var links: seq[string] #for thread in tweets: # for tweet in thread: # if userId.len > 0 and tweet.user.id != userId: continue # end if # # let retweet = if tweet.retweet.isSome: tweet.user.username else: "" # let tweet = if retweet.len > 0: tweet.retweet.get else: tweet # let link = getLink(tweet) # if link in links: continue # end if # links.add link