1
0
mirror of https://github.com/zedeus/nitter.git synced 2025-12-13 07:42:48 -05:00

Fix crash on invalid id and non-existent profiles

This commit is contained in:
Zed
2019-06-25 13:07:49 +02:00
parent 684489ee21
commit 8000a814df
2 changed files with 12 additions and 7 deletions

View File

@@ -161,21 +161,23 @@ proc getTimeline*(username: string; after=""): Future[Timeline] {.async.} =
})
var url = timelineUrl % username
if after.len > 0:
url &= "&max_position=" & after
let cleanAfter = after.replace(re"[^\d]*(\d+)[^\d]*", "$1")
if cleanAfter.len > 0:
url &= "&max_position=" & cleanAfter
let json = await fetchJson(base / url, headers)
let html = parseHtml(json["items_html"].to(string))
result = Timeline(
tweets: parseTweets(html),
minId: json["min_position"].to(string),
hasMore: json["has_more_items"].to(bool),
maxId: json.getOrDefault("max_position").getStr(""),
minId: json.getOrDefault("min_position").getStr(""),
)
if json.hasKey("max_position"):
result.maxId = json["max_position"].to(string)
if json["new_latent_count"].to(int) == 0:
return
result.tweets = parseTweets(html)
await getVideos(result.tweets)
proc getTweet*(id: string): Future[Conversation] {.async.} =
@@ -194,5 +196,8 @@ proc getTweet*(id: string): Future[Conversation] {.async.} =
url = base / tweetUrl / id
html = await fetchHtml(url, headers)
if html.isNil:
return
result = parseConversation(html)
await getConversationVideos(result)