Preliminary video support

This commit is contained in:
Zed
2019-06-20 17:20:32 +02:00
parent cea5cc0523
commit a9826151e9
4 changed files with 45 additions and 6 deletions

View File

@@ -9,7 +9,7 @@ proc getAttr(node: XmlNode; attr: string; default=""): string =
proc selectAttr(node: XmlNode; selector: string; attr: string; default=""): string =
let res = node.querySelector(selector)
return res.getAttr(attr, default)
if res == nil: "" else: res.getAttr(attr, default)
proc selectText(node: XmlNode; selector: string): string =
let res = node.querySelector(selector)
@@ -63,9 +63,8 @@ proc parseTweet*(tweet: XmlNode): Tweet =
let
text = action.innerText.split()
num = text[0]
act = text[1]
case act
case text[1]
of "replies": result.replies = num
of "likes": result.likes = num
of "retweets": result.retweets = num
@@ -74,9 +73,13 @@ proc parseTweet*(tweet: XmlNode): Tweet =
for photo in tweet.querySelectorAll(".AdaptiveMedia-photoContainer"):
result.photos.add photo.attrs["data-image-url"]
let gif = tweet.selectAttr(".PlayableMedia-player", "style")
if gif != "":
result.gif = gif.replace(re".+thumb/([^\.']+)\.jpg.+", "$1")
let player = tweet.selectAttr(".PlayableMedia-player", "style")
if player.len > 0:
let thumb = player.replace(re".+:url\('([^']+)'\)", "$1")
if "tweet_video" in thumb:
result.gif = thumb.replace(re".+thumb/([^\.']+)\.jpg.+", "$1")
else:
result.videoThumb = thumb
proc parseTweets*(node: XmlNode): Tweets =
if node.isNil: return