Ver Fonte

Add support for "vmap" videos

Zed há 7 anos atrás
pai
commit
13dc5efcf6
2 ficheiros alterados com 28 adições e 10 exclusões
  1. 22 8
      src/parser.nim
  2. 6 2
      src/types.nim

+ 22 - 8
src/parser.nim

@@ -100,11 +100,25 @@ proc parseConversation*(node: XmlNode): Conversation =
 
 proc parseVideo*(node: JsonNode): Video =
   let track = node{"track"}
-  result = Video(
-    thumb: node["posterImage"].to(string),
-    id: track["contentId"].to(string),
-    length: track["durationMs"].to(int),
-    views: track["viewCount"].to(string),
-    url: track["playbackUrl"].to(string),
-    available: track{"mediaAvailability"}["status"].to(string) == "available"
-  )
+  let contentType = track["contentType"].to(string)
+
+  case contentType
+  of "media_entity":
+    result = Video(
+      contentType: m3u8,
+      thumb: node["posterImage"].to(string),
+      id: track["contentId"].to(string),
+      length: track["durationMs"].to(int),
+      views: track["viewCount"].to(string),
+      url: track["playbackUrl"].to(string),
+      available: track{"mediaAvailability"}["status"].to(string) == "available"
+    )
+  of "vmap":
+    result = Video(
+      contentType: vmap,
+      thumb: node["posterImage"].to(string),
+      url: track["vmapUrl"].to(string),
+      length: track["durationMs"].to(int),
+    )
+  else:
+    echo "Can't parse video of type ", contentType

+ 6 - 2
src/types.nim

@@ -31,12 +31,16 @@ db("cache.db", "", "", ""):
         .}: Time
 
 type
+  VideoType* = enum
+    vmap, m3u8
+
   Video* = object
-    id*: string
+    contentType*: VideoType
     url*: string
     thumb*: string
-    length*: int
+    id*: string
     views*: string
+    length*: int
     available*: bool
 
   Gif* = object