├── .idea ├── .name ├── shelf │ ├── Uncommitted_changes_before_rebase_[更改] │ │ ├── shelved.patch │ │ └── views.zip │ └── Uncommitted_changes_before_rebase___.xml ├── .gitignore ├── misc.xml ├── vcs.xml ├── inspectionProfiles │ └── Project_Default.xml ├── modules.xml ├── AsoulFansArt-Frontend.iml └── workspace.xml ├── public ├── version.json ├── robots.txt ├── img │ ├── b.ico │ ├── asdb.ico │ ├── asfa.ico │ ├── asjp.ico │ ├── aswd.png │ ├── jwf.jpg │ ├── s1.ico │ ├── xzw.ico │ ├── zj.png │ ├── douban.ico │ ├── github.png │ ├── icons │ │ ├── apple-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── ms-icon-70x70.png │ │ ├── ms-icon-144x144.png │ │ ├── ms-icon-150x150.png │ │ ├── ms-icon-310x310.png │ │ ├── android-icon-36x36.png │ │ ├── android-icon-48x48.png │ │ ├── android-icon-72x72.png │ │ ├── android-icon-96x96.png │ │ ├── apple-icon-114x114.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-144x144.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-72x72.png │ │ ├── apple-icon-76x76.png │ │ ├── android-icon-144x144.png │ │ ├── android-chrome-192x192.png │ │ ├── apple-icon-precomposed.png │ │ └── android-chrome-maskable-192x192.png │ ├── asf.svg │ ├── A-SOUL Fans Art - 一个魂的二创_files │ │ ├── app.js.下载 │ │ └── chunk-vendors.js.下载 │ ├── zwcc.svg │ └── A-SOUL Fans Art - 一个魂的二创.html ├── logo.png ├── favicon.ico ├── manifest.json ├── links.json ├── index.html └── timeline.json ├── src ├── assets │ ├── 1.gif │ ├── scss │ │ ├── card.scss │ │ ├── a.scss │ │ ├── menu.scss │ │ └── account.scss │ ├── logo.png │ └── icon │ │ ├── iconfont.ttf │ │ ├── iconfont.json │ │ ├── iconfont.css │ │ └── iconfont.js ├── store │ └── index.js ├── views │ ├── components │ │ ├── Bottom.vue │ │ ├── Modal.vue │ │ ├── TabPage.vue │ │ ├── SubmitPic.vue │ │ ├── PicGrid.vue │ │ ├── SubmitArticle.vue │ │ ├── ArticleCard.vue │ │ ├── StackedLine.vue │ │ ├── VideoGrid.vue │ │ ├── Waterfall.vue │ │ ├── NavItem.vue │ │ ├── ImgGallery.vue │ │ ├── Header.vue │ │ ├── VideoCard.vue │ │ ├── WaterfallPic.vue │ │ ├── Vwaterfall.vue │ │ ├── ImageCard.vue │ │ └── Condition.vue │ ├── Submit.vue │ ├── Article.vue │ ├── Video.vue │ ├── PicDetail.vue │ ├── Meme.vue │ ├── account │ │ └── Space.vue │ ├── FansMedal.vue │ ├── MainPage.vue │ └── AsoulHistory.vue ├── util │ ├── local.js │ ├── lazyload.js │ ├── general.js │ └── http.js ├── registerServiceWorker.js ├── plugins │ └── axios.js ├── main.js ├── router │ └── index.js └── App.vue ├── babel.config.js ├── .gitignore ├── README.md ├── package.json └── vue.config.js /.idea/.name: -------------------------------------------------------------------------------- 1 | AsoulFansArt-Frontend -------------------------------------------------------------------------------- /public/version.json: -------------------------------------------------------------------------------- 1 | {"version": "1.2"} -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_rebase_[更改]/shelved.patch: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/b.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/b.ico -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/logo.png -------------------------------------------------------------------------------- /src/assets/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/src/assets/1.gif -------------------------------------------------------------------------------- /src/assets/scss/card.scss: -------------------------------------------------------------------------------- 1 | .card-title{ 2 | font-size: 1.0625rem; 3 | font-weight: bold; 4 | } 5 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # 默认忽略的文件 2 | /shelf/ 3 | /workspace.xml 4 | # 基于编辑器的 HTTP 客户端请求 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/img/asdb.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/asdb.ico -------------------------------------------------------------------------------- /public/img/asfa.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/asfa.ico -------------------------------------------------------------------------------- /public/img/asjp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/asjp.ico -------------------------------------------------------------------------------- /public/img/aswd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/aswd.png -------------------------------------------------------------------------------- /public/img/jwf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/jwf.jpg -------------------------------------------------------------------------------- /public/img/s1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/s1.ico -------------------------------------------------------------------------------- /public/img/xzw.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/xzw.ico -------------------------------------------------------------------------------- /public/img/zj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/zj.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /public/img/douban.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/douban.ico -------------------------------------------------------------------------------- /public/img/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/github.png -------------------------------------------------------------------------------- /src/assets/icon/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/src/assets/icon/iconfont.ttf -------------------------------------------------------------------------------- /public/img/icons/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon.png -------------------------------------------------------------------------------- /public/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /public/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /public/img/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/favicon-96x96.png -------------------------------------------------------------------------------- /public/img/icons/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-70x70.png -------------------------------------------------------------------------------- /public/img/icons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-144x144.png -------------------------------------------------------------------------------- /public/img/icons/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-150x150.png -------------------------------------------------------------------------------- /public/img/icons/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-310x310.png -------------------------------------------------------------------------------- /public/img/icons/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-36x36.png -------------------------------------------------------------------------------- /public/img/icons/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-48x48.png -------------------------------------------------------------------------------- /public/img/icons/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-72x72.png -------------------------------------------------------------------------------- /public/img/icons/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-96x96.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-114x114.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-120x120.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-144x144.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-152x152.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-180x180.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-57x57.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-60x60.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-72x72.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-76x76.png -------------------------------------------------------------------------------- /public/img/icons/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-144x144.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/img/icons/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-precomposed.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-maskable-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-chrome-maskable-192x192.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_rebase_[更改]/views.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/.idea/shelf/Uncommitted_changes_before_rebase_[更改]/views.zip -------------------------------------------------------------------------------- /src/assets/scss/a.scss: -------------------------------------------------------------------------------- 1 | a{ 2 | text-decoration: none; 3 | color: black; 4 | transition: 0.5s; 5 | } 6 | a:hover{ 7 | color:#FC966E; 8 | } 9 | ul{ 10 | padding: 0; 11 | } 12 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex' 2 | 3 | export default createStore({ 4 | state: { 5 | }, 6 | mutations: { 7 | }, 8 | actions: { 9 | }, 10 | modules: { 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /src/views/components/Bottom.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /src/assets/icon/iconfont.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "", 3 | "name": "", 4 | "font_family": "iconfont", 5 | "css_prefix_text": "icon-", 6 | "description": "", 7 | "glyphs": [ 8 | { 9 | "icon_id": "16799162", 10 | "name": "like", 11 | "font_class": "0_like1", 12 | "unicode": "e669", 13 | "unicode_decimal": 58985 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /src/assets/icon/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "iconfont"; /* Project id */ 3 | src: url('iconfont.ttf?t=1628586705257') format('truetype'); 4 | } 5 | 6 | .iconfont { 7 | font-family: "iconfont" !important; 8 | font-size: 16px; 9 | font-style: normal; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | 14 | .icon-0_like1:before { 15 | content: "\e669"; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/views/components/Modal.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "一个魂的二创", 3 | "short_name": "一个魂的二创", 4 | "start_url": ".", 5 | "icon": [ 6 | { 7 | "src": "/public/img/icons/android-icon-144x144.png", 8 | "sizes": "128x128", 9 | "type": "image/png" 10 | }, 11 | { 12 | "src": "/public/img/icons/android-chrome-192x192.png", 13 | "sizes": "192x192", 14 | "type": "image/png" 15 | }], 16 | "background_color": "white", 17 | "theme_color": "white", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /.idea/AsoulFansArt-Frontend.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_rebase___.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/views/components/TabPage.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | 28 | -------------------------------------------------------------------------------- /src/util/local.js: -------------------------------------------------------------------------------- 1 | import Axios from "axios"; 2 | 3 | 4 | 5 | 6 | const _getLinks = (params) => { 7 | return Axios({ 8 | url:"/links.json", 9 | method:"get", 10 | params:params 11 | }) 12 | } 13 | 14 | const _getVersion = (params) => { 15 | return Axios({ 16 | url:"/version.json", 17 | method:"get", 18 | params:params 19 | }) 20 | } 21 | 22 | const _getTimeLine = (params) => { 23 | return Axios({ 24 | url:"/timeline.json", 25 | method:"get", 26 | params:params 27 | }) 28 | } 29 | 30 | 31 | export default { 32 | _getLinks, 33 | _getVersion, 34 | _getTimeLine 35 | } 36 | -------------------------------------------------------------------------------- /src/views/Submit.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 33 | 34 | 38 | -------------------------------------------------------------------------------- /src/util/lazyload.js: -------------------------------------------------------------------------------- 1 | import errImage from "../assets/1.gif" 2 | import infiniteScroll from 'vue-infinite-scroll' 3 | 4 | const defineDirective = (app) => { 5 | app.directive('lazy', { 6 | mounted(el, binding){ 7 | const observe = new IntersectionObserver(([{isIntersecting}])=>{ 8 | if (isIntersecting){ 9 | el.src = binding.value 10 | observe.unobserve(el) 11 | el.onerror = () => { 12 | el.src = errImage 13 | } 14 | } 15 | }) 16 | observe.observe(el) 17 | }, 18 | updated(el, binding){ 19 | //console.log("update", binding.value) 20 | el.src = binding.value 21 | el.onerror = () => { 22 | el.src = errImage 23 | } 24 | } 25 | }); 26 | 27 | } 28 | 29 | export default { 30 | install(app){ 31 | defineDirective(app) 32 | } 33 | } -------------------------------------------------------------------------------- /src/assets/scss/menu.scss: -------------------------------------------------------------------------------- 1 | a{ 2 | text-decoration: none; 3 | color: black; 4 | transition: 0.5s; 5 | } 6 | a:hover{ 7 | color:black; 8 | } 9 | .icon-menu{ 10 | 11 | display: flex; 12 | justify-content: center; 13 | 14 | flex-wrap: wrap; 15 | pointer-events: auto; 16 | border:-1px solid rgba(255, 255, 255, 0.08); 17 | border-radius: 8px; 18 | :hover { 19 | border:-1px solid rgba(0, 0, 0, 0.08); 20 | border-radius: 8px; 21 | background: rgba(245, 245, 245, 0.88); 22 | } 23 | 24 | 25 | } 26 | 27 | 28 | 29 | .icon-card{ 30 | width: 7.5rem; 31 | padding: 1rem; 32 | display: flex; 33 | align-items: center; 34 | flex-direction: column; 35 | :hover{ 36 | border: none; 37 | border-radius: 0; 38 | } 39 | } 40 | 41 | .icon-card-no-hover{ 42 | width: 7.5rem; 43 | padding: 1rem; 44 | display: flex; 45 | align-items: center; 46 | flex-direction: column; 47 | pointer-events: none; 48 | } 49 | 50 | 51 | 52 | 53 | .icon-desc{ 54 | font-size: x-small; 55 | } -------------------------------------------------------------------------------- /src/views/components/SubmitPic.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 29 | 30 | 43 | -------------------------------------------------------------------------------- /src/registerServiceWorker.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | 3 | import { register } from 'register-service-worker' 4 | import {ElMessage} from "element-plus"; 5 | 6 | if (process.env.NODE_ENV === 'production') { 7 | register(`${process.env.BASE_URL}service-worker.js`, { 8 | ready () { 9 | console.log( 10 | 'App is being served from cache by a service worker.\n' + 11 | 'For more details, visit https://goo.gl/AFskqB' 12 | ) 13 | }, 14 | registered () { 15 | console.log('Service worker has been registered.') 16 | }, 17 | cached () { 18 | console.log('Content has been cached for offline use.') 19 | }, 20 | updatefound () { 21 | console.log('New content is downloading.') 22 | }, 23 | updated () { 24 | console.log('New content is available; please refresh.') 25 | ElMessage.success("网站版本已更新,请Ctrl+F5强制刷新体验") 26 | }, 27 | offline () { 28 | console.log('No internet connection found. App is running in offline mode.') 29 | }, 30 | error (error) { 31 | console.error('Error during service worker registration:', error) 32 | } 33 | }) 34 | } 35 | -------------------------------------------------------------------------------- /src/views/components/PicGrid.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 29 | 30 | 54 | -------------------------------------------------------------------------------- /src/views/components/SubmitArticle.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 50 | 51 | 54 | -------------------------------------------------------------------------------- /public/img/asf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/plugins/axios.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import Vue from 'vue'; 4 | import axios from "axios"; 5 | 6 | // Full config: https://github.com/axios/axios#request-config 7 | // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || ''; 8 | // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; 9 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 10 | 11 | let config = { 12 | // baseURL: process.env.baseURL || process.env.apiUrl || "" 13 | // timeout: 60 * 1000, // Timeout 14 | // withCredentials: true, // Check cross-site Access-Control 15 | }; 16 | 17 | const _axios = axios.create(config); 18 | 19 | _axios.interceptors.request.use( 20 | function(config) { 21 | // Do something before request is sent 22 | return config; 23 | }, 24 | function(error) { 25 | // Do something with request error 26 | return Promise.reject(error); 27 | } 28 | ); 29 | 30 | // Add a response interceptor 31 | _axios.interceptors.response.use( 32 | function(response) { 33 | // Do something with response data 34 | return response; 35 | }, 36 | function(error) { 37 | // Do something with response error 38 | return Promise.reject(error); 39 | } 40 | ); 41 | 42 | Plugin.install = function(Vue, options) { 43 | Vue.axios = _axios; 44 | window.axios = _axios; 45 | Object.defineProperties(Vue.prototype, { 46 | axios: { 47 | get() { 48 | return _axios; 49 | } 50 | }, 51 | $axios: { 52 | get() { 53 | return _axios; 54 | } 55 | }, 56 | }); 57 | }; 58 | 59 | Vue.use(Plugin) 60 | 61 | export default Plugin; 62 | -------------------------------------------------------------------------------- /public/links.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "name": "AsoulWorld", 3 | "link": "https://www.asoulworld.com/", 4 | "icon": "./img/aswd.png" 5 | },{ 6 | "name": "AU都在溜什么", 7 | "link": "https://online.loveava.top/", 8 | "icon": "./img/asdb.ico" 9 | }, 10 | { 11 | "name": "小作文", 12 | "link": "https://asoul.icu/#/", 13 | "icon": "./img/xzw.ico" 14 | }, 15 | { 16 | "name": "AsoulWIKI", 17 | "link": "https://asoulwiki.com/", 18 | "icon": "./img/asdb.ico" 19 | }, 20 | { 21 | "name": "枝江大学", 22 | "link": "https://zhijiang.university/", 23 | "icon": "./img/zj.png" 24 | }, 25 | { 26 | "name": "AsoulJP", 27 | "link": "https://asoul.jp/", 28 | "icon": "./img/asjp.ico" 29 | }, 30 | { 31 | "name": "B站粉丝牌助手", 32 | "link": "https://github.com/XiaoMiku01/fansMedalHelper", 33 | "icon": "./img/github.png" 34 | }, 35 | { 36 | "name": "嘉晚饭", 37 | "link": "https://jiawanfan.cn/", 38 | "icon": "./img/jwf.jpg" 39 | }, 40 | { 41 | "name": "A-SOUL鼓励师", 42 | "link": "https://marketplace.visualstudio.com/items?itemName=AS042971.asoul", 43 | "icon": "./img/asdb.ico" 44 | }, { 45 | "name": "嘉心糖圈子", 46 | "link": "https://www.xn--w4r49t8ny.com/", 47 | "icon": "./img/asdb.ico" 48 | }, { 49 | "name": "评论区冲浪指南", 50 | "link": "https://wiki.asoul.org/", 51 | "icon": "./img/asdb.ico" 52 | },{ 53 | "name": "S1asoul讨论楼", 54 | "link": "https://bbs.saraba1st.com/2b/thread-2070127-1-1.html", 55 | "icon": "./img/s1.ico" 56 | },{ 57 | "name": "asoul雏菊组", 58 | "link": "https://www.douban.com/group/727619/", 59 | "icon": "./img/douban.ico" 60 | } 61 | ] -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import { library } from '@fortawesome/fontawesome-svg-core' 6 | import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' 7 | import 'bulma' 8 | import './registerServiceWorker' 9 | import lazyload from './util/lazyload.js' 10 | import zhCn from 'element-plus/es/locale/lang/zh-cn' 11 | // import * as echarts from 'echarts' 12 | 13 | 14 | /* import specific icons */ 15 | import { 16 | faCirclePlay, faImage, faBookOpen, faIceCream, faUpload, faEnvelope, faClock, faArrowTrendUp, faEye, faFire, 17 | faSun, faMoon, faCalendar, faTag, faChevronDown, faBars, faHouse, faChartGantt, faHeart, faCoins, faStar, faComment, 18 | faGrinStars, faShare, faClone, faSpinner, faEdit, faUser, faHistory, faChartLine 19 | } from '@fortawesome/free-solid-svg-icons' 20 | import ElementPlus from 'element-plus' 21 | import 'element-plus/dist/index.css' 22 | //import {fas} from "@fortawesome/free-solid-svg-icons"; 23 | 24 | 25 | //library.add(fas) 26 | library.add(faCirclePlay, faImage, faBookOpen, faIceCream, faUpload, faEnvelope 27 | , faClock, faArrowTrendUp, faEye, faFire, faSun, faMoon, faCalendar,faTag, faChevronDown, faBars, faHouse 28 | , faChartGantt, faHeart, faCoins, faStar, faComment,faGrinStars, faShare, faClone, faSpinner, faEdit, faUser,faHistory, faChartLine) 29 | 30 | const app = createApp(App).use(store).use(router) 31 | app.use(ElementPlus,{ 32 | locale: zhCn, 33 | }) 34 | 35 | // app.echarts=echarts 36 | 37 | lazyload.install(app) 38 | app.component('font-awesome-icon', FontAwesomeIcon) 39 | app.mount('#app') 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/assets/scss/account.scss: -------------------------------------------------------------------------------- 1 | 2 | .account-card{ 3 | display: flex; 4 | justify-content: center; 5 | flex-wrap: wrap; 6 | box-shadow: 0 0 8px rgba(0,0,0,.175)!important; 7 | margin: 1rem; 8 | padding: 1.5rem; 9 | .account-face{ 10 | width: 168px; 11 | height: 168px; 12 | border-radius: 50%; 13 | border: 2px solid hsla(0,0%,100%,.4); 14 | //transition: transform .45s ease-in-out; 15 | //&:hover{ 16 | // transform: scale(1.1,1.1); 17 | //} 18 | } 19 | .account-work{ 20 | width: 100%; 21 | display: flex; 22 | justify-content: center; 23 | justify-items: center; 24 | .work-nums{ 25 | display: flex; 26 | flex-flow: column; 27 | align-items: center; 28 | margin-right: 10px; 29 | padding: 1rem; 30 | font-size: medium; 31 | font-weight: bolder; 32 | } 33 | } 34 | .account-name{ 35 | width: 100%; 36 | text-align: center; 37 | font-size: larger; 38 | font-weight: bold; 39 | line-height: 1.5; 40 | display: flex; 41 | align-items: center; 42 | justify-content: center; 43 | padding: 0.25rem; 44 | } 45 | .account-level{ 46 | font-size: xx-small; 47 | background: #FC966E; 48 | border-radius: .45rem; 49 | padding: 2px 8px; 50 | color: white; 51 | margin-right: 4px; 52 | } 53 | .account-uid{ 54 | background: #42b983; 55 | color: white; 56 | padding: 2px 8px; 57 | border-radius: .45rem; 58 | font-size: xx-small; 59 | margin-right: 4px; 60 | } 61 | 62 | } 63 | .account-sign{ 64 | font-weight: 400; 65 | line-height: 1.5; 66 | box-shadow: 0 0 8px rgba(0,0,0,.175)!important; 67 | margin: 1rem; 68 | padding: 1.5rem; 69 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A-SoulFansArt-一个魂的二创 2 | 网址:https://asoulfanart.com 3 | 4 | 项目目前为二创收集,想要方便一个魂们浏览二创作品~ 5 | 站内视频需跳转原地址,图片为缩略图,永远不会提供批量下载功能 6 | 互动是对UP们最大的支持, 看到喜欢的作品请给原作者支持(关注,点赞,投币,分享,评论等等) 7 | *** 8 | ### 关于A-SOUL 9 | A-SOUL是乐华娱乐于2020年11月23日公开的其旗下首个虚拟偶像团体,由~~5~~名成员组成。 10 | 11 | A-SOUL_Official:https://space.bilibili.com/703007996 12 | * 乃琳:https://space.bilibili.com/672342685 13 | * 珈乐(毕业): https://space.bilibili.com/672328094 14 | * 节奏时间线:https://asoulfanart.com/asoul/history 15 | * 嘉然:https://space.bilibili.com/672328094 16 | * 贝拉:https://space.bilibili.com/672353429 17 | * 向晚:https://space.bilibili.com/672346917 18 | *** 19 | **技术栈:** 20 | 新版:vue3+bulma+pwa 21 | *** 22 | **声明:** 23 | 如网站侵犯了您的版权,请联系B站项目官号[@A-SoulFansArt](https://space.bilibili.com/291072226) 24 | 确认后我会第一时间撤下内容 25 | *** 26 | 计划(填坑列表): 27 | * 首页[ ] 28 | - 每日作品(视频,文章,图片)[ ] 29 | - 每日排行榜[ ] 30 | - 周报专栏[ ] 31 | - 推荐作品[ ] 32 | - 随机推荐[ ] 33 | - 随机Tag下作品推荐[ ] 34 | - 人工推荐[ ] 35 | * 搜索功能[ ] 36 | * 排行榜(目前集合在视频/图片页面下)[x] 37 | * 视频页面[x] 38 | * 图片页面[x] 39 | * 关于网站[ ] 40 | ## 交流/参与项目 41 | 欢迎提交Issue或者B站私信:https://space.bilibili.com/291072226 42 | * 后端技术栈:django+celery 43 | * src结构 44 | - router - 路由 45 | - util/http.js - 后端Api 46 | - util/general.js - 常用函数 47 | - views/account - 用户相关页面 48 | - views/components - 组件 49 | - views/MainPage.vue - 主页 50 | - views/Video.vue - 视频 51 | - views/Pic.vue - 图片 52 | - views/Article.vue - 专栏 53 | - views/Submit.vue - 提交作品 54 | 55 | ## 相关项目 56 | [枝网查重](https://github.com/ASoulCnki) 57 | [A-Soul-Database](https://github.com/peterpei1186861238/A-Soul-Database) 58 | 59 | 60 | ### 运行 61 | ``` 62 | npm run serve 63 | ``` 64 | 65 | ### 打包 66 | ``` 67 | npm run build 68 | ``` 69 | 70 | ### 配置参考 71 | See [Configuration Reference](https://cli.vuejs.org/config/). 72 | -------------------------------------------------------------------------------- /src/util/general.js: -------------------------------------------------------------------------------- 1 | const _timestampToTime = (timestamp) =>{ 2 | let today = new Date(); 3 | let date = new Date(timestamp * 1000); 4 | let Y = date.getFullYear() + '-'; 5 | let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; 6 | let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) 7 | if (date.getFullYear() != today.getFullYear()){ 8 | return Y+M+D; 9 | }else{ 10 | return M+D; 11 | } 12 | } 13 | 14 | const _timestampToTimeY = (timestamp) =>{ 15 | let today = new Date(); 16 | let date = new Date(timestamp * 1000); 17 | let Y = date.getFullYear() + '-'; 18 | let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; 19 | let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) 20 | if (date.getFullYear() != today.getFullYear()){ 21 | return Y+M+D; 22 | }else{ 23 | return M+D; 24 | } 25 | } 26 | 27 | const _changeBillionToCN = (c) =>{ 28 | if(typeof(c) != "string") { 29 | c = c.toString(); 30 | } 31 | if(c.split(".")[0].length >= 5 && c.split(".")[0].length <= 8) { 32 | return parseFloat((c / 10000).toFixed(2)) + "万"; 33 | } else if(c.split(".")[0].length > 8 && c.split(".")[0].length < 13) { 34 | return parseFloat((c / 100000000).toFixed(2)) + "亿"; 35 | } else if(c.split(".")[0].length > 13) { 36 | return parseFloat((c / 1000000000000).toFixed(2)) + "兆"; 37 | } 38 | return c; 39 | } 40 | 41 | const _isMobile = () => { 42 | return navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) 43 | } 44 | 45 | export default { 46 | _timestampToTime, 47 | _changeBillionToCN, 48 | _isMobile, 49 | _timestampToTimeY 50 | } 51 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | A-SOUL Fan Art - 一个魂的二创 19 | 28 | 29 | 31 | 32 | 33 | 34 | 37 |
38 | 39 | 40 | -------------------------------------------------------------------------------- /src/assets/icon/iconfont.js: -------------------------------------------------------------------------------- 1 | !function(e){var t,n,o,i,c,l='',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss"),a=function(e,t){t.parentNode.insertBefore(e,t)};if(d&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(e){console&&console.log(e)}}function s(){c||(c=!0,o())}function r(){try{i.documentElement.doScroll("left")}catch(e){return void setTimeout(r,50)}s()}t=function(){var e,t;(t=document.createElement("div")).innerHTML=l,l=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",t=e,(e=document.body).firstChild?a(t,e.firstChild):e.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(o=t,i=e.document,c=!1,r(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,s())})}(window); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AsoulFansArt", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "@fortawesome/fontawesome-svg-core": "^1.3.0", 12 | "@fortawesome/free-solid-svg-icons": "^6.1.1", 13 | "@fortawesome/vue-fontawesome": "^3.0.0-5", 14 | "blueimp-md5": "^2.19.0", 15 | "bulma": "^0.9.3", 16 | "core-js": "^3.6.5", 17 | "echarts": "^5.3.3", 18 | "element-plus": "^2.2.2", 19 | "pwa": "^1.9.7", 20 | "tslib": "^2.4.0", 21 | "uglifyjs-webpack-plugin": "^2.2.0", 22 | "vue": "^3.0.0", 23 | "vue-bulma-datepicker": "^1.3.6", 24 | "vue-echarts": "^6.1.0", 25 | "vue-infinite-scroll": "^2.0.2", 26 | "vuex": "^4.0.0-0" 27 | }, 28 | "devDependencies": { 29 | "@vue/cli-plugin-babel": "~4.5.0", 30 | "@vue/cli-plugin-eslint": "~4.5.0", 31 | "@vue/cli-plugin-pwa": "^4.5.13", 32 | "@vue/cli-plugin-router": "^4.5.13", 33 | "@vue/cli-plugin-vuex": "^4.5.13", 34 | "@vue/cli-service": "~4.5.0", 35 | "@vue/compiler-sfc": "^3.0.0", 36 | "axios": "^0.21.1", 37 | "babel-eslint": "^10.1.0", 38 | "compression-webpack-plugin": "^6.1.1", 39 | "eslint": "^6.7.2", 40 | "eslint-plugin-vue": "^7.0.0", 41 | "register-service-worker": "^1.7.1", 42 | "sass": "^1.27.0", 43 | "sass-loader": "^10.0.4", 44 | "stylus": "^0.54.8", 45 | "stylus-loader": "^3.0.2", 46 | "vue-cli-plugin-axios": "0.0.4", 47 | "vue-router": "^4.0.14" 48 | }, 49 | "eslintConfig": { 50 | "root": true, 51 | "env": { 52 | "node": true 53 | }, 54 | "extends": [ 55 | "plugin:vue/vue3-essential", 56 | "eslint:recommended" 57 | ], 58 | "parserOptions": { 59 | "parser": "babel-eslint" 60 | }, 61 | "rules": {} 62 | }, 63 | "browserslist": [ 64 | "> 1%", 65 | "last 2 versions", 66 | "not dead" 67 | ] 68 | } 69 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import {createRouter, createWebHistory} from 'vue-router' 2 | import Space from "../views/account/Space"; 3 | import PicDetail from "../views/PicDetail"; 4 | 5 | const routes = [ 6 | { 7 | path: '/', 8 | name:'MainPage', 9 | component:() => import('../views/MainPage'), 10 | meta:{ 11 | title: "Asoul Fan Art - 一个魂的二创" 12 | } 13 | }, 14 | { 15 | 16 | path: '/video', 17 | name:'Video', 18 | component:() => import('../views/Video'), 19 | meta:{ 20 | title: "Asoul Fan Art - 二创视频" 21 | } 22 | }, 23 | { 24 | path: '/submit', 25 | name:'Submit', 26 | component:() => import('../views/Submit'), 27 | meta:{ 28 | title: "Asoul Fan Art - 提交作品" 29 | } 30 | }, 31 | { 32 | path: '/pic', 33 | name:'Pic', 34 | component:() => import('../views/Pic'), 35 | meta:{ 36 | title: "Asoul Fan Art - 二创图片" 37 | } 38 | }, 39 | { 40 | path: '/article', 41 | name:'Article', 42 | component:() => import('../views/Article'), 43 | meta:{ 44 | title: "Asoul Fan Art - 二创专栏" 45 | } 46 | }, 47 | { 48 | path:'/space/:uid', 49 | component:Space, 50 | props:true, 51 | meta:{ 52 | title: "Asoul Fan Art - 个人中心" 53 | } 54 | }, 55 | { 56 | path:'/pic/:dyid', 57 | component:() => import('../views/PicDetail'), 58 | props:true, 59 | meta:{ 60 | title: "Asoul Fan Art - 图片详情" 61 | } 62 | }, 63 | { 64 | path: '/asoul/history', 65 | name:'AsoulHistory', 66 | component:() => import('../views/AsoulHistory.vue'), 67 | meta:{ 68 | title: "Asoul Fan Art - 5.10节奏时间线" 69 | } 70 | }, 71 | { 72 | path: '/fans/medal', 73 | name:'FansMedal', 74 | component:() => import('../views/FansMedal.vue'), 75 | meta:{ 76 | title: "Asoul Fan Art - 粉丝团统计" 77 | } 78 | }, 79 | ] 80 | 81 | const router = createRouter({ 82 | // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。 83 | history: createWebHistory(), 84 | routes, // `routes: routes` 的缩写 85 | }) 86 | 87 | router.beforeEach((to, from, next) => { 88 | /* 路由发生变化修改页面title */ 89 | if (to.meta.title) { 90 | document.title = to.meta.title 91 | } 92 | next() 93 | }) 94 | 95 | 96 | export default router -------------------------------------------------------------------------------- /src/views/components/ArticleCard.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 40 | 41 | -------------------------------------------------------------------------------- /src/views/components/StackedLine.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 107 | 108 | -------------------------------------------------------------------------------- /src/views/Article.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 96 | 97 | 100 | -------------------------------------------------------------------------------- /public/img/A-SOUL Fans Art - 一个魂的二创_files/app.js.下载: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | A-SOUL Fans Art - 一个魂的二创 14 | 23 | 24 | 25 | 28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /public/img/A-SOUL Fans Art - 一个魂的二创_files/chunk-vendors.js.下载: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | A-SOUL Fans Art - 一个魂的二创 14 | 23 | 24 | 25 | 28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | const CompressionWebpackPlugin = require('compression-webpack-plugin') 2 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); 3 | const webpack = require("webpack"); 4 | const productionGzipExtensions = ['js', 'css'] 5 | const isProduction = process.env.NODE_ENV === 'production' 6 | const path = require("path") 7 | function resolve(dir){ 8 | return path.join(__dirname, dir) 9 | } 10 | let timeStamp = new Date().getTime(); 11 | module.exports = { 12 | configureWebpack: { 13 | module:{ 14 | rules:[{ 15 | test:/\.mjs$/, 16 | include:/node_modules/, 17 | type:'javascript/auto' 18 | }]}, 19 | output: { // 输出重构 打包编译后的js文件名称,添加时间戳. 20 | filename: `js/js[name].${timeStamp}.js`, 21 | chunkFilename: `js/chunk.[id].${timeStamp}.js`, 22 | }, 23 | devtool: 'source-map', 24 | plugins: [ 25 | // Ignore all locale files of moment.js 26 | new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), 27 | // 配置compression-webpack-plugin压缩 28 | new CompressionWebpackPlugin({ 29 | algorithm: 'gzip', 30 | test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), 31 | threshold: 10240, 32 | minRatio: 0.8 33 | }), 34 | ], 35 | }, 36 | css: { //重点. 37 | extract: { // 打包后css文件名称添加时间戳 38 | filename: `css/[name].${timeStamp}.css`, 39 | chunkFilename: `css/chunk.[id].${timeStamp}.css`, 40 | } 41 | }, 42 | filenameHashing: false, 43 | publicPath: "/", 44 | outputDir: "newdist", 45 | assetsDir: "public", 46 | lintOnSave:false, 47 | runtimeCompiler: false, 48 | productionSourceMap: false, 49 | chainWebpack: config => { 50 | config.resolve.alias 51 | .set("@", resolve("src")) 52 | .set("@views", resolve("src/views")) 53 | .set("@components", resolve("src/views/components")) 54 | .set("@util", resolve("src/util")) 55 | .set("@account", resolve("src/views/account")) 56 | .set("@public", resolve("public")) 57 | }, 58 | devServer: { 59 | open: true, 60 | host: '0.0.0.0', 61 | port: 9000, 62 | disableHostCheck: true, 63 | }, 64 | 65 | pwa: { 66 | workboxPluginMode: 'GenerateSW', // 也可以定义为‘InjectManifest’模式。但是需自己写SW.js文件进行配置 67 | workboxOptions: { 68 | importWorkboxFrom: 'cdn', //从''cdn"导入workbox,也可以‘local’ 69 | skipWaiting: true, // 安装完SW不等待直接接管网站 70 | clientsClaim: true, 71 | navigateFallback: '/index.html', 72 | exclude: [/\.(?:png|jpg|jpeg|svg)$/], //在预缓存中排除图片 73 | // 定义运行时缓存 74 | runtimeCaching: [ 75 | { 76 | urlPattern: new RegExp('^https://cdn'), 77 | handler: 'NetworkFirst', 78 | options: { 79 | networkTimeoutSeconds: 20, 80 | cacheName: 'cdn-cache', 81 | cacheableResponse: { 82 | statuses: [200] 83 | } 84 | } 85 | } 86 | ] 87 | } 88 | } 89 | 90 | } 91 | -------------------------------------------------------------------------------- /src/views/components/VideoGrid.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 107 | 108 | -------------------------------------------------------------------------------- /public/img/zwcc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 41 | 42 | -------------------------------------------------------------------------------- /src/views/components/Waterfall.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 98 | 99 | 118 | -------------------------------------------------------------------------------- /src/views/components/NavItem.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 68 | 69 | 157 | -------------------------------------------------------------------------------- /src/views/components/ImgGallery.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 61 | 62 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 19 | 92 | 93 | 118 | -------------------------------------------------------------------------------- /public/img/A-SOUL Fans Art - 一个魂的二创.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | A-SOUL Fans Art - 一个魂的二创 14 | 23 | 24 | 25 | 28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/views/components/Header.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 126 | -------------------------------------------------------------------------------- /src/views/Video.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 173 | 174 | 177 | -------------------------------------------------------------------------------- /src/views/components/VideoCard.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 86 | 87 | -------------------------------------------------------------------------------- /src/views/PicDetail.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 119 | -------------------------------------------------------------------------------- /src/views/Meme.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 201 | 202 | 216 | 217 | -------------------------------------------------------------------------------- /src/views/account/Space.vue: -------------------------------------------------------------------------------- 1 | 69 | 70 | 207 | 208 | 240 | -------------------------------------------------------------------------------- /src/views/components/WaterfallPic.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 213 | 214 | 228 | 229 | -------------------------------------------------------------------------------- /src/views/FansMedal.vue: -------------------------------------------------------------------------------- 1 | 95 | 96 | 185 | 186 | -------------------------------------------------------------------------------- /src/views/components/Vwaterfall.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 215 | 216 | 230 | 231 | -------------------------------------------------------------------------------- /src/util/http.js: -------------------------------------------------------------------------------- 1 | import Axios from "axios"; 2 | 3 | let hosts = 'https://api.asoulfanart.com:9000' 4 | //hosts = 'http://192.168.1.10:8000' 5 | Axios.defaults.withCredentials = true 6 | 7 | Axios.interceptors.request.use( 8 | config =>{ 9 | const token = localStorage.getItem('token') 10 | if (token) 11 | config.headers.Authorization = "Token " + token; 12 | return config 13 | }, error => { 14 | return Promise.reject(error); 15 | } 16 | ) 17 | 18 | const _getBV = (params) =>{ 19 | params.tag_id = params.tag_id || 0 20 | if (params.tag_id == 0 || params.rank == 4){ 21 | params.type = 1 22 | }else{ 23 | params.type = 2 24 | } 25 | 26 | return Axios({ 27 | url:hosts + "/getBV" + '?nocache=' + new Date().getTime(), 28 | method:"get", 29 | params: params 30 | }) 31 | } 32 | 33 | const _getVideoPart = () =>{ 34 | return Axios({ 35 | url:hosts + "/getVideoPart", 36 | method:"get" 37 | }) 38 | } 39 | 40 | const _getPicTags = () =>{ 41 | return Axios({ 42 | url:hosts +"/getPicTags", 43 | method:"get" 44 | }) 45 | } 46 | 47 | const _submitBV = (params) =>{ 48 | return Axios({ 49 | url:hosts +"/submitBV", 50 | method:"get", 51 | params:params 52 | }) 53 | } 54 | 55 | const _getDynamicDetail = (params) =>{ 56 | return Axios({ 57 | url:hosts +"/getDynamicDetail", 58 | method: "get", 59 | params:params 60 | }) 61 | } 62 | 63 | const _getPic = (params) =>{ 64 | params.tag_id = params.tag_id || 0 65 | if (params.tag_id == 0 || params.rank == 4){ 66 | params.type = 1 67 | }else{ 68 | params.type = 2 69 | } 70 | return Axios({ 71 | url:hosts +"/getPic" + '?nocache=' + new Date().getTime(), 72 | method: "get", 73 | params:params 74 | }) 75 | } 76 | 77 | const _getNotification = (params) =>{ 78 | return Axios({ 79 | url:hosts +"/getNotification", 80 | method: "get", 81 | params:params 82 | }) 83 | } 84 | 85 | const _submit = (params) =>{ 86 | return Axios({ 87 | url:hosts +"/submit", 88 | method: "get", 89 | params:params 90 | }) 91 | } 92 | 93 | const _getOfficialQA = (params) =>{ 94 | return Axios({ 95 | url:hosts +"/getOfficialQA", 96 | method: "get", 97 | params:params 98 | }) 99 | } 100 | 101 | const _getOfficialQADetail = (params) =>{ 102 | return Axios({ 103 | url:hosts +"/getOfficialQADetail", 104 | method: "get", 105 | params:params 106 | }) 107 | } 108 | 109 | const _searchOfficialQA = (params) =>{ 110 | return Axios({ 111 | url:hosts +"/searchOfficialQA", 112 | method: "get", 113 | params:params 114 | }) 115 | } 116 | 117 | const _sortGetOfficialQA = (params) =>{ 118 | return Axios({ 119 | url:hosts +"/sortGetOfficialQA", 120 | method: "get", 121 | params:params 122 | }) 123 | } 124 | 125 | const _getArticleSorts = (params) =>{ 126 | return Axios({ 127 | url:hosts +"/getArticleSorts", 128 | method: "get", 129 | params:params 130 | }) 131 | } 132 | 133 | const _submitArticle = (params) =>{ 134 | return Axios({ 135 | url:hosts +"/submitArticle", 136 | method: "get", 137 | params:params 138 | }) 139 | } 140 | 141 | const _getMeme = (params) =>{ 142 | params.tag_id = params.tag_id || 0 143 | if (params.tag_id == 0 || params.rank == 4){ 144 | params.type = 1 145 | }else{ 146 | params.type = 2 147 | } 148 | return Axios({ 149 | url:hosts +"/getMeme" + '?nocache=' + new Date().getTime(), 150 | method: "get", 151 | params:params 152 | }) 153 | } 154 | 155 | const _getArticleList = (params) =>{ 156 | return Axios({ 157 | url:hosts +"/getArticleList" + '?nocache=' + new Date().getTime(), 158 | method: "get", 159 | params:params 160 | }) 161 | } 162 | 163 | const _getAccountInfo = (params) => { 164 | return Axios({ 165 | url:hosts +"/account/info", 166 | method: "get", 167 | params:params 168 | }) 169 | } 170 | 171 | const _tempLogin = (params) => { 172 | return Axios({ 173 | url:hosts +"/account/temp/login", 174 | method: "get", 175 | params:params 176 | }) 177 | } 178 | 179 | const _tempView = (params) => { 180 | return Axios({ 181 | url:hosts +"/account/temp/view", 182 | method: "post", 183 | data:params 184 | }) 185 | } 186 | 187 | const _getRank = (params) => { 188 | return Axios({ 189 | url:hosts +"/pic/getRank", 190 | method: "get", 191 | params:params 192 | }) 193 | } 194 | 195 | const _regAccount = (params) => { 196 | return Axios({ 197 | url:hosts +"/account/register", 198 | method: "post", 199 | data:params 200 | }) 201 | } 202 | 203 | const _accountLogin = (params) => { 204 | return Axios({ 205 | url:hosts +"/account/login", 206 | method: "post", 207 | data:params 208 | }) 209 | } 210 | 211 | const _getAccountProfile = () => { 212 | return Axios({ 213 | url:hosts +"/account", 214 | method: "get", 215 | }) 216 | } 217 | 218 | const _addFavorites = (params) => { 219 | return Axios({ 220 | url:hosts +"/account/favorites/add", 221 | method: "post", 222 | data:params, 223 | }) 224 | } 225 | 226 | const _addView = (params) => { 227 | return Axios({ 228 | url:hosts +"/account/view/add", 229 | method: "post", 230 | data:params, 231 | }) 232 | } 233 | 234 | const _getFavorites = (params) => { 235 | return Axios({ 236 | url:hosts +"/account/favorites", 237 | method: "get", 238 | params:params 239 | }) 240 | } 241 | 242 | const _getViewHistory = (params) => { 243 | return Axios({ 244 | url:hosts +"/account/view/history", 245 | method: "get", 246 | params:params 247 | }) 248 | } 249 | 250 | const _getPicDetail = (id) =>{ 251 | return Axios({ 252 | url:hosts +"/getPicDetail" + '?nocache=' + new Date().getTime(), 253 | method: "get", 254 | params: {id} 255 | }) 256 | } 257 | 258 | const _getFansMedalLog = (params) =>{ 259 | return Axios({ 260 | url:hosts +"/fans/medal/log", 261 | method: "get", 262 | params: params 263 | }) 264 | } 265 | 266 | const _getHomeInfo = (params) =>{ 267 | return Axios({ 268 | url:hosts +"/home", 269 | method: "get", 270 | params: params 271 | }) 272 | } 273 | 274 | 275 | export default { 276 | _regAccount, 277 | _accountLogin, 278 | _getAccountProfile, 279 | _addFavorites, 280 | _addView, 281 | _getFavorites, 282 | _getViewHistory, 283 | _getHomeInfo, 284 | 285 | _getBV, 286 | _getVideoPart, 287 | _submitBV, 288 | _getDynamicDetail, 289 | _getPic, 290 | _getPicDetail, 291 | _getPicTags, 292 | _getNotification, 293 | _submit, 294 | _getOfficialQA, 295 | _getOfficialQADetail, 296 | _sortGetOfficialQA, 297 | _searchOfficialQA, 298 | _getArticleSorts, 299 | _submitArticle, 300 | _getMeme, 301 | _getArticleList, 302 | _getAccountInfo, 303 | _tempLogin, 304 | _tempView, 305 | _getRank, 306 | 307 | 308 | _getFansMedalLog 309 | } 310 | 311 | 312 | -------------------------------------------------------------------------------- /src/views/components/ImageCard.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 164 | 165 | 280 | -------------------------------------------------------------------------------- /src/views/MainPage.vue: -------------------------------------------------------------------------------- 1 | 85 | 86 | 192 | 193 | 243 | -------------------------------------------------------------------------------- /src/views/AsoulHistory.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 224 | 225 | -------------------------------------------------------------------------------- /public/timeline.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "content": "乐吧涉咕咕承认5.10 asoul吧的处理预案为极端堵嘴,任何事情往企划身上浇油。

[造谣粉头]

涉咕咕:这个企划把我孩子伤了,我要和这个企划鱼死网破,别的我根本不在乎,你们知道吗?

岁纳京子:对我而言,“确保珈乐的人身安全/确保珈乐能够顺利离开”的目的性大于“确保剩下四个人的公平待遇”

[某些粉丝]

不算拉踩:四个提线木偶, 一个反抗资本的勇士。

枝江难题:5-1=? 答案:5-1=0 因为1>4。

不计后果:没有退路怎么办,冲死企划再说。

践踏梦想:我们要去更大的舞台(鸟巢)———黑称巢友。

", 4 | "timestamp": "2022-06-20", 5 | "type": "warning", 6 | "hollow": true 7 | }, 8 | { 9 | "content": "“梧桐”在乐吧爆出另一份私联聊天记录", 10 | "timestamp": "2022-06-17 23:27", 11 | "type": "warning", 12 | "hollow": true 13 | }, 14 | { 15 | "content": "乐吧吧主涉咕咕解释5.10当天发的小作文【嘉然、乃琳相关为推测】", 16 | "timestamp": "2022-06-09", 17 | "type": "warning", 18 | "hollow": true, 19 | "url": "https://message.biliimg.com/bfs/im/03b095a2ad5ee64e8dd3b5eb07242931ba6cc99a.png", 20 | "srcList": 21 | [ 22 | "https://message.biliimg.com/bfs/im/03b095a2ad5ee64e8dd3b5eb07242931ba6cc99a.png" 23 | ] 24 | }, 25 | { 26 | "content": "珈乐中之人回应【唐啵虎说:期待接下来的小男友版本!!\n不过 那个聊天记录我看了 好像少了点东西\n当晚向上报备过了 又不是什么偷偷摸摸的事】", 27 | "timestamp": "2022-06-05 15:00左右", 28 | "type": "success", 29 | "hollow": true, 30 | "url": "https://message.biliimg.com/bfs/im/2e2cb6167dac5a3aefa1d3b2ce1d6e1d3be4e333.jpg", 31 | "srcList": 32 | [ 33 | "https://message.biliimg.com/bfs/im/2e2cb6167dac5a3aefa1d3b2ce1d6e1d3be4e333.jpg", 34 | "https://message.biliimg.com/bfs/im/74c7d6f3f45cabcdeddfc567fd301cbd40e98ebb.png", 35 | "https://message.biliimg.com/bfs/im/e963503d66f077a4212019f84645123a963fcc8e.png" 36 | ] 37 | }, 38 | { 39 | "content": "“梧桐”在乐吧爆出私联聊天记录", 40 | "timestamp": "2022-06-04 深夜", 41 | "type": "warning", 42 | "hollow": true 43 | }, 44 | { 45 | "content": "王国小团体”奈须蘑菇“爆出私联相关证据

一共私联了两位,“蘑菇”和“梧桐”

", 46 | "timestamp": "2022-06-04 深夜", 47 | "type": "warning", 48 | "hollow": true 49 | }, 50 | { 51 | "content": "珈乐中之人改名'魏啵鹿'->'宝宝的id都被占光了'后评论区回复【我没有ID可以改了】

以前微博粉丝一般叫王贝拉的化名微波炉,微波炉=wbl=王贝拉

在511直播中贝拉说过”我没有家可以回了“

", 52 | "timestamp": "2022-06-01 凌晨", 53 | "type": "success", 54 | "hollow": true, 55 | "url": "https://message.biliimg.com/bfs/im/71ba19fcb89552a0288ecf28f81e1d5a9b6def61.jpg", 56 | "srcList": 57 | [ 58 | "https://message.biliimg.com/bfs/im/71ba19fcb89552a0288ecf28f81e1d5a9b6def61.jpg" 59 | ] 60 | }, 61 | 62 | { 63 | "content": "珈乐中之人美图秀秀发文【三月四月就知道个人信息泄露,被开盒的人做什么都无济于事】", 64 | "timestamp": "2022-05-27 20:50", 65 | "type": "success", 66 | "hollow": true, 67 | "url": "https://message.biliimg.com/bfs/im/ad13b4d0d894fdfbc6e3e04f60bf126fbb7b8a7b.jpg", 68 | "srcList": 69 | [ 70 | "https://message.biliimg.com/bfs/im/ad13b4d0d894fdfbc6e3e04f60bf126fbb7b8a7b.jpg" 71 | ] 72 | }, 73 | { 74 | "content": "珈乐中之人评论区回复【宝宝回来了 今天去晒太阳爬山去了 看到了一只松许 两只蜈蚣 两只蜗牛 回答完毕你们今天在干嘛】

3小时后补充回复【这是今天我有印象觉得可爱的小动物 其实还有一只金龟子 很多很多鱼和鸟】

", 75 | "timestamp": "2022-05-24 18:51", 76 | "type": "success", 77 | "hollow": true, 78 | "url": "https://message.biliimg.com/bfs/im/110c49105fe1e07155747a92bc0c96432482233c.png", 79 | "srcList": 80 | [ 81 | "https://message.biliimg.com/bfs/im/110c49105fe1e07155747a92bc0c96432482233c.png", 82 | "https://message.biliimg.com/bfs/im/df44eecef19613e9ace135c74227ec97b354022a.png", 83 | "https://message.biliimg.com/bfs/im/f9cdfef3dd64e719f8072812ba17f14dffdb5e24.jpg" 84 | ] 85 | }, 86 | { 87 | "content": "A-SOUL_Official发布【[每周QA]称原住所泄漏是因为\"某张自拍照被三角定位导致\"】", 88 | "timestamp": "2022-05-24 18:51", 89 | "type": "primary", 90 | "hollow": true 91 | }, 92 | { 93 | "content": "青瞳视觉发布澄清声明【动捕服理论不可能划伤皮肤】", 94 | "timestamp": "2022-05-20 16:54", 95 | "type": "primary", 96 | "hollow": true 97 | }, 98 | { 99 | "content": "财通商社访谈:前A-SOUL负责人", 100 | "timestamp": "2022-05-19 17:20", 101 | "type": "primary", 102 | "hollow": true 103 | }, 104 | { 105 | "content": "A-SOUL企划上级对江南、V项目组的一封信,决定最后一次回应本次事件【无论你说什么做什么,别人都可能误解为大公司在霸凌一位处于弱势群体的员工】", 106 | "timestamp": "2022-05-18 00:06", 107 | "type": "primary", 108 | "hollow": true 109 | }, 110 | { 111 | "content": "A-SOUL_Official发布【[每周QA]个人隐私泄漏问题联系警方处理】", 112 | "timestamp": "2022-05-17 18:06", 113 | "type": "primary", 114 | "hollow": true 115 | }, 116 | { 117 | "content": "滨江区人力社保局回应【未发现杭州看潮信息咨询有限公司存在克扣工资和强迫签订劳动合同的情况

事件定性:2022年3月底,根据字节跳动内部业务规划,由杭州看潮信息咨询有限公司作为经纪公司于A-SOUL团队各成员沟通续约事宜,珈乐不同意续约,另外四人经协商达成续约。A-SOUL项目组决定从5月20日开始停止珈乐直播工作,并在5月10日对外宣布该决定。结合此前网络传播的部分信息以及珈乐本人在各平台网络账号中发布的信息,粉丝认为珈乐在A-SOUL项目中过得不好、不开心、待遇偏低等问题,同时担心其他四名成员人身安全和待遇问题,故掀起极大的反A-SOUL浪潮。

", 118 | "timestamp": "2022-05-16 18:39", 119 | "type": "primary", 120 | "hollow": true 121 | }, 122 | { 123 | "content": "某聊天记录
5.1凌晨联系网易云[此时ID为三松许]删除动态,之后她隐藏了动态、名字改为二手月季。
爆料人称57分钟前动态的为5月8日13:42(截图时间为14:24)
有一张与[二手月季]的wyy私信聊天截图(截图时间为凌晨1:14)", 124 | "timestamp": "2022-05-16 15:00", 125 | "type": "warning", 126 | "hollow": true, 127 | "url": "https://message.biliimg.com/bfs/im/ea07a7317fdad9899392b59862423fb7b20b9f8a.jpg", 128 | "srcList": 129 | [ 130 | "https://message.biliimg.com/bfs/im/ea07a7317fdad9899392b59862423fb7b20b9f8a.jpg" 131 | ] 132 | }, 133 | { 134 | "content": "S1应援会在B站发布专栏【3.5晚珈乐半夜被叫醒不存在期压、向晚脸模、绩效为假,4月中旬有人要挖全部成员的账号】", 135 | "timestamp": "2022-05-15 19:49", 136 | "type": "primary", 137 | "hollow": true 138 | }, 139 | { 140 | "content": "乐报、前乐组组长回旋镖发帖【还好自己人挖出来,提前10几天知道wyy,事情确实朝着对她有利的方向发展,在5.28晚销号,帖子删除】

已经回归现实

", 141 | "timestamp": "2022-05-15 02:41", 142 | "type": "warning", 143 | "hollow": true, 144 | "url": "https://message.biliimg.com/bfs/im/dc2176bd55f6bdb8e2cd4f4468235c2389e1378f.jpg", 145 | "srcList": 146 | [ 147 | "https://message.biliimg.com/bfs/im/dc2176bd55f6bdb8e2cd4f4468235c2389e1378f.jpg" 148 | ] 149 | }, 150 | { 151 | "content": "字节内部苏轼对于本次事件的回应【珈乐离队尝试挽留,但未能达成一致。薪资:粉丝在直播时候打赏了100元,小姐姐们可以获得10元分成】", 152 | "timestamp": "2022-05-14 18:56", 153 | "type": "primary", 154 | "hollow": true 155 | }, 156 | { 157 | "content": "A-SOUL_Official发布【A-SOUL制作委员会对近期事件的说明】", 158 | "timestamp": "2022-05-14 15:30", 159 | "type": "primary", 160 | "hollow": true 161 | }, 162 | { 163 | "content": "珈乐中之人转发微博后删除(设备为iPhone 13 mini)【最后一段原文称\"珈乐不是逃脱的胆小鬼,是勇于冲破资本霸陵的酷盖。另外四个女孩子是被资本欺骗的可怜人\"】

次日微博显示昨日发博1

", 164 | "timestamp": "2022-05-14 02:16", 165 | "type": "success", 166 | "hollow": true, 167 | "url": "https://message.biliimg.com/bfs/im/6424dce21f83c50cb5bd255c7105742ab215b9db.jpg", 168 | "srcList": 169 | [ 170 | "https://message.biliimg.com/bfs/im/6424dce21f83c50cb5bd255c7105742ab215b9db.jpg", 171 | "https://message.biliimg.com/bfs/im/2e1eb9d524c6a32a37c94f776a4d52a6a63578b0.jpg" 172 | ] 173 | }, 174 | { 175 | "content": "岱川Doris在直播间放了一段珈乐中之人的语音【我刚刚去你B站评论区看了,他们在下面闹,有没有骚扰你的啊】", 176 | "timestamp": "2022-05-11 晚 岱川Doris直播", 177 | "type": "success", 178 | "hollow": true 179 | }, 180 | { 181 | "content": "A-SOUL_Official发布【《给一个魂的一封信》A-SOUL企划负责人苏轼】", 182 | "timestamp": "2022-05-11 19:05", 183 | "type": "primary", 184 | "hollow": true 185 | }, 186 | { 187 | "content": "A-SOUL_Official发布【追加一场珈乐的单播】", 188 | "timestamp": "2022-05-11 15:50", 189 | "type": "primary", 190 | "hollow": true 191 | }, 192 | { 193 | "content": "某豆友的核中核", 194 | "timestamp": "2022-05-11 08:00", 195 | "type": "info", 196 | "hollow": true, 197 | "url": "https://message.biliimg.com/bfs/im/91c3148b917fc9fad0c7f3003eec53cf08118d75.jpg", 198 | "srcList": [ 199 | "https://message.biliimg.com/bfs/im/91c3148b917fc9fad0c7f3003eec53cf08118d75.jpg", 200 | "https://message.biliimg.com/bfs/im/df2e9e81e853cef0a5240f2f77163f40011c6b6d.jpg", 201 | "https://message.biliimg.com/bfs/im/cfde7a9ff8647dae9ba52e40f12e895dbbe2e7eb.jpg" 202 | ] 203 | }, 204 | { 205 | "content": "A-SOUL_Official发布【A-SOUL制作委员会的临时QA】", 206 | "timestamp": "2022-05-11 02:39", 207 | "type": "primary", 208 | "hollow": true 209 | }, 210 | { 211 | "content": "原乐组组长、乐超主持人岁纳京子发文【你们现在随便一搜都能看到,关于她的那些消息。训练到凌晨,练到吐,身体受伤,职业病。】", 212 | "timestamp": "2022-05-10 18:54", 213 | "type": "info", 214 | "hollow": true 215 | }, 216 | { 217 | "content": "珈乐网易云动态留档截图开始在各处传播

疑点:一张截图为57分钟前、另一张为12:42都没有截日期、网易云ID为[二手月季]

", 218 | "timestamp": "2022-05-10 17:30-18:00", 219 | "type": "success", 220 | "hollow": true, 221 | "url": "https://message.biliimg.com/bfs/im/59b30bd7f0d1fb5f30789e58e4d6086fe0e6c2cc.jpg", 222 | "srcList": 223 | [ 224 | "https://message.biliimg.com/bfs/im/59b30bd7f0d1fb5f30789e58e4d6086fe0e6c2cc.jpg", 225 | "https://message.biliimg.com/bfs/im/f3608a15a9facebe02ddd590bd07b30e251367bf.jpg", 226 | "https://i0.hdslb.com/bfs/article/6ab6fc4fd29d5f9916d38e9d1e87c073340b65b0.jpg", 227 | "https://i0.hdslb.com/bfs/article/698f99e2ffe6181e070aebe281b28d1d3681f2a2.jpg", 228 | "https://i0.hdslb.com/bfs/article/494fc0c30884cffd9c414386c7363c64e6621d24.jpg" 229 | ] 230 | }, 231 | { 232 | "content": "原乐组组长、乐超主持人岁纳京子发文【嘉然的处境很困难,与珈乐相依为暖,无法解约,称A-SOUL甩锅给珈乐】", 233 | "timestamp": "2022-05-10 17:42", 234 | "type": "info", 235 | "hollow": true 236 | }, 237 | { 238 | "content": "原乐组组长、乐超主持人岁纳京子发文【珈乐失去声音、失去健康讨厌杭州,宿舍不能养富贵,捡来的小狗也被抢走】", 239 | "timestamp": "2022-05-10 17:13", 240 | "type": "info", 241 | "hollow": true 242 | }, 243 | { 244 | "content": "某楼友的核中核", 245 | "timestamp": "2022-05-10 16:52", 246 | "type": "info", 247 | "hollow": true, 248 | "url": "https://message.biliimg.com/bfs/im/b97cf1c71164b1ad253661c0deaf43b30259bcdd.png", 249 | "srcList": 250 | [ 251 | "https://i0.hdslb.com/bfs/article/5aa3e07af0af7ec46a4cbd9695a16fbe8191bca5.jpg" 252 | ] 253 | }, 254 | { 255 | "content": "某用户回帖【聊天截图时间为4.28,A-SOUL要换UE了,5.10会宣布珈乐毕业】", 256 | "timestamp": "2022-05-10 16:50", 257 | "type": "warning", 258 | "hollow": true 259 | }, 260 | { 261 | "content": "原乐组组长、乐超主持人岁纳京子发文【更多更恶心的事在这个企划中,中之人就是人下人】,王力口乐吧吧主涉咕咕后续在贴吧、B站发文", 262 | "timestamp": "2022-05-10 16:36", 263 | "type": "info", 264 | "hollow": true 265 | }, 266 | { 267 | "content": "A-SOUL_Official发布【珈乐因身体及学业原因进入\"直播休眠\"】", 268 | "timestamp": "2022-05-10 16:30", 269 | "type": "primary", 270 | "hollow": true 271 | } 272 | ] -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 39 | 40 | 41 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 54 | 55 | 56 | 59 | { 60 | "keyToString": { 61 | "RunOnceActivity.OpenProjectViewOnStart": "true", 62 | "RunOnceActivity.ShowReadmeOnStart": "true", 63 | "WebServerToolWindowFactoryState": "false", 64 | "node.js.detected.package.eslint": "true", 65 | "node.js.selected.package.eslint": "(autodetect)", 66 | "nodejs_package_manager_path": "npm", 67 | "settings.editor.selected.configurable": "editor.preferences.fonts.default", 68 | "vue.rearranger.settings.migration": "true" 69 | } 70 | } 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 441 | 442 | 459 | --------------------------------------------------------------------------------