From 80d6191e749636e0f0f28e6ac6e70bbce481f9c0 Mon Sep 17 00:00:00 2001 From: Zed Date: Sat, 21 Dec 2019 05:07:50 +0100 Subject: [PATCH] Support media tags --- public/css/fontello.css | 13 +++++++------ public/fonts/fontello.eot | Bin 9992 -> 9240 bytes public/fonts/fontello.svg | 10 +++------- public/fonts/fontello.ttf | Bin 9824 -> 9072 bytes public/fonts/fontello.woff | Bin 6332 -> 5844 bytes public/fonts/fontello.woff2 | Bin 5308 -> 4880 bytes src/parser.nim | 1 + src/parserutils.nim | 11 ++++++++++- src/sass/tweet/_base.scss | 18 ++++++++++++++++++ src/types.nim | 1 + src/views/tweet.nim | 12 ++++++++++++ 11 files changed, 52 insertions(+), 14 deletions(-) diff --git a/public/css/fontello.css b/public/css/fontello.css index a486b4b..447e9bb 100644 --- a/public/css/fontello.css +++ b/public/css/fontello.css @@ -1,11 +1,11 @@ @font-face { font-family: 'fontello'; - src: url('/fonts/fontello.eot?6327398'); - src: url('/fonts/fontello.eot?6327398#iefix') format('embedded-opentype'), - url('/fonts/fontello.woff2?6327398') format('woff2'), - url('/fonts/fontello.woff?6327398') format('woff'), - url('/fonts/fontello.ttf?6327398') format('truetype'), - url('/fonts/fontello.svg?6327398#fontello') format('svg'); + src: url('/fonts/fontello.eot?63207931'); + src: url('/fonts/fontello.eot?63207931#iefix') format('embedded-opentype'), + url('/fonts/fontello.woff2?63207931') format('woff2'), + url('/fonts/fontello.woff?63207931') format('woff'), + url('/fonts/fontello.ttf?63207931') format('truetype'), + url('/fonts/fontello.svg?63207931#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -49,6 +49,7 @@ .icon-retweet:before { content: '\e80d'; } /* '' */ .icon-search:before { content: '\e80e'; } /* '' */ .icon-pin:before { content: '\e80f'; } /* '' */ +.icon-user:before { content: '\e810'; } /* '' */ .icon-heart:before { content: '\e811'; } /* '' */ .icon-cog:before { content: '\e812'; } /* '' */ .icon-rss-feed:before { content: '\e813'; } /* '' */ diff --git a/public/fonts/fontello.eot b/public/fonts/fontello.eot index 0192b84e52c1f7d70beff3b009ecb5508d0925d0..377b209a7ea5d0722262f6ea968278531ff214d3 100644 GIT binary patch delta 653 zcmXw$T}V@59LAsbJ!i-1Mt;nl*)Y>>PSH(NO1l`#Vu=+eAfGtRQV^obLXL7Tn z#N&WTjfK)G`BlVv-xy0=j^1m1z6^-_fE|PJNNCKKTfG6)OjF(yC!_3|@Q8SY*cDG^ z#*d!pD{YeTiHu-E35QxoU2}lNN8FJNjjOE5^o2M<+;~2ejI2J`-9&tgUhuW5q%+p{ zuXX|QDatq0R7CxJp#3G_C~6DrBui+&nV+xEYd+qxKMO`fz$Aq2orko7zBLOGL*z@O z47_MrpD&ewBK|2Qj53e*lzXWtX&Zd&j$o=Z>u0g;CvB|Smhhu|9#qmPZ#KNCn4+62 zJ>dnx3@aMY+~P?1PLF1{XY0j_=}5{z|2vft!b;4T UN~gWiNMuYrdoGp#V0WAU0%^XX4FCWD delta 1397 zcmYjRTWk|o5S_XA?p?=D>?F2#laPmBS*J~i5+}B)2*!B;21VwT5+0R_v7JW~W8=6K zs*02fsTD#I)T#s$l@L;2d?2;?MOB6Rfly2PQ?(TpLa3EOzfhz0i#QzzXseyk+%t3U z?9AD@dpY)gT$=m<6UHSO66fxBE?DXluFiCzhn1BIWwm%tva%DxVtpO~j)=R(f6*p1%gcO`)uRK%G09M2^r9%(JkLCpqur|a0;QQ&#I=CPj-J+o) zEXWiyBI7$iaD@vc3ku^3n+1lP;Vf_t2Pu1X3=nH@r@g`6Zm*Y0Q)gX2^}fW)NG~qlz0l5L@qC;F6W^o3$`8tk z@&ks3^>B8>;+@6C^!CkXUx~*H@%Yj}t&=U#Osu`fZ}2|)`iEgCx;50}Zxe#=-!;e; z!FB*~n*%O*4um3dRKJp=>XD5BV|Wmd;pnSl+eQMtFX;}c=u~-xwQ{TIX1YVybSgd^ z;ae~irXIXDj9`#@QKkB8+?suis->ao3rfU)_9rl*Qh; zar?%*+iwZgv2#y)uRr3c_u82hs%EN{lKYx{lQEnbwK{~E)wf`ktdi(y5~xZv_q6qI zwQ`dpF>&;Nxkg0%tuJ3!xMFGVYur9M>a{evxGK5H+$y<5yXxB&kX7bwHJVTwj4qGh zQgLmnL&-&3m+GeOB|vF+{iAgvzuDAiDSok!K7 zcQ2s7!lB`J5`og|@wZ}M#Ss4y?hl5-bq=YzJw~vuKNNNcG`Yf} z--eb=9ktb}t$Lt6y4O~-?^xt`d{Z-eKS>O)J|0dahM7K`z_L}*I-RO-q_@^0hJwv) zQ4d=2<)J}U;lAzw3w8`0nCP}OUR+%sO5nsGYp9s@Yf6`Px%2+Hqqc#+z`~a+_w1M3 z7uN4v#g@kGVQeT}u#YrVf-jVPP3zA|uaO=qJ+k}tZ={eX - + - + - - - - - + \ No newline at end of file diff --git a/public/fonts/fontello.ttf b/public/fonts/fontello.ttf index 0aebada0944147424a00d3524cdd2525dcb181e2..b13e72b6370f770315e70c0752e07effb40181e5 100644 GIT binary patch delta 636 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 delta 4165 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 PQq9;KP)SO@lUNpfZ8Wfg diff --git a/public/fonts/fontello.woff2 b/public/fonts/fontello.woff2 index 9f23ca13ee5212e099c8c909d7b6e53099280376..e09a239f0e1744fccd961acedcb023c31cc28228 100644 GIT binary patch literal 4880 zcmV+r6YuPIPew8T0RR91022@Z4*&oF03&b!01~+X0RR9100000000000000000000 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%0DYd{9ybPkYV6EVTH=#2X63l9wd6I zkHZe%KtHUnSSE(7!v^?>(EnWCxHMAov`m1%R$8!!8)q)*@g)NC9JtN* zK&fb}RcbV~Q3l}qqys-!8tLm1nE=01TJWsi+^uB0{$!W*=l9XoANba-w5dGi>gH2j z@%Iek*{?cC{qBlh*QcpGS9QBvJDZEVLqGM)@QuT-gV%FTrJr2&AJ$9dS6PJC17ns6 z%e<2}xWx@_@)ic{WR_hFILtu~af$(#p?1K;$Ej~|pC#@xV2QW#7H%Ttn<$4UuM2tq zL|!BE?%eYITw%gJlzbAiH+U=NUE&Rw#jjUC%QgJwEmX?~9AZBQeXx1+zAtkLk-5ru z_D$Z#bGJA6ISM~=) zE|9iixPOw-54Y+QPsAS#e>^X6m9|gztLy{Fx6YL#k!AEkJo%3+Q?>gKS04ZD4~-EI CWld86 literal 5308 zcmV;t6hrHGPew8T0RR9102I6c4*&oF0487n02E{Z0RR9100000000000000000000 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 O`4${*#Gd*>FaZGP$SPj| diff --git a/src/parser.nim b/src/parser.nim index b5e1660..4e4b2a5 100644 --- a/src/parser.nim +++ b/src/parser.nim @@ -107,6 +107,7 @@ proc parseTweet*(node: XmlNode): Tweet = profile: parseTweetProfile(tweet), stats: parseTweetStats(tweet), reply: parseTweetReply(tweet), + mediaTags: getMediaTags(tweet), hasThread: tweet.select(".content > .self-thread-context") != nil, pinned: "pinned" in tweet.attr("class"), available: true diff --git a/src/parserutils.nim b/src/parserutils.nim index 09116ad..b009295 100644 --- a/src/parserutils.nim +++ b/src/parserutils.nim @@ -1,4 +1,4 @@ -import xmltree, strtabs, strformat, strutils, times, uri, options +import xmltree, strtabs, strformat, strutils, times, uri, options, json import regex import types, formatters @@ -276,3 +276,12 @@ proc getMoreReplies*(node: XmlNode): int64 = result = parseBiggestInt(text.split(" ")[0]) except: result = -1 + +proc getMediaTags*(node: XmlNode): seq[Profile] = + let usernames = node.attr("data-tagged") + if usernames.len == 0: return + let users = parseJson(node.attr("data-reply-to-users-json")) + for user in users: + let un = user["screen_name"].getStr + if un notin usernames: continue + result.add Profile(username: un, fullname: user["name"].getStr) diff --git a/src/sass/tweet/_base.scss b/src/sass/tweet/_base.scss index 905a0c3..d7fe469 100644 --- a/src/sass/tweet/_base.scss +++ b/src/sass/tweet/_base.scss @@ -110,6 +110,24 @@ } } +.media-tag-block { + padding-top: 5px; + pointer-events: all; + color: var(--fg_faded); + + .icon-container { + padding-right: 2px; + } + + .media-tag, .icon-container { + color: var(--fg_faded); + } +} + +.timeline-container .media-tag-block { + font-size: 13px; +} + .replying-to { color: var(--fg_faded); margin: -2px 0 4px; diff --git a/src/types.nim b/src/types.nim index 00c383f..971be22 100644 --- a/src/types.nim +++ b/src/types.nim @@ -150,6 +150,7 @@ type stats*: TweetStats retweet*: Option[Retweet] attribution*: Option[Profile] + mediaTags*: seq[Profile] quote*: Option[Quote] card*: Option[Card] gif*: Option[Gif] diff --git a/src/views/tweet.nim b/src/views/tweet.nim index fc15d60..f60c38b 100644 --- a/src/views/tweet.nim +++ b/src/views/tweet.nim @@ -195,6 +195,15 @@ proc renderAttribution(profile: Profile): VNode = img(class="avatar", width="20", height="20", src=avatarUrl) strong: text profile.fullname +proc renderMediaTags(tags: seq[Profile]): VNode = + buildHtml(tdiv(class="media-tag-block")): + icon "user" + for i, p in tags: + a(class="media-tag", href=("/" & p.username), title=p.username): + text p.fullname + if i < tags.high: + text ", " + proc renderQuoteMedia(quote: Quote): VNode = buildHtml(tdiv(class="quote-media-container")): if quote.thumb.len > 0: @@ -286,6 +295,9 @@ proc renderTweet*(tweet: Tweet; prefs: Prefs; path: string; class=""; if mainTweet: p(class="tweet-published"): text getTweetTime(tweet) + if tweet.mediaTags.len > 0: + renderMediaTags(tweet.mediaTags) + if not prefs.hideTweetStats: renderStats(tweet.stats, views)