From ea7222bc860da968a442d7486ae3d9cf0b9a5987 Mon Sep 17 00:00:00 2001 From: Zed Date: Sun, 7 Jun 2020 07:54:20 +0200 Subject: [PATCH] Optimize photo rail parser --- src/parser.nim | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/parser.nim b/src/parser.nim index 6f5b077..014e683 100644 --- a/src/parser.nim +++ b/src/parser.nim @@ -403,21 +403,25 @@ proc parseTimeline*(js: JsonNode; after=""): Timeline = elif "cursor-bottom" in entry: result.bottom = e.getCursor -proc parsePhotoRail*(tl: Timeline): PhotoRail = - for tweet in tl.content: +proc parsePhotoRail*(js: JsonNode): PhotoRail = + let + tweets = ? js{"globalObjects", "tweets"} + instructions = ? js{"timeline", "instructions"} + + if instructions.len == 0 or tweets.len == 0: return + + for e in instructions[0]{"addEntries", "entries"}: if result.len == 16: break + let entry = e{"entryId"}.getStr + if "tweet" in entry: + let id = entry.getId + if id notin tweets: continue + let tweet = parseTweet(tweets{id}) + var url = if tweet.photos.len > 0: tweet.photos[0] + elif tweet.video.isSome: get(tweet.video).thumb + elif tweet.gif.isSome: get(tweet.gif).thumb + elif tweet.card.isSome: get(tweet.card).image + else: "" - let url = if tweet.photos.len > 0: tweet.photos[0] - elif tweet.video.isSome: get(tweet.video).thumb - elif tweet.gif.isSome: get(tweet.gif).thumb - elif tweet.card.isSome: get(tweet.card).image - else: "" - - if url.len == 0: - continue - - result.add GalleryPhoto( - url: url, - tweetId: $tweet.id, - color: "#161616" - ) + if url.len == 0: continue + result.add GalleryPhoto(url: url, tweetId: $tweet.id)