瀏覽代碼

Fix crash on unavailable tweets

Zed 3 年之前
父節點
當前提交
2751504d2f
共有 3 個文件被更改,包括 6 次插入3 次删除
  1. 4 1
      src/parser.nim
  2. 1 1
      src/types.nim
  3. 1 1
      tests/test_card.py

+ 4 - 1
src/parser.nim

@@ -372,7 +372,7 @@ proc parsePhotoRail*(js: JsonNode): PhotoRail =
     result.add GalleryPhoto(url: url, tweetId: $t.id)
 
 proc parseGraphTweet(js: JsonNode): Tweet =
-  if js.kind == JNull:
+  if js.kind == JNull or js{"__typename"}.getStr == "TweetUnavailable":
     return Tweet(available: false)
 
   var jsCard = copy(js{"card", "legacy"})
@@ -416,6 +416,9 @@ proc parseGraphConversation*(js: JsonNode; tweetId: string): Conversation =
     if entryId.startsWith("tweet"):
       let tweet = parseGraphTweet(e{"content", "itemContent", "tweet_results", "result"})
 
+      if not tweet.available:
+        tweet.id = parseBiggestInt(entryId.getId())
+
       if $tweet.id == tweetId:
         result.tweet = tweet
       else:

+ 1 - 1
src/types.nim

@@ -177,7 +177,7 @@ type
     available*: bool
     tombstone*: string
     location*: string
-    ## Unused, needed for backwards compat
+    # Unused, needed for backwards compat
     source*: string
     stats*: TweetStats
     retweet*: Option[Tweet]

+ 1 - 1
tests/test_card.py

@@ -42,7 +42,7 @@ no_thumb = [
 
     ['nim_lang/status/1082989146040340480',
      'Nim in 2018: A short recap',
-     'Posted in r/programming by u/miran1',
+     '36 votes and 46 comments so far on Reddit',
      'reddit.com']
 ]