mirror of
https://github.com/zedeus/nitter.git
synced 2024-12-23 03:45:36 +00:00
Fix crash on protected profiles
This commit is contained in:
parent
8000a814df
commit
a3285e8410
|
@ -49,11 +49,10 @@ proc fetchJson(url: Uri; headers: HttpHeaders): Future[JsonNode] {.async.} =
|
||||||
var resp = ""
|
var resp = ""
|
||||||
try:
|
try:
|
||||||
resp = await client.getContent($url)
|
resp = await client.getContent($url)
|
||||||
|
result = parseJson(resp)
|
||||||
except:
|
except:
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
return parseJson(resp)
|
|
||||||
|
|
||||||
proc getGuestToken(): Future[string] {.async.} =
|
proc getGuestToken(): Future[string] {.async.} =
|
||||||
if getTime() - tokenUpdated < tokenLifetime:
|
if getTime() - tokenUpdated < tokenLifetime:
|
||||||
return token
|
return token
|
||||||
|
@ -166,7 +165,7 @@ proc getTimeline*(username: string; after=""): Future[Timeline] {.async.} =
|
||||||
url &= "&max_position=" & cleanAfter
|
url &= "&max_position=" & cleanAfter
|
||||||
|
|
||||||
let json = await fetchJson(base / url, headers)
|
let json = await fetchJson(base / url, headers)
|
||||||
let html = parseHtml(json["items_html"].to(string))
|
if json.isNil: return Timeline()
|
||||||
|
|
||||||
result = Timeline(
|
result = Timeline(
|
||||||
hasMore: json["has_more_items"].to(bool),
|
hasMore: json["has_more_items"].to(bool),
|
||||||
|
@ -177,6 +176,7 @@ proc getTimeline*(username: string; after=""): Future[Timeline] {.async.} =
|
||||||
if json["new_latent_count"].to(int) == 0:
|
if json["new_latent_count"].to(int) == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
let html = parseHtml(json["items_html"].to(string))
|
||||||
result.tweets = parseTweets(html)
|
result.tweets = parseTweets(html)
|
||||||
await getVideos(result.tweets)
|
await getVideos(result.tweets)
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#end proc
|
#end proc
|
||||||
#
|
#
|
||||||
#proc renderTimeline*(timeline: Timeline; profile: Profile; beginning: bool): string =
|
#proc renderTimeline*(timeline: Timeline; profile: Profile; beginning: bool): string =
|
||||||
|
#var retweets: Tweets
|
||||||
<div id="tweets">
|
<div id="tweets">
|
||||||
#if profile.protected:
|
#if profile.protected:
|
||||||
<div class="timeline-protected">
|
<div class="timeline-protected">
|
||||||
|
@ -60,18 +61,20 @@
|
||||||
<p class="timeline-protected-explanation">Only confirmed followers have access to @${profile.username}'s Tweets.</p>
|
<p class="timeline-protected-explanation">Only confirmed followers have access to @${profile.username}'s Tweets.</p>
|
||||||
</div>
|
</div>
|
||||||
#end if
|
#end if
|
||||||
|
#
|
||||||
#if not beginning:
|
#if not beginning:
|
||||||
<div class="show-more status-el">
|
<div class="show-more status-el">
|
||||||
<a href="/${profile.username}">Load newest tweets</a>
|
<a href="/${profile.username}">Load newest tweets</a>
|
||||||
</div>
|
</div>
|
||||||
#end if
|
#end if
|
||||||
#var retweets: Tweets
|
#
|
||||||
#for tweet in timeline.tweets:
|
#for tweet in timeline.tweets:
|
||||||
#if tweet in retweets: continue
|
#if tweet in retweets: continue
|
||||||
#elif tweet.retweetBy.isSome: retweets.add tweet
|
#elif tweet.retweetBy.isSome: retweets.add tweet
|
||||||
#end if
|
#end if
|
||||||
${renderTweet(tweet, "timeline-tweet")}
|
${renderTweet(tweet, "timeline-tweet")}
|
||||||
#end for
|
#end for
|
||||||
|
#
|
||||||
#if timeline.hasMore:
|
#if timeline.hasMore:
|
||||||
<div class="show-more">
|
<div class="show-more">
|
||||||
<a href="/${profile.username}?after=${timeline.minId}">Load older tweets</a>
|
<a href="/${profile.username}?after=${timeline.minId}">Load older tweets</a>
|
||||||
|
@ -81,6 +84,7 @@
|
||||||
<h2 class="timeline-end" style="text-align: center;">No more tweets.</h2>
|
<h2 class="timeline-end" style="text-align: center;">No more tweets.</h2>
|
||||||
</div>
|
</div>
|
||||||
#end if
|
#end if
|
||||||
|
#
|
||||||
#if timeline.tweets.len == 0:
|
#if timeline.tweets.len == 0:
|
||||||
<div class="timeline-protected">
|
<div class="timeline-protected">
|
||||||
<h2 class="timeline-protected-header" style="text-align: center;">No tweets found.</h2>
|
<h2 class="timeline-protected-header" style="text-align: center;">No tweets found.</h2>
|
||||||
|
|
Loading…
Reference in a new issue