Optimize photo rail parser
This commit is contained in:
		
							parent
							
								
									be74cec48a
								
							
						
					
					
						commit
						ea7222bc86
					
				
					 1 changed files with 20 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue