Refactor tweet stats
This commit is contained in:
		
							parent
							
								
									c60280415e
								
							
						
					
					
						commit
						3cedcf29ea
					
				| 
						 | 
				
			
			@ -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 New Issue