Преглед изворни кода

Support profile image color parsing in wip parser

Zed пре 4 година
родитељ
комит
49a2fbb070
2 измењених фајлова са 19 додато и 1 уклоњено
  1. 6 1
      src/experimental/parser/user.nim
  2. 13 0
      src/experimental/types/user.nim

+ 6 - 1
src/experimental/parser/user.nim

@@ -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,

+ 13 - 0
src/experimental/types/user.nim

@@ -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