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 640254f..f13855b 100644 Binary files a/frontend/src/assets/img/logo.png and b/frontend/src/assets/img/logo.png differ diff --git a/frontend/src/main.js b/frontend/src/main.js index 7b6f399..9f9459c 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -2,6 +2,7 @@ import Vue from 'vue' import VueRouter from 'vue-router' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' +import axios from 'axios' import App from './App.vue' import Layout from './layout' @@ -10,6 +11,11 @@ import StyleGenerator from './views/StyleGenerator.vue' import Room from './views/Room' import NotFound from './views/NotFound.vue' +if (process.env.NODE_ENV === 'development') { + // 开发时使用localhost:80 + axios.defaults.baseURL = 'http://localhost' +} + Vue.use(VueRouter) Vue.use(ElementUI) diff --git a/frontend/src/views/Home.vue b/frontend/src/views/Home.vue index 0e9ddfa..472a8f5 100644 --- a/frontend/src/views/Home.vue +++ b/frontend/src/views/Home.vue @@ -43,52 +43,68 @@ + + + + 复制 + - 进入房间 - 弹出房间 + 保存配置 + 进入房间