diff --git a/src/query.nim b/src/query.nim index d4f9578..203d00c 100644 --- a/src/query.nim +++ b/src/query.nim @@ -3,7 +3,6 @@ import strutils, strformat, sequtils, tables, uri import types const - # separators = @["AND", "OR"] validFilters* = @[ "media", "images", "twimg", "videos", "native_video", "consumer_video", "pro_video", @@ -30,9 +29,6 @@ proc initQuery*(pms: Table[string, string]; name=""): Query = if name.len > 0: result.fromUser = name.split(",") - if @"e-nativeretweets".len == 0: - result.includes.add "nativeretweets" - proc getMediaQuery*(name: string): Query = Query( kind: media, @@ -44,11 +40,10 @@ proc getMediaQuery*(name: string): Query = proc getReplyQuery*(name: string): Query = Query( kind: replies, - includes: @["nativeretweets"], fromUser: @[name] ) -proc genQueryParam*(query: Query; rewriteReplies=true): string = +proc genQueryParam*(query: Query): string = var filters: seq[string] param: string @@ -68,6 +63,9 @@ proc genQueryParam*(query: Query; rewriteReplies=true): string = if i < query.fromUser.high: param &= "OR " + if "nativeretweets" notin query.excludes: + param &= "include:nativeretweets " + for f in query.filters: filters.add "filter:" & f for e in query.excludes: diff --git a/src/routes/rss.nim b/src/routes/rss.nim index 5ace083..bc0d067 100644 --- a/src/routes/rss.nim +++ b/src/routes/rss.nim @@ -21,8 +21,9 @@ proc showRss*(req: Request; hostname: string; query: Query): Future[Rss] {.async (profile, timeline) = await fetchSingleTimeline(after, query, skipRail=true) else: - let multiQuery = query.getMultiQuery(names) - timeline = await getSearch[Tweet](multiQuery, after) + var q = query + q.fromUser = names + timeline = await getSearch[Tweet](q, after) # this is kinda dumb profile = Profile( username: name, diff --git a/src/routes/search.nim b/src/routes/search.nim index 683bbc4..9eba1ea 100644 --- a/src/routes/search.nim +++ b/src/routes/search.nim @@ -13,7 +13,7 @@ export search proc createSearchRouter*(cfg: Config) = router search: get "/search/?": - if @"q".len > 200: + if @"q".len > 500: resp Http400, showError("Search input too long.", cfg) let diff --git a/src/routes/timeline.nim b/src/routes/timeline.nim index edfaea2..183a1e2 100644 --- a/src/routes/timeline.nim +++ b/src/routes/timeline.nim @@ -73,12 +73,6 @@ proc fetchSingleTimeline*(after: string; query: Query; skipRail=false): return (profile, timeline, await rail) -proc getMultiQuery*(q: Query; names: seq[string]): Query = - result = q - result.fromUser = names - if q.kind == posts and "replies" notin q.excludes: - result.excludes.add "replies" - proc get*(req: Request; key: string): string = params(req).getOrDefault(key) @@ -118,7 +112,7 @@ proc createTimelineRouter*(cfg: Config) = var query = request.getQuery(@"tab", @"name") if names.len != 1: - query = query.getMultiQuery(names) + query.fromUser = names if @"scroll".len > 0: if query.fromUser.len != 1: