Improve thread/timeline parsing

This commit is contained in:
Zed
2019-06-29 06:31:02 +02:00
parent 49daad3930
commit b31338dcc7
3 changed files with 21 additions and 18 deletions

View File

@@ -81,26 +81,34 @@ proc parseTweet*(node: XmlNode): Tweet =
if quote != nil:
result.quote = some(parseQuote(quote))
proc parseTweets*(node: XmlNode): Tweets =
if node == nil or node.kind == xnText: return
for n in node.selectAll(".stream-item"):
if "account" notin n.child("div").attr("class"):
proc parseTweets*(nodes: XmlNode): Tweets =
if nodes == nil: return
for n in nodes.filterIt(it.kind != xnText):
let class = n.attr("class").toLower()
if "tombstone" in class or "unavailable" in class:
result.add Tweet()
elif "morereplies" notin class:
result.add parseTweet(n)
proc parseConversation*(node: XmlNode): Conversation =
result = Conversation(
tweet: parseTweet(node.select(".permalink-tweet-container")),
before: parseTweets(node.select(".in-reply-to"))
before: parseTweets(node.select(".in-reply-to .stream-items"))
)
let replies = node.select(".replies-to", ".stream-items")
let replies = node.select(".replies-to .stream-items")
if replies == nil: return
for reply in replies.filterIt(it.kind != xnText):
if "selfThread" in reply.attr("class"):
result.after = parseTweets(reply.select(".stream-items"))
else:
let class = reply.attr("class").toLower()
let thread = reply.select(".stream-items")
if "self" in class:
result.after = parseTweets(thread)
elif "lone" in class:
result.replies.add parseTweets(reply)
else:
result.replies.add parseTweets(thread)
proc parseVideo*(node: JsonNode): Video =
let track = node{"track"}