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

Cache videos

This commit is contained in:
Zed
2019-08-06 19:02:38 +02:00
parent eeead99e32
commit bfcb74c6cc
4 changed files with 47 additions and 20 deletions

View File

@@ -117,7 +117,7 @@ proc getGuestToken(agent: string; force=false): Future[string] {.async.} =
result = json["guest_token"].to(string)
guestToken = result
proc getVideo*(tweet: Tweet; token, agent: string) {.async.} =
proc getVideoFetch*(tweet: Tweet; token, agent: string) {.async.} =
if tweet.video.isNone(): return
let headers = newHttpHeaders({
@@ -135,16 +135,32 @@ proc getVideo*(tweet: Tweet; token, agent: string) {.async.} =
if getTime() - tokenUpdated > initDuration(seconds=1):
tokenUpdated = getTime()
discard await getGuestToken(agent, force=true)
await getVideo(tweet, guestToken, agent)
await getVideoFetch(tweet, guestToken, agent)
return
if tweet.card.isNone:
tweet.video = some(parseVideo(json))
tweet.video = some(parseVideo(json, tweet.id))
else:
get(tweet.card).video = some(parseVideo(json))
get(tweet.card).video = some(parseVideo(json, tweet.id))
tweet.video = none(Video)
tokenUses.inc
proc getVideoVar*(tweet: Tweet): var Option[Video] =
if tweet.card.isSome():
return get(tweet.card).video
else:
return tweet.video
proc getVideo*(tweet: Tweet; token, agent: string; force=false) {.async.} =
withDb:
try:
getVideoVar(tweet) = some(Video.getOne("videoId = ?", tweet.id))
except KeyError:
await getVideoFetch(tweet, token, agent)
var video = getVideoVar(tweet)
if video.isSome():
get(video).insert()
proc getPoll*(tweet: Tweet; agent: string) {.async.} =
if tweet.poll.isNone(): return