mirror of
https://github.com/zedeus/nitter.git
synced 2024-12-13 03:26:30 +00:00
Refactor tweet stats
This commit is contained in:
parent
c60280415e
commit
3cedcf29ea
4 changed files with 18 additions and 17 deletions
|
@ -63,11 +63,11 @@ proc parseTweet*(node: XmlNode): Tweet =
|
|||
time: getTimestamp(tweet),
|
||||
shortTime: getShortTime(tweet),
|
||||
profile: parseTweetProfile(tweet),
|
||||
stats: parseTweetStats(tweet),
|
||||
pinned: "pinned" in tweet.attr("class"),
|
||||
available: true
|
||||
)
|
||||
|
||||
result.getTweetStats(tweet)
|
||||
result.getTweetMedia(tweet)
|
||||
result.getTweetCards(tweet)
|
||||
|
||||
|
|
|
@ -111,16 +111,14 @@ proc getIntentStats*(profile: var Profile; node: XmlNode) =
|
|||
of "followers": profile.followers = text
|
||||
of "following": profile.following = text
|
||||
|
||||
proc getTweetStats*(tweet: Tweet; node: XmlNode) =
|
||||
tweet.replies = "0"
|
||||
tweet.retweets = "0"
|
||||
tweet.likes = "0"
|
||||
proc parseTweetStats*(node: XmlNode): TweetStats =
|
||||
result = TweetStats(replies: "0", retweets: "0", likes: "0")
|
||||
for action in node.selectAll(".ProfileTweet-actionCountForAria"):
|
||||
let text = action.innerText.split()
|
||||
case text[1][0 .. 2]
|
||||
of "ret": tweet.retweets = text[0]
|
||||
of "rep": tweet.replies = text[0]
|
||||
of "lik": tweet.likes = text[0]
|
||||
of "ret": result.retweets = text[0]
|
||||
of "rep": result.replies = text[0]
|
||||
of "lik": result.likes = text[0]
|
||||
|
||||
proc getGif(player: XmlNode): Gif =
|
||||
let
|
||||
|
|
|
@ -66,23 +66,26 @@ type
|
|||
by*: string
|
||||
id*: string
|
||||
|
||||
TweetStats* = object
|
||||
replies*: string
|
||||
retweets*: string
|
||||
likes*: string
|
||||
|
||||
Tweet* = ref object
|
||||
id*: string
|
||||
profile*: Profile
|
||||
text*: string
|
||||
time*: Time
|
||||
shortTime*: string
|
||||
replies*: string
|
||||
retweets*: string
|
||||
likes*: string
|
||||
available*: bool
|
||||
pinned*: bool
|
||||
stats*: TweetStats
|
||||
retweet*: Option[Retweet]
|
||||
quote*: Option[Quote]
|
||||
gif*: Option[Gif]
|
||||
video*: Option[Video]
|
||||
photos*: seq[string]
|
||||
poll*: Option[Poll]
|
||||
available*: bool
|
||||
|
||||
Thread* = object
|
||||
tweets*: seq[Tweet]
|
||||
|
|
|
@ -132,11 +132,11 @@
|
|||
</div>
|
||||
#end proc
|
||||
#
|
||||
#proc renderStats(tweet: Tweet): string =
|
||||
#proc renderStats(stats: TweetStats): string =
|
||||
<div class="tweet-stats">
|
||||
<span class="tweet-stat">💬 ${$tweet.replies}</span>
|
||||
<span class="tweet-stat">🔄 ${$tweet.retweets}</span>
|
||||
<span class="tweet-stat">👍 ${$tweet.likes}</span>
|
||||
<span class="tweet-stat">💬 ${$stats.replies}</span>
|
||||
<span class="tweet-stat">🔄 ${$stats.retweets}</span>
|
||||
<span class="tweet-stat">👍 ${$stats.likes}</span>
|
||||
</div>
|
||||
#end proc
|
||||
#
|
||||
|
@ -163,7 +163,7 @@
|
|||
#elif tweet.poll.isSome:
|
||||
${renderPoll(tweet.poll.get())}
|
||||
#end if
|
||||
${renderStats(tweet)}
|
||||
${renderStats(tweet.stats)}
|
||||
</div>
|
||||
</div>
|
||||
#else:
|
||||
|
|
Loading…
Reference in a new issue