From 813a71e4d33aab8a3847857444921a61b37117db Mon Sep 17 00:00:00 2001 From: PrivacyDev Date: Sat, 22 Jul 2023 11:48:49 -0400 Subject: [PATCH] fixed build errors --- src/parser.nim | 146 ++++++++++++++++++++++++------------------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/src/parser.nim b/src/parser.nim index c570194..1a914b0 100644 --- a/src/parser.nim +++ b/src/parser.nim @@ -1,5 +1,5 @@ # SPDX-License-Identifier: AGPL-3.0-only -import strutils, options, times, math +import strutils, options, tables, times, math import packedjson, packedjson/deserialiser import types, parserutils, utils import experimental/parser/unifiedcard @@ -320,94 +320,94 @@ proc parseTweetSearch*(js: JsonNode; after=""): Timeline = if result.content.len > 0: result.bottom = $(result.content[^1][0].id - 1) -# proc finalizeTweet(global: GlobalObjects; id: string): Tweet = -# let intId = if id.len > 0: parseBiggestInt(id) else: 0 -# result = global.tweets.getOrDefault(id, Tweet(id: intId)) +proc finalizeTweet(global: GlobalObjects; id: string): Tweet = + let intId = if id.len > 0: parseBiggestInt(id) else: 0 + result = global.tweets.getOrDefault(id, Tweet(id: intId)) -# if result.quote.isSome: -# let quote = get(result.quote).id -# if $quote in global.tweets: -# result.quote = some global.tweets[$quote] -# else: -# result.quote = some Tweet() + if result.quote.isSome: + let quote = get(result.quote).id + if $quote in global.tweets: + result.quote = some global.tweets[$quote] + else: + result.quote = some Tweet() -# if result.retweet.isSome: -# let rt = get(result.retweet).id -# if $rt in global.tweets: -# result.retweet = some finalizeTweet(global, $rt) -# else: -# result.retweet = some Tweet() + if result.retweet.isSome: + let rt = get(result.retweet).id + if $rt in global.tweets: + result.retweet = some finalizeTweet(global, $rt) + else: + result.retweet = some Tweet() -# proc parsePin(js: JsonNode; global: GlobalObjects): Tweet = -# let pin = js{"pinEntry", "entry", "entryId"}.getStr -# if pin.len == 0: return +proc parsePin(js: JsonNode; global: GlobalObjects): Tweet = + let pin = js{"pinEntry", "entry", "entryId"}.getStr + if pin.len == 0: return -# let id = pin.getId -# if id notin global.tweets: return + let id = pin.getId + if id notin global.tweets: return -# global.tweets[id].pinned = true -# return finalizeTweet(global, id) + global.tweets[id].pinned = true + return finalizeTweet(global, id) -# proc parseGlobalObjects(js: JsonNode): GlobalObjects = -# result = GlobalObjects() -# let -# tweets = ? js{"globalObjects", "tweets"} -# users = ? js{"globalObjects", "users"} +proc parseGlobalObjects(js: JsonNode): GlobalObjects = + result = GlobalObjects() + let + tweets = ? js{"globalObjects", "tweets"} + users = ? js{"globalObjects", "users"} -# for k, v in users: -# result.users[k] = parseUser(v, k) + for k, v in users: + result.users[k] = parseUser(v, k) -# for k, v in tweets: -# var tweet = parseTweet(v, v{"card"}) -# if tweet.user.id in result.users: -# tweet.user = result.users[tweet.user.id] -# result.tweets[k] = tweet + for k, v in tweets: + var tweet = parseTweet(v, v{"card"}) + if tweet.user.id in result.users: + tweet.user = result.users[tweet.user.id] + result.tweets[k] = tweet -# proc parseInstructions(res: var Profile; global: GlobalObjects; js: JsonNode) = -# if js.kind != JArray or js.len == 0: -# return +proc parseInstructions(res: var Profile; global: GlobalObjects; js: JsonNode) = + if js.kind != JArray or js.len == 0: + return -# for i in js: -# if res.tweets.beginning and i{"pinEntry"}.notNull: -# with pin, parsePin(i, global): -# res.pinned = some pin + for i in js: + if res.tweets.beginning and i{"pinEntry"}.notNull: + with pin, parsePin(i, global): + res.pinned = some pin -# with r, i{"replaceEntry", "entry"}: -# if "top" in r{"entryId"}.getStr: -# res.tweets.top = r.getCursor -# elif "bottom" in r{"entryId"}.getStr: -# res.tweets.bottom = r.getCursor + with r, i{"replaceEntry", "entry"}: + if "top" in r{"entryId"}.getStr: + res.tweets.top = r.getCursor + elif "bottom" in r{"entryId"}.getStr: + res.tweets.bottom = r.getCursor -# proc parseTimeline*(js: JsonNode; after=""): Profile = -# result = Profile(tweets: Timeline(beginning: after.len == 0)) -# let global = parseGlobalObjects(? js) +proc parseTimeline*(js: JsonNode; after=""): Profile = + result = Profile(tweets: Timeline(beginning: after.len == 0)) + let global = parseGlobalObjects(? js) -# let instructions = ? js{"timeline", "instructions"} -# if instructions.len == 0: return + let instructions = ? js{"timeline", "instructions"} + if instructions.len == 0: return -# result.parseInstructions(global, instructions) + result.parseInstructions(global, instructions) -# var entries: JsonNode -# for i in instructions: -# if "addEntries" in i: -# entries = i{"addEntries", "entries"} + var entries: JsonNode + for i in instructions: + if "addEntries" in i: + entries = i{"addEntries", "entries"} -# for e in ? entries: -# let entry = e{"entryId"}.getStr -# if "tweet" in entry or entry.startsWith("sq-I-t") or "tombstone" in entry: -# let tweet = finalizeTweet(global, e.getEntryId) -# if not tweet.available: continue -# result.tweets.content.add tweet -# elif "cursor-top" in entry: -# result.tweets.top = e.getCursor -# elif "cursor-bottom" in entry: -# result.tweets.bottom = e.getCursor -# elif entry.startsWith("sq-cursor"): -# with cursor, e{"content", "operation", "cursor"}: -# if cursor{"cursorType"}.getStr == "Bottom": -# result.tweets.bottom = cursor{"value"}.getStr -# else: -# result.tweets.top = cursor{"value"}.getStr + for e in ? entries: + let entry = e{"entryId"}.getStr + if "tweet" in entry or entry.startsWith("sq-I-t") or "tombstone" in entry: + let tweet = finalizeTweet(global, e.getEntryId) + if not tweet.available: continue + result.tweets.content.add tweet + elif "cursor-top" in entry: + result.tweets.top = e.getCursor + elif "cursor-bottom" in entry: + result.tweets.bottom = e.getCursor + elif entry.startsWith("sq-cursor"): + with cursor, e{"content", "operation", "cursor"}: + if cursor{"cursorType"}.getStr == "Bottom": + result.tweets.bottom = cursor{"value"}.getStr + else: + result.tweets.top = cursor{"value"}.getStr proc parsePhotoRail*(js: JsonNode): PhotoRail = with error, js{"error"}: