Support profile image color parsing in wip parser

This commit is contained in:
Zed 2022-01-26 18:24:34 +01:00
parent a54d6aa1eb
commit 49a2fbb070
2 changed files with 19 additions and 1 deletions

View File

@ -1,4 +1,4 @@
import std/[algorithm, unicode, re, strutils]
import std/[algorithm, unicode, re, strutils, strformat]
import jsony
import utils, slices
import ../types/user as userType
@ -34,9 +34,14 @@ proc expandUserEntities(user: var User; raw: RawUser) =
proc getBanner(user: RawUser): string =
if user.profileBannerUrl.len > 0:
return user.profileBannerUrl & "/1500x500"
if user.profileLinkColor.len > 0:
return '#' & user.profileLinkColor
if user.profileImageExtensions.mediaColor.r.ok.palette.len > 0:
let color = user.profileImageExtensions.mediaColor.r.ok.palette[0].rgb
return &"#{color.red:02x}{color.green:02x}{color.blue:02x}"
proc toUser*(raw: RawUser): User =
result = User(
id: raw.idStr,

View File

@ -18,6 +18,7 @@ type
protected*: bool
profileBannerUrl*: string
profileImageUrlHttps*: string
profileImageExtensions*: ImageExtensions
profileLinkColor*: string
pinnedTweetIdsStr*: seq[string]
@ -27,3 +28,15 @@ type
Urls* = object
urls*: seq[Url]
ImageExtensions = object
mediaColor*: tuple[r: Ok]
Ok = object
ok*: Palette
Palette = object
palette*: seq[tuple[rgb: Color]]
Color* = object
red*, green*, blue*: int