#? stdtmpl(subsChar = '$', metaChad = '#') #import strutils, xmltree, strformat, options #import ../types, ../utils, ../formatters # #proc getTitle(tweet: Tweet; prefs: Prefs; 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 #result &= xmltree.escape(stripHtml(tweet.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 renderRssTweet(tweet: Tweet; prefs: Prefs; hostname: string): string = #let tweet = tweet.retweet.get(tweet) #let text = replaceUrl(tweet.text, prefs, absolute=hostname) #if tweet.quote.isSome and get(tweet.quote).available: #let quoteLink = hostname & getLink(get(tweet.quote))

${text}
${quoteLink}

#else:

${text}

#end if #if tweet.photos.len > 0: #for photo in tweet.photos: #end for #elif tweet.video.isSome: #elif tweet.gif.isSome: #let thumb = &"https://{hostname}{getPicUrl(get(tweet.gif).thumb)}" #let url = &"https://{hostname}{getPicUrl(get(tweet.gif).url)}" #end if #end proc # #proc renderRssTweets(tweets: seq[Tweet]; prefs: Prefs; hostname: string): string = #var links: seq[string] #for t in tweets: #let retweet = if t.retweet.isSome: t.profile.username else: "" #let tweet = if retweet.len > 0: t.retweet.get else: t #let link = getLink(tweet) #if link in links: continue #end if #links.add link ${getTitle(tweet, prefs, retweet)} @${tweet.profile.username} ${getRfc822Time(tweet)} https://${hostname & link} https://${hostname & link} #end for #end proc # #proc renderTimelineRss*(timeline: Timeline; profile: Profile; hostname: string; multi=false): string = #let prefs = Prefs(replaceTwitter: hostname, replaceYouTube: "invidious.snopyta.org") #result = "" #let user = (if multi: "" else: "@") & profile.username #var title = profile.fullname #if not multi: title &= " / " & user #end if #title = xmltree.escape(title) ${title} https://${hostname}/${profile.username} Twitter feed for: ${user}. Generated by ${hostname} en-us 40 ${title} https://${hostname}/${profile.username} https://${hostname}${getPicUrl(profile.getUserPic(style="_400x400"))} 128 128 # if timeline.content.len > 0: ${renderRssTweets(timeline.content, prefs, hostname)} #end if #end proc # #proc renderListRss*(tweets: seq[Tweet]; list: List; hostname: string): string = #let prefs = Prefs(replaceTwitter: hostname, replaceYouTube: "invidious.snopyta.org") #let link = &"https://{hostname}/{list.username}/lists/{list.name}" #result = "" ${xmltree.escape(list.name)} / @${list.username} ${link} Twitter feed for: ${list.name} by @${list.username}. Generated by ${hostname} en-us 40 ${renderRssTweets(tweets, prefs, hostname)} #end proc # #proc renderSearchRss*(tweets: seq[Tweet]; name, param, hostname: string): string = #let prefs = Prefs(replaceTwitter: hostname, replaceYouTube: "invidious.snopyta.org") #let link = &"https://{hostname}/search" #let escName = xmltree.escape(name) #result = "" Search results for "${escName}" ${link} Twitter feed for search "${escName}". Generated by ${hostname} en-us 40 ${renderRssTweets(tweets, prefs, hostname)} #end proc