From 920e6fff967d09613f653944d95b9cd00db8495f Mon Sep 17 00:00:00 2001 From: John Smith Date: Wed, 12 Jun 2019 13:55:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=85=8D=E7=BD=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=92=8C=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/config.js | 275 ++++++++++++++++++++++++++++++ frontend/src/assets/css/room.css | 217 ----------------------- frontend/src/assets/img/logo.png | Bin 14954 -> 1166 bytes frontend/src/main.js | 6 + frontend/src/views/Home.vue | 62 ++++--- frontend/src/views/Room/index.vue | 20 ++- main.py | 18 +- views/base.py | 28 +++ chat.py => views/chat.py | 0 views/config.py | 50 ++++++ views/main.py | 10 ++ 11 files changed, 434 insertions(+), 252 deletions(-) create mode 100644 frontend/src/api/config.js create mode 100644 views/base.py rename chat.py => views/chat.py (100%) create mode 100644 views/config.py create mode 100644 views/main.py diff --git a/frontend/src/api/config.js b/frontend/src/api/config.js new file mode 100644 index 0000000..33cfe8d --- /dev/null +++ b/frontend/src/api/config.js @@ -0,0 +1,275 @@ +import axios from 'axios' + +const DEFAULT_CSS = `@import url("https://fonts.googleapis.com/css?family=Changa%20One"); +@import url("https://fonts.googleapis.com/css?family=Imprima"); +/* @import url("https://fonts.lug.ustc.edu.cn/css?family=Changa%20One"); */ +/* @import url("https://fonts.lug.ustc.edu.cn/css?family=Imprima"); */ + +/* Background colors*/ +body { + overflow: hidden; + background-color: rgba(0,0,0,0); +} +/* Transparent background. */ +yt-live-chat-renderer { + background-color: transparent !important; +} +yt-live-chat-text-message-renderer, +yt-live-chat-text-message-renderer[is-highlighted] { + background-color: transparent !important; +} + +yt-live-chat-text-message-renderer[author-type="owner"], +yt-live-chat-text-message-renderer[author-type="owner"][is-highlighted] { + background-color: transparent !important; +} + +yt-live-chat-text-message-renderer[author-type="moderator"], +yt-live-chat-text-message-renderer[author-type="moderator"][is-highlighted] { + background-color: transparent !important; +} + +yt-live-chat-text-message-renderer[author-type="member"], +yt-live-chat-text-message-renderer[author-type="member"][is-highlighted] { + background-color: transparent !important; +} + + +yt-live-chat-author-chip #author-name { + background-color: transparent !important; +} +/* Outlines */ +yt-live-chat-renderer * { + text-shadow: -2px -2px #000000,-2px -1px #000000,-2px 0px #000000,-2px 1px #000000,-2px 2px #000000,-1px -2px #000000,-1px -1px #000000,-1px 0px #000000,-1px 1px #000000,-1px 2px #000000,0px -2px #000000,0px -1px #000000,0px 0px #000000,0px 1px #000000,0px 2px #000000,1px -2px #000000,1px -1px #000000,1px 0px #000000,1px 1px #000000,1px 2px #000000,2px -2px #000000,2px -1px #000000,2px 0px #000000,2px 1px #000000,2px 2px #000000; + font-family: "Imprima"; + font-size: 18px !important; + line-height: 18px !important; +} + +yt-live-chat-text-message-renderer #content, +yt-live-chat-legacy-paid-message-renderer #content { + overflow: initial !important; +} + +/* Hide scrollbar. */ +yt-live-chat-item-list-renderer #items{ + overflow: hidden !important; +} + +yt-live-chat-item-list-renderer #item-scroller{ + overflow: hidden !important; +} + +/* Hide header and input. */ +yt-live-chat-header-renderer, +yt-live-chat-message-input-renderer { + display: none !important; +} + +/* Reduce side padding. */ +yt-live-chat-text-message-renderer, +yt-live-chat-legacy-paid-message-renderer { + padding-left: 4px !important; + padding-right: 4px !important; +} + +yt-live-chat-paid-message-renderer #header { + padding-left: 4px !important; + padding-right: 4px !important; +} + +/* Avatars. */ +yt-live-chat-text-message-renderer #author-photo, +yt-live-chat-paid-message-renderer #author-photo, +yt-live-chat-legacy-paid-message-renderer #author-photo { + + width: 24px !important; + height: 24px !important; + border-radius: 24px !important; + margin-right: 6px !important; + background-size: cover; +} + +/* Hide badges. */ +yt-live-chat-text-message-renderer #author-badges { + display: none !important; + vertical-align: text-top !important; +} + +/* Timestamps. */ +yt-live-chat-text-message-renderer #timestamp { + + color: #999999 !important; + font-family: "Imprima"; + font-size: 16px !important; + line-height: 16px !important; +} + +/* Badges. */ +yt-live-chat-text-message-renderer #author-name[type="owner"], +yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="owner"] { + color: #ffd600 !important; +} + +yt-live-chat-text-message-renderer #author-name[type="moderator"], +yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="moderator"] { + color: #5e84f1 !important; +} + +yt-live-chat-text-message-renderer #author-name[type="member"], +yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="member"] { + color: #0f9d58 !important; +} + +/* Channel names. */ +yt-live-chat-text-message-renderer #author-name { + color: #cccccc !important; + font-family: "Changa One"; + font-size: 20px !important; + line-height: 20px !important; +} + +yt-live-chat-text-message-renderer #author-name::after { + content: ":"; + margin-left: 2px; +} + +/* Messages. */ +yt-live-chat-text-message-renderer #message, +yt-live-chat-text-message-renderer #message * { + color: #ffffff !important; + font-family: "Imprima"; + font-size: 18px !important; + line-height: 18px !important; +} + + +/* SuperChat/Fan Funding Messages. */ +yt-live-chat-paid-message-renderer #author-name, +yt-live-chat-paid-message-renderer #author-name *, +yt-live-chat-legacy-paid-message-renderer #event-text, +yt-live-chat-legacy-paid-message-renderer #event-text * { + color: #ffffff !important; + font-family: "Changa One"; + font-size: 20px !important; + line-height: 20px !important; +} + +yt-live-chat-paid-message-renderer #purchase-amount, +yt-live-chat-paid-message-renderer #purchase-amount *, +yt-live-chat-legacy-paid-message-renderer #detail-text, +yt-live-chat-legacy-paid-message-renderer #detail-text * { + color: #ffffff !important; + font-family: "Imprima"; + font-size: 18px !important; + line-height: 18px !important; +} + +yt-live-chat-paid-message-renderer #content, +yt-live-chat-paid-message-renderer #content * { + color: #ffffff !important; + font-family: "Imprima"; + font-size: 18px !important; + line-height: 18px !important; +} + +yt-live-chat-paid-message-renderer { + margin: 4px 0 !important; +} + +yt-live-chat-legacy-paid-message-renderer { + background-color: #0f9d58 !important; + margin: 4px 0 !important; +} + +yt-live-chat-text-message-renderer a, +yt-live-chat-legacy-paid-message-renderer a { + text-decoration: none !important; +} + +yt-live-chat-text-message-renderer[is-deleted], +yt-live-chat-legacy-paid-message-renderer[is-deleted] { + display: none !important; +} + +yt-live-chat-ticker-renderer { + background-color: transparent !important; + box-shadow: none !important; +} +yt-live-chat-ticker-renderer { + display: none !important; +} + + +yt-live-chat-ticker-paid-message-item-renderer, +yt-live-chat-ticker-paid-message-item-renderer *, +yt-live-chat-ticker-sponsor-item-renderer, +yt-live-chat-ticker-sponsor-item-renderer * { + color: #ffffff !important; + font-family: "Imprima"; +} + +yt-live-chat-mode-change-message-renderer, +yt-live-chat-viewer-engagement-message-renderer, +yt-live-chat-restricted-participation-renderer { + display: none !important; +} +` + +export const DEFAULT_CONFIG = { + minGiftPrice: 6.911, // $1 + mergeSimilarDanmaku: true, + + blockGiftDanmaku: true, + blockLevel: 0, + blockNewbie: true, + blockNotMobileVerified: true, + blockKeywords: '', + blockUsers: '', + + css: DEFAULT_CSS +} + +function mergeConfig (config) { + let res = {} + for (let i in DEFAULT_CONFIG) { + res[i] = i in config ? config[i] : DEFAULT_CONFIG[i] + } + return res +} + +export function setLocalConfig (config) { + config = mergeConfig(config) + window.localStorage.config = JSON.stringify(config) +} + +export function getLocalConfig () { + if (!window.localStorage.config) { + return DEFAULT_CONFIG + } + return mergeConfig(JSON.parse(window.localStorage.config)) +} + +export async function createRemoteConfig (config) { + config = mergeConfig(config) + return (await axios.post('/config', config)).data +} + +export async function setRemoteConfig (id, config) { + config = mergeConfig(config) + return (await axios.put(`/config/${id}`, config)).data +} + +export async function getRemoteConfig (id) { + let config = (await axios.get(`/config/${id}`)).data + return mergeConfig(config) +} + +export default { + DEFAULT_CONFIG, + setLocalConfig, + getLocalConfig, + createRemoteConfig, + setRemoteConfig, + getRemoteConfig +} diff --git a/frontend/src/assets/css/room.css b/frontend/src/assets/css/room.css index 8a13d60..30ec4a0 100644 --- a/frontend/src/assets/css/room.css +++ b/frontend/src/assets/css/room.css @@ -207,220 +207,3 @@ yt-live-chat-ticker-paid-message-item-renderer #fake-avatar { border-radius: 24px; } - -/* 以下为自动生成:https://chatv2.septapus.com/ */ - -/* @import url("https://fonts.googleapis.com/css?family=Changa%20One"); */ -/* @import url("https://fonts.googleapis.com/css?family=Imprima"); */ -@import url("https://fonts.lug.ustc.edu.cn/css?family=Changa%20One"); -@import url("https://fonts.lug.ustc.edu.cn/css?family=Imprima"); - -/* Background colors*/ -body { - overflow: hidden; - background-color: rgba(0,0,0,0); -} -/* Transparent background. */ -yt-live-chat-renderer { - background-color: transparent !important; -} -yt-live-chat-text-message-renderer, -yt-live-chat-text-message-renderer[is-highlighted] { - background-color: transparent !important; -} - -yt-live-chat-text-message-renderer[author-type="owner"], -yt-live-chat-text-message-renderer[author-type="owner"][is-highlighted] { - background-color: transparent !important; -} - -yt-live-chat-text-message-renderer[author-type="moderator"], -yt-live-chat-text-message-renderer[author-type="moderator"][is-highlighted] { - background-color: transparent !important; -} - -yt-live-chat-text-message-renderer[author-type="member"], -yt-live-chat-text-message-renderer[author-type="member"][is-highlighted] { - background-color: transparent !important; -} - - -yt-live-chat-author-chip #author-name { - background-color: transparent !important; -} -/* Outlines */ -yt-live-chat-renderer * { - text-shadow: -2px -2px #000000,-2px -1px #000000,-2px 0px #000000,-2px 1px #000000,-2px 2px #000000,-1px -2px #000000,-1px -1px #000000,-1px 0px #000000,-1px 1px #000000,-1px 2px #000000,0px -2px #000000,0px -1px #000000,0px 0px #000000,0px 1px #000000,0px 2px #000000,1px -2px #000000,1px -1px #000000,1px 0px #000000,1px 1px #000000,1px 2px #000000,2px -2px #000000,2px -1px #000000,2px 0px #000000,2px 1px #000000,2px 2px #000000; - font-family: "Imprima"; - font-size: 18px !important; - line-height: 18px !important; -} - -yt-live-chat-text-message-renderer #content, -yt-live-chat-legacy-paid-message-renderer #content { - overflow: initial !important; -} - -/* Hide scrollbar. */ -yt-live-chat-item-list-renderer #items{ - overflow: hidden !important; -} - -yt-live-chat-item-list-renderer #item-scroller{ - overflow: hidden !important; -} - -/* Hide header and input. */ -yt-live-chat-header-renderer, -yt-live-chat-message-input-renderer { - display: none !important; -} - -/* Reduce side padding. */ -yt-live-chat-text-message-renderer, -yt-live-chat-legacy-paid-message-renderer { - padding-left: 4px !important; - padding-right: 4px !important; -} - -yt-live-chat-paid-message-renderer #header { - padding-left: 4px !important; - padding-right: 4px !important; -} - -/* Avatars. */ -yt-live-chat-text-message-renderer #author-photo, -yt-live-chat-paid-message-renderer #author-photo, -yt-live-chat-legacy-paid-message-renderer #author-photo { - - width: 24px !important; - height: 24px !important; - border-radius: 24px !important; - margin-right: 6px !important; - background-size: cover; -} - -/* Hide badges. */ -yt-live-chat-text-message-renderer #author-badges { - display: none !important; - vertical-align: text-top !important; -} - -/* Timestamps. */ -yt-live-chat-text-message-renderer #timestamp { - - color: #999999 !important; - font-family: "Imprima"; - font-size: 16px !important; - line-height: 16px !important; -} - -/* Badges. */ -yt-live-chat-text-message-renderer #author-name[type="owner"], -yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="owner"] { - color: #ffd600 !important; -} - -yt-live-chat-text-message-renderer #author-name[type="moderator"], -yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="moderator"] { - color: #5e84f1 !important; -} - -yt-live-chat-text-message-renderer #author-name[type="member"], -yt-live-chat-text-message-renderer yt-live-chat-author-badge-renderer[type="member"] { - color: #0f9d58 !important; -} - -/* Channel names. */ -yt-live-chat-text-message-renderer #author-name { - color: #cccccc !important; - font-family: "Changa One"; - font-size: 20px !important; - line-height: 20px !important; -} - -yt-live-chat-text-message-renderer #author-name::after { - content: ":"; - margin-left: 2px; -} - -/* Messages. */ -yt-live-chat-text-message-renderer #message, -yt-live-chat-text-message-renderer #message * { - color: #ffffff !important; - font-family: "Imprima"; - font-size: 18px !important; - line-height: 18px !important; -} - - -/* SuperChat/Fan Funding Messages. */ -yt-live-chat-paid-message-renderer #author-name, -yt-live-chat-paid-message-renderer #author-name *, -yt-live-chat-legacy-paid-message-renderer #event-text, -yt-live-chat-legacy-paid-message-renderer #event-text * { - color: #ffffff !important; - font-family: "Changa One"; - font-size: 20px !important; - line-height: 20px !important; -} - -yt-live-chat-paid-message-renderer #purchase-amount, -yt-live-chat-paid-message-renderer #purchase-amount *, -yt-live-chat-legacy-paid-message-renderer #detail-text, -yt-live-chat-legacy-paid-message-renderer #detail-text * { - color: #ffffff !important; - font-family: "Imprima"; - font-size: 18px !important; - line-height: 18px !important; -} - -yt-live-chat-paid-message-renderer #content, -yt-live-chat-paid-message-renderer #content * { - color: #ffffff !important; - font-family: "Imprima"; - font-size: 18px !important; - line-height: 18px !important; -} - -yt-live-chat-paid-message-renderer { - margin: 4px 0 !important; -} - -yt-live-chat-legacy-paid-message-renderer { - background-color: #0f9d58 !important; - margin: 4px 0 !important; -} - -yt-live-chat-text-message-renderer a, -yt-live-chat-legacy-paid-message-renderer a { - text-decoration: none !important; -} - -yt-live-chat-text-message-renderer[is-deleted], -yt-live-chat-legacy-paid-message-renderer[is-deleted] { - display: none !important; -} - -yt-live-chat-ticker-renderer { - background-color: transparent !important; - box-shadow: none !important; -} -yt-live-chat-ticker-renderer { - display: none !important; -} - - -yt-live-chat-ticker-paid-message-item-renderer, -yt-live-chat-ticker-paid-message-item-renderer *, -yt-live-chat-ticker-sponsor-item-renderer, -yt-live-chat-ticker-sponsor-item-renderer * { - color: #ffffff !important; - font-family: "Imprima"; -} - -yt-live-chat-mode-change-message-renderer, -yt-live-chat-viewer-engagement-message-renderer, -yt-live-chat-restricted-participation-renderer { - display: none !important; -} \ No newline at end of file diff --git a/frontend/src/assets/img/logo.png b/frontend/src/assets/img/logo.png index 640254f8d9faea99e81978e7062436e5fc6a43c2..f13855b88f6ffee158690440b8b917bf98eb5c34 100644 GIT binary patch delta 1153 zcmV-{1b+MKbdCv-9De}>eM({g0004VQb$4nuFf3k000C?Nkl2HG`+rgqdz*;)#p~sW{JOHL)j}j4~*s6>lsNaX)Z$$~9nwttaQ_2J~XFG#xI= zz(=m!W2Ed}ksJZU`JpNb*Y}2t)|l|p*J&Erxf(8RY%p2ABqwms2x|v(Gkt2VHm(jX z(Me`}1I;#~v47s|Lc=!E9;6_u| zlp~GD2h$OtHfe^Zjfu_WOJtg^D*VAd@RUL&WhY zrxmZGwZH>K&6mc>b&Bl!v&atbZ;*cXQicXH6@|-rgmU#;_~S2quj-{ivO+|G63%4) z)xzq%Sbr_h^kMlVT)aV`ZSoR>yu;AeYTP~>m*jQ@3#G%zja3Q7-=>M&gO<`xhgF_i z$b`9&$vXn1{^>}X{kO#1r`Y2!>k6!cX{$sMCG8@Wi*#a)@>LwDcOP#yt`cd`sD29u zQE@;IT#d`?_(;GT6evLdxqTwBPDF%a6Nz99^uG_L15$x5 zV1Mz}3&@RzCDyQ$9mxNhB{!8fBvIfo{BN;z=V)6;l;KR@#{}mbLT7tT@0o6Lgj#E*~Dcm(|<9X9=b^=lqblc^Rkfm%jv>EcU0ze34;@o zkjsA)(N-fZFM1S<&aD3W8E`Xt_1E0t?<2>ZG3ul;i0#Z2`E7HdRE(4I9_33+eZjb;dHLXV$8YO^B)sp%WK~jMReDOo z53S9sQ|gZ2{tB{#qw-ifZ(Z`+ome^E%v!W zkY63SI4d8C|MxVcB(jIo!A{Rzdl%H{egtU{QqzK$>oRJDvBX zhXAlYCzX}!<(~1Jpae2`uTm*yh5|vT2EdsY3i3jYs8f|VqO( zDr!otDu|u(kr{Hrd*upLk=GTqOi}!< z$SNyoMMxDC7^^CW8a`Q)y-J<-f|E|P#OFJnO?30R=z>m%naMV@Y#D3etXXh9zQou$ zhCz}4^xb-XI(SHU&$ zAbUNMwXH2Ny^}Uhf4|grA|kDA=cjeWwx3U@aj0={Ex>W{;W=QPbi1~A<%quAm{Wgk zL~mh?56v3as2A-|^j2WJXn&$NZk;4cy2}zRm(Yy3jI%d#FieDx38E|8X0zIybYgR& zqeKdc{&Kejcd%xxODn7t_9S*BHCA+FL^`6z$Yde^(8F^XX@!pq@JWS^J*u>w=Gazv z#6kRy9&utc9Vvp+z{Ug@77;2SxKJ9{nBc-9LIngDN&_1cTv$Y?fZ#%DU}J&{iwG4E zTqq4}OmJZlp#p*nrGbqJE-WHcKyaZnura}fMT80nE|dl~Cb+POPyxY((!j<97ZwpJ zAh=K(*qGqLB0>cO7fJ&g6I@tCsDR)?X<%c53yTO95L_q?Y)o)r5upNt3#EaL2`(%m zR6uZ{G_Wzjg++u42riTcHYT{Rh)@B+h0?&r1Q!+&Dj>K}8rYcN!XiQi1Q$vJ8xveu zM5ut^LTO;*`{GK8zx*f4@QuGZ_-fzkue3DyS|BA9m3jbZ7zV)ng#g^X2Y>$rpq2sP zuNeSvs{!bztek$h5P(kmirx8Tp|e+3?XUS}0gPJ7=ZN6V*N${RbVk7Jj%ewQ>E0^y_=dmar?Qu-!Hs8n|-KKl{?p z?@hm!3f5Cs{}{>dc=7za9~y6Oc%`N0`kfz#pPPHManXs*MO{m#%O@8%c4>Y(^_}9e zrpLC1#+nw`3g_-Fp3^Nfb<0N??{0e5e{p_j{ItGJRh!f7U7H`vA8~vfbA7TV$!7G&)&hE(xz^$H67T!eCVE6o4|zy7w0Sv zjj8DjM!mo0$k~3&kMBIQ>FD^rY?_1m{_z`Yr++rhxBkqQ)MajP?(1W{!RvVqX0Yp; zb>z*nQ_?{5trRd+7`XK9&4ZqrRAJf4=5)%LH*@~Rjo + + + + 复制 + - 进入房间 - 弹出房间 + 保存配置 + 进入房间