Support title and description for videos
This commit is contained in:
parent
02b206078d
commit
371a2473bc
|
@ -3,6 +3,10 @@ import norm/sqlite
|
|||
|
||||
import types, api/profile
|
||||
|
||||
template safeAddColumn(field: typedesc): untyped =
|
||||
try: field.addColumn
|
||||
except DbError: discard
|
||||
|
||||
dbFromTypes("cache.db", "", "", "", [Profile, Video])
|
||||
|
||||
withDb:
|
||||
|
@ -10,6 +14,8 @@ withDb:
|
|||
createTables()
|
||||
except DbError:
|
||||
discard
|
||||
Video.title.safeAddColumn
|
||||
Video.description.safeAddColumn
|
||||
|
||||
var profileCacheTime = initDuration(minutes=10)
|
||||
|
||||
|
|
|
@ -202,11 +202,14 @@ proc getTweetMedia*(tweet: Tweet; node: XmlNode) =
|
|||
if "gif" in player.attr("class"):
|
||||
tweet.gif = some getGif(player.select(".PlayableMedia-player"))
|
||||
elif "video" in player.attr("class"):
|
||||
let thumb = player.selectAttr(".PlayableMedia-player", "style").split("'")
|
||||
let
|
||||
thumb = player.selectAttr(".PlayableMedia-player", "style").split("'")
|
||||
desc = player.selectText(".PlayableMedia-description")
|
||||
title = player.selectText(".PlayableMedia-title")
|
||||
var video = Video(title: title, description: desc)
|
||||
if thumb.len > 1:
|
||||
tweet.video = some Video(thumb: thumb[^2])
|
||||
else:
|
||||
tweet.video = some Video()
|
||||
video.thumb = thumb[^2]
|
||||
tweet.video = some video
|
||||
|
||||
proc getQuoteMedia*(quote: var Quote; node: XmlNode) =
|
||||
if node.select(".QuoteTweet--sensitive") != nil:
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
overflow: hidden;
|
||||
color: inherit;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-decoration: none !important;
|
||||
|
||||
&:hover {
|
||||
|
|
|
@ -13,6 +13,7 @@ video {
|
|||
|
||||
.video-container {
|
||||
max-height: 530px;
|
||||
margin: 0;
|
||||
|
||||
img {
|
||||
height: 100%;
|
||||
|
|
|
@ -44,6 +44,8 @@ dbTypes:
|
|||
views*: string
|
||||
available*: bool
|
||||
reason*: string
|
||||
title*: string
|
||||
description*: string
|
||||
playbackType* {.
|
||||
dbType: "STRING"
|
||||
parseIt: parseEnum[VideoType](it.s)
|
||||
|
|
|
@ -76,8 +76,11 @@ proc renderVideoUnavailable(video: Video): VNode =
|
|||
p: text "This media is unavailable"
|
||||
|
||||
proc renderVideo(video: Video; prefs: Prefs; path: string): VNode =
|
||||
let container =
|
||||
if video.description.len > 0 or video.title.len > 0: " card-container"
|
||||
else: ""
|
||||
buildHtml(tdiv(class="attachments")):
|
||||
tdiv(class="gallery-video"):
|
||||
tdiv(class="gallery-video" & container):
|
||||
tdiv(class="attachment video-container"):
|
||||
let thumb = getPicUrl(video.thumb)
|
||||
if not video.available:
|
||||
|
@ -99,6 +102,11 @@ proc renderVideo(video: Video; prefs: Prefs; path: string): VNode =
|
|||
verbatim "<div class=\"video-overlay\" onclick=\"playVideo(this)\">"
|
||||
verbatim "<div class=\"overlay-circle\">"
|
||||
verbatim "<span class=\"overlay-triangle\"</span></div></div>"
|
||||
if container.len > 0:
|
||||
tdiv(class="card-content"):
|
||||
h2(class="card-title"): text video.title
|
||||
if video.description.len > 0:
|
||||
p(class="card-description"): text video.description
|
||||
|
||||
proc renderGif(gif: Gif; prefs: Prefs): VNode =
|
||||
buildHtml(tdiv(class="attachments media-gif")):
|
||||
|
|
Loading…
Reference in New Issue