Janx 2 years ago
parent 104cd0fcf2
commit 91d7e734e3

@ -1,7 +1,7 @@
# 寻国记poetry-uiVue2
## 网站示例
[寻国记poetize.cn](https://poetize.cn)
[寻国记poetize.cn](https://poetize.cn) master
[ROGINSHIN - 兴 ](https://www.roginx.ink/)
## 技术栈
前端技术Vue2博客系统Vue3聊天室系统Element UIVue2Element-Plus UIVue3Naive UIVue3

22598
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -12,14 +12,19 @@
"core-js": "^3.6.5",
"crypto-js": "^4.1.1",
"element-ui": "^2.4.5",
"imagesloaded": "^5.0.0",
"lg-thumbnail.js": "^1.2.0",
"lightgallery.js": "^1.4.0",
"markdown-it": "^12.2.0",
"masonry-layout": "^4.2.2",
"mavon-editor": "^2.9.1",
"node-sass": "^8.0.0",
"openssl": "^2.0.0",
"qs": "^6.10.3",
"useless-files-webpack-plugin": "^1.0.1",
"vue": "^2.6.11",
"vue-baberrage": "^3.2.4",
"vue-lazyload": "^1.3.3",
"vue-ripple-directive": "^2.0.1",
"vue-router": "^3.2.0",
"vuedraggable": "^2.24.3",

@ -2,29 +2,29 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv='content-language' content='zh-cn'>
<meta charset="utf-8" />
<meta name="Robots" content="all" />
<meta name="KEYWords" content="janx,pixiv,博客,游戏,动漫"/>
<meta name="DEscription" content="Janxland,Janx,动漫,游戏,博客">
<meta name="keywords" content="Janxland,Janx,Roginshin,roginx,人工智能,前端,后端,动漫,游戏,博客"/>
<meta name="description" content="Janxland,Janx,Roginshin,roginx,人工智能,动漫,游戏,博客">
<meta name="baidu-site-verification" content="codeva-FAjK1LxybY" />
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<meta content="webkit" name="renderer" />
<!-- <meta http-equiv="X-UA-Compatible" content="IE=edge"> -->
<meta name="force-rendering" content="webkit"/>
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="./poetize.jpg" sizes="16x16">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.min.css">
<link href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet">
<title>Roginx</title>
<!-- <script>
fetch('https://search.heweather.net/find?key=3180d3c43e524753ab8bcef69dba023a&group=cn&lang=zh&location=450800')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
top.dominCN = myJson.HeWeather6[0].basic[0]
});
</script> -->
<title>ROGINSHIN - 兴</title>
<script>
// fetch('https://search.heweather.net/find?key=3180d3c43e524753ab8bcef69dba023a&group=cn&lang=zh&location=450800')
// .then(function(response) {
// return response.json();
// })
// .then(function(myJson) {
// top.dominCN = myJson.HeWeather6[0].basic[0]
// });
</script>
<script type="text/javascript">
window.jQuery || document.write("<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js'>"+ "<"+"/script>");
</script>
@ -39,19 +39,9 @@
<script src="https://cdn.bootcdn.net/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/clipboard.js/2.0.8/clipboard.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/qiniu-js/3.4.1/qiniu.min.js"></script>
<link href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet">
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/qiniu-js/3.4.0/qiniu.min.js"></script> -->
<!-- lg插件 -->
<script src="./music-js/aes.js"></script>
<script src="./music-js/BigInt.js"></script>
<script src="./music-js/Barrett.js"></script>
<script src="./music-js/RSA.js"></script>
<script src="./music-js/163Api.js"></script>
<script src="./music-js/jsoup.js"></script>
<script src="./music-js/JMshake.js"></script>
<!-- 统计代码 https://analytics.apimoe.lol/ -->
<script defer src="https://analytics.apimoe.lol/pixel/CmhIWUSAeHp5v5Kq"></script>
<!-- /统计代码 -->
<link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.min.css">
<style>
body {
margin: 0;
@ -60,20 +50,29 @@
</head>
<body>
<div id="app"></div>
<script src="./music-js/aes.js"></script>
<script src="./music-js/BigInt.js"></script>
<script src="./music-js/Barrett.js"></script>
<script src="./music-js/RSA.js"></script>
<script src="./music-js/163Api.js"></script>
<script src="./music-js/jsoup.js"></script>
<script src="./music-js/JMshake.js"></script>
<!-- lg -->
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7/lightgallery.min.js"></script>
<link href="https://fastly.jsdelivr.net/npm/lightgallery@2.7/css/lightgallery-bundle.min.css" rel="stylesheet"></link>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/thumbnail/lg-thumbnail.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/hash/lg-hash.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/rotate/lg-rotate.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/video/lg-video.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/zoom/lg-zoom.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/fullscreen/lg-fullscreen.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/autoplay/lg-autoplay.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/comment/lg-comment.min.js"></script>
<!-- <script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/share/lg-share.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/lightgallery@2.7.1/plugins/pager/lg-pager.min.js"></script> -->
<!-- <script src="https://fastly.jsdelivr.net/npm/masonry.js@3.1.5/dist/masonry.pkgd.min.js"></script> -->
<!-- <script src="https://fastly.jsdelivr.net/npm/vue-lazyload@3.0.0-rc.2/vue-lazyload.min.js"></script> -->
</body>
<!-- lg -->
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7/lightgallery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/lightgallery@2.7/css/lightgallery-bundle.min.css" rel="stylesheet"></link>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/thumbnail/lg-thumbnail.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/hash/lg-hash.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/rotate/lg-rotate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/video/lg-video.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/zoom/lg-zoom.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/fullscreen/lg-fullscreen.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/autoplay/lg-autoplay.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/comment/lg-comment.min.js"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/share/lg-share.min.js"></script> -->
<!-- <script src="https://cdn.jsdelivr.net/npm/lightgallery@2.7.1/plugins/pager/lg-pager.min.js"></script> -->
<script>
new WOW().init();
</script>

@ -43,7 +43,7 @@ var JMusicjsoup = {
},
getListsongs:function(callback){
$.ajax({
url:'/mapi163/weapi/v3/playlist/detail',
url:'/mapi163/weapi/v6/playlist/detail',
data:{'params':'KvByhpvz7lzKJlmmur31pyP9wun0SzssbTnXHQveNOPYvGMFH7w8U+0pcbpv3NX0','encSecKey':'be25f5794f940eebbde77dba783699e38bc12db41eadee670e69ebd16a3b29277817dd1795814de4c8264a28e5383da8620736d21275cc3b1f32797c4c63ca76db5dcae60fb21cc2b5d02741ed49fef00dcdaf3e16027de3c5ede1c7d8b8c182f1b0c5fedac846a5f511dbcda94936425b7a5df71dfd54cad47120e26d974b64'},
dataType:'json',
type:'post',
@ -142,7 +142,7 @@ var JMusicjsoup = {
setV.d = `{"id":"${id}","total":"True","limit":1000,"n":1000,"csrf_token":"09556b378da338d2c373d38422f901a6"}`;
var res = __getKeyton();
$.ajax({
url:'/mapi163/weapi/v3/playlist/detail',
url:'/mapi163/weapi/v6/playlist/detail',
// url:'/mapi163/weapi/middle/clientcfg/config/list?csrf_token=',
data:{'params':res[0],'encSecKey':res[1]},
dataType:'json',

@ -15,7 +15,7 @@ export default {
watch: {},
created() {
this.$store.commit("changePlaylist", this.$constant.playlists[Math.floor(Math.random() * this.$constant.playlists.length)]);
},
mounted() {

@ -1,4 +1,14 @@
:root {
--color-body-bg: #ffffff;
--color-text: #000;
--color-primary: #335eea;
--color-primary-bg: #eaeffd;
--color-secondary: #7a7a7b;
--color-secondary-bg: #f5f5f7;
--color-navbar-bg: rgba(255, 255, 255, 0.86);
--color-primary-bg-for-transparent: rgba(189, 207, 255, 0.28);
--color-secondary-bg-for-transparent: rgba(209, 209, 214, 0.28);
--html-overflow-y: overlay;
/* 背景 */
--background: white;
--gradualBackground: linear-gradient(to right bottom, #ee7752, #e73c7e, #23a6d5, #23d5ab);
@ -19,6 +29,7 @@
/* 主题背景 */
--themeBackground: orange;
--themeBackground-bg: rgb(253, 237, 208);
/* 主题悬停背景 */
--gradualRed: linear-gradient(to right, #ff4b2b, #ff416c);

@ -361,9 +361,10 @@ body {
transition: opacity .3s;
background: rgba(0,0,0,.7)
}
.mceTmpl{
.mceTmpl,tinytemplate{
position:relative;
user-select: none;
display: block;
}
.check_label{
box-sizing: border-box;
@ -375,15 +376,15 @@ body {
opacity: 1;
bottom: 0;
left: 0;
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, var(--background) 70%);
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, var(--background) 100%);
pointer-events: none;
}
.hideContext{
position: relative;
box-sizing: border-box;
width:100%;
max-height:120px;
min-height: 80px;
max-height:160px;
min-height: 100px;
overflow: hidden;
transition:.3s;
}

@ -0,0 +1,47 @@
{
"bookSourceComment": "",
"bookSourceGroup": "🎨漫画",
"bookSourceName": "🎨禁漫天堂(正文有问题)",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/jmcomic1.me\/",
"customOrder": 37,
"enabled": true,
"enabledExplore": true,
"exploreUrl": "总排行榜::\/albums?o=mv?page={{key}}\n月排行榜::\/albums?t=m&o=mv?page={{key}}\n周排行榜::\/albums?o=mv&t=w?page={{key}}\n日排行榜::\/albums?o=mv&t=t?page={{key}}\n最新A漫::\/albums?o=mr?page={{key}}\n同人::\/albums\/doujin?page={{key}}\n\n单行本::\/albums\/single?o=mr?page={{key}}\n短篇::\/albums\/short?page={{key}}\n其他::\/albums\/another?page={{key}}\n韩漫::\/albums\/hanman?page={{key}}\n美漫::\/albums\/meiman?page={{key}}\ncosplay::\/albums\/another\/sub\/cosplay?page={{key}}",
"lastUpdateTime": 1651214216611,
"respondTime": 180000,
"ruleBookInfo": {
"coverUrl": "class.thumb-overlay.2@tag.img@src",
"init": "",
"intro": "class.nav-tab-content@class.p-t-5 p-b-5@text",
"kind": "class.tag-block.3@text",
"name": "class.panel-heading.0@text"
},
"ruleContent": {
"content":"class.row thumb-overlay-albums",
"imageStyle": "Full"
},
"ruleExplore": {
"bookList": "class.col-xs-6 col-sm-6 col-md-4 col-lg-3 list-col",
"bookUrl": "tag.a.0@href",
"coverUrl": "tag.img@src",
"intro": "class.p-t-5 p-b-5.7@text",
"kind": "class.title-truncate@tag.a@text",
"name": "class.video-title title-truncate m-t-5@text"
},
"ruleSearch": {
"bookList": "class.list-col",
"bookUrl": "tag.a.0@href",
"realUrl":"class.img@data-original",
"coverUrl": "class.img@data-original",
"kind": "class.title-truncate tags p-b-5@tag.a@text",
"name": "tag.img@title"
},
"ruleToc": {
"chapterList": "class.btn-toolbar.0@tag.a||class.col btn btn-primary dropdown-toggle reading",
"chapterName": "text",
"chapterUrl": "tag.a@href"
},
"searchUrl": "https:\/jmcomic1.me\/search\/photos?search_query={{key}}&main_tag=0",
"weight": 0
}

@ -7,7 +7,7 @@
<div style="background: var(--background)" class="my-animation-slide-bottom">
<div class="about-wrap">
<h1 style="font-size: 40px;font-weight: 500;letter-spacing: 5px;">两只毛驴鸣翠柳</h1>
<h1 style="font-size: 40px;font-weight: 500;letter-spacing: 5px;">关于博主</h1>
<!-- 对话框 -->
<div class="about-box">
<h4> {{$store.state.webInfo.webName}} 对话中...</h4>
@ -35,18 +35,23 @@
sayShow: false,
sayContent: [
{
"talk": ["Hi, there👋", "这是一个 Vue2 Vue3 与 SpringBoot 结合的产物~"],
"talk": ["Hi, there👋", "这是一个 Vue2 与 SpringBoot 结合的产物~项目名为Ablaze"],
"reply": ["然后呢? 😃", "少废话! 🙄"]
}, {
"talk": ["😘",
"本站平时仅用于交流和学习新知识",
"本站仅用于交流和学习新知识",
"如涉及侵权请联系站长删除对应资源,谢谢!!!"],
"reply": ["这个网站有什么用吗? 😂"]
"reply": ["关于博主"]
}, {
"talk": ["拥有自己的独立网站难道不酷吗🚀",
"那就摸鱼吧👋",
"摸鱼大军请在聊天室集合🥝"],
"reply": []
"talk": ["博主目前是一位热爱技术的普通大一学生",
"主要学习方向是大数据与人工智能",
"当然嵌入式和单片机等硬件工程师方向也有在学啦,希望多多指教~"],
"reply": ["联系方式📞"]
},{
"talk": ["💌Mailjanxland@gmailjanxland@qq.com",
"QQ983341575",
"微信号janxland"],
"reply": ["了解完毕~"]
}
],
sayIndex: 0

@ -0,0 +1,710 @@
<template>
<div>
<loader :loading="loading">
<!-- 加载页面 -->
<template slot="loader">
<div>
<zombie></zombie>
</div>
</template>
<!-- 内容页面 -->
<template slot="body">
<!-- 首页图片 -->
<el-image style="animation: header-effect 2s"
class="background-image"
:src="albumPoster"
fit="cover">
<div slot="error" class="image-slot background-image-error"></div>
</el-image>
<!-- 首页文字 -->
<div class="signature-wall myCenter my-animation-hideToShow">
<h1 class="playful">
<span v-for="(a, index) in albumTitle" :key="index">{{a}}</span>
</h1>
<div class="printer" @click="getGuShi()">
<printer :printerInfo="printerInfo">
<template slot="paper" slot-scope="scope">
<h3>
{{ scope.content }}<span class="cursor">|</span>
</h3>
</template>
</printer>
</div>
<div id="bannerWave1"></div>
<div id="bannerWave2"></div>
<i class="el-icon-arrow-down" @click="navigation('.page-container-wrap')"></i>
</div>
<div class="page-container-content" v-show="albumContent">
<div class="aurora-content" v-html="albumContent"></div>
</div>
<!-- 首页内容 -->
<div class="page-container-wrap" v-if="!$route.query.type">
<div class="grid grid-album" ref="grid">
<div class="grid-item grid-item-album" v-for="(item, index) in albumItems[0]" :href="item" target="_blank" :key="item"
:overtip="`+ ${albumItems[0].length-9}`"
:data-sub-html="albumItems[1][index]?`<a target=_blank href=/album?type=aurora&id=${articles[index].id}>${albumItems[1][index]}</a>`:'NO NOTE'"
data-fb-html='是否需要添加评论功能呢?'
>
<div class="imgbox" style="position: relative;overflow: hidden;display: flex;border-radius: 14px;">
<div class="imgAlt">
{{albumItems[1][index]}}
</div>
<img target="_blank" :title="albumItems[1][index]" onerror="this.src='https://cdn.seovx.com/d/?mom=302'" class="lazyload_images" :data-source="item.indexOf('qiniu.roginx.ink')!=-1?item+'-normal':item" v-lazy="checkImage(item,albumItems[1][index])" alt="">
</div>
<span @click.stop="routerAurora(articles[index].id)">{{albumItems[1][index]}}</span>
</div>
<div class="grid-sizer"></div>
</div>
<div class="pagination-wrap">
<div @click="pageArticles()" class="pagination" v-if="pagination.total !== articles.length">
下一页
</div>
<div v-else style="user-select: none">
~~到底啦~~
</div>
</div>
</div>
<div class="page-container-wrap" v-if="$route.query.type">
<div class="grid" ref="grid">
<a class="grid-item" v-for="(item, index) in albumItems[0]" :href="item" target="_blank" :key="item"
:overtip="`+ ${albumItems[0].length-9}`"
:data-sub-html="albumItems[1][index]||'NO NOTE'"
data-fb-html='是否需要添加评论功能呢?'
>
<div class="imgbox" style="position: relative;overflow: hidden;display: flex;border-radius: 14px;">
<div class="imgAlt">
{{albumItems[1][index]}}
</div>
<img target="_blank" :title="albumItems[1][index]" onerror="this.src='https://agentestudio.com/uploads/post/image/69/main_how_to_design_404_page.png'" class="lazyload_images" v-lazy="checkImage(item,albumItems[1][index])" alt="">
</div>
</a>
<div class="grid-sizer"></div>
</div>
<div class="pagination-wrap">
<div @click="pageArticles()" class="pagination" v-if="pagination.total !== articles.length">
下一页
</div>
<div v-else style="user-select: none">
~~到底啦~~
</div>
</div>
</div>
<!-- 页脚 -->
<div style="background: var(--background)">
<myFooter></myFooter>
</div>
</template>
</loader>
</div>
</template>
<script>
import Masonry from 'masonry-layout'
import imagesLoaded from 'imagesloaded'
import sourceHandle from '../utils/sourceHandle'
const loader = () => import( "./common/loader");
const zombie = () => import( "./common/zombie");
const printer = () => import( "./common/printer");
const myFooter = () => import( "./common/myFooter");
import jmcomic from '../assets/json/jmcomiccity.json'
export default {
components: {
loader,
zombie,
printer,
myFooter,
},
data() {
return {
loading: false,
albumLoading:true,
showAside: true,
albumTitle:"动态相册",
albumPoster:this.$constant.two_poem_image[0],
printerInfo: "你看对面的青山多漂亮",
pagination: {
current: 1,
size: 30,
total: 0,
searchKey: ""
},
guShi: {
"content": "",
"origin": "",
"author": "",
"category": ""
},
options: {
// Masonry
gutter: 10,
columnWidth: '.grid-item',
itemSelector: '.grid-item',
percentPosition: true,
},
routerMap:{
"aurora":this.getAurora,
"acg":this.getRandom,
"web":this.getWeb,
"dynamic":this.getDynamic
},
articles: [],
albumItems:[[],[]],
albumContent:undefined,
masonry: null,
dynamicGallery: undefined
};
},
watch: {
'$route.query': {
handler(newQuery, oldQuery) {
this.albumItems.length = 0;
this.getGuShi();
this.pagination.size = this.$route.query.type?10:30;
if(!this.$route.query.type){
this.getArticles();
} else {
try {
this.routerMap[this.$route.query.type]("");
} catch (error) {
console.log(error);
this.$message({
message: "错误的路由!",
type: "error"
});
}
}
},
immediate: true // handler
}
},
mounted() {
// this.$common.loadAssets([{type:"js",src:"https://fastly.jsdelivr.net/npm/lightgallery@2.7/lightgallery.min.js"}]);
},
updated(){
// this.albumLoading = true;
// this.masonry = new Masonry(this.$refs.grid, this.options);
// //
// imagesLoaded(this.$refs.grid, () => {
// this.albumLoading = false;
// this.masonry.layout();
// this.$nextTick(()=>{
// try {
// top.dynamicGallery?.destroy();
// } catch (error) {
// }
// top.dynamicGallery = lightGallery(this.$refs.grid,{
// plugins: [lgHash,lgRotate,lgVideo,lgZoom,lgFullscreen,lgAutoplay,lgComment],
// mode: 'lg-slide',
// cssEasing: 'ease',
// commentBox: true,
// fbComments: true,
// galleryId:1,
// speed: 300
// });
// })
// })
},
methods: {
checkImage(src,notice){
if(notice?.slice(0, 4)=="NSFW"&&!this.$route.query.NSFW)
return 'https://gd-hbimg.huaban.com/9d4628a3c336c8c816366d7f8b6a7937cd2b3b74c9bd4-KYmhYR_fw658webp'
else
return src.indexOf('qiniu.roginx.ink')!=-1?src+'-album':src
},
reInitGallery(){
this.$nextTick(()=>{
try {
top.dynamicGallery?.destroy();
} catch (error) {
}
top.dynamicGallery = lightGallery(this.$refs.grid,{
plugins: [lgHash,lgRotate,lgVideo,lgZoom,lgFullscreen,lgAutoplay,lgComment],
mode: 'lg-slide',
cssEasing: 'ease',
commentBox: true,
fbComments: true,
galleryId:1,
speed: 300
});
})
},
checkPicture(){
let thi = this;
this.albumLoading = true;
let masonryInterval;
this.masonry = new Masonry(this.$refs.grid, this.options);
this.reInitGallery();
masonryInterval = setInterval(() => {
this.masonry.layout();
this.masonry.getItemElements().forEach((item) => {
const img = item.querySelector('img');
if (img) {
if (!img.complete) {
//
img.onload = () => {
console.log("图片已加载");
if (img.naturalWidth < 160 || img.naturalHeight < 100) {
if(this.$route.query.type) this.masonry.remove(item);
}
};
} else if (img.naturalWidth < 160 || img.naturalHeight < 100) {
if(this.$route.query.type) this.masonry.remove(item);
}
}
});
}, 1250);
//
imagesLoaded(this.$refs.grid, () => {
this.masonry = new Masonry(this.$refs.grid, this.options);
this.albumLoading = false;
this.reInitGallery();
})
},
pageArticles() {
this.pagination.current = this.pagination.current + 1;
if(!this.$route.query.type){
this.getArticles();
} else {
try {
this.routerMap[this.$route.query.type]();
} catch (error) {
console.log(error);
this.$message({
message: "错误的路由!",
type: "error"
});
}
}
},
getWeb(){
// sourceHandle.ruleSearch(jmcomic,"").then((res)=>{
// let list = sourceHandle.selector(res,jmcomic.ruleSearch.bookList);
// console.log(list);
// list.toArray().forEach((item)=>{
// console.log(sourceHandle.getBookPreview(item,jmcomic.ruleSearch));
// });
// })
// sourceHandle.ruleBookInfo(jmcomic,"/album/439179/hana-bunny-raiden-shogun-starbucks-genshin-impact").then((res)=>{
// console.log(sourceHandle.getBookInfo(res,jmcomic.ruleBookInfo));
// })
// sourceHandle.ruleContent(jmcomic,"/photo/439179/").then((res)=>{
// let s = sourceHandle.getBookContent(res,jmcomic.ruleContent.content);
// console.log(s);
// $("#IFRAME").append(res);
// })
this.albumTitle = "网页图片加载中...";
return fetch('/api/scrape', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url: this.$route.query.url || "https://www.roginx.ink/v/daily_picture.html" || "https://www.evacg.cc/" })
})
.then(response => response.text())
.then(html => {
html = html.replace(/<script.*?<\/script>/gs, '')// class
const doc = $(html);
let obj = [[],[]]
let images;
if(this.$route.query.selector){
obj[0] = sourceHandle.getAttr(doc,this.$route.query.selector);
obj[1] = obj[0];
} else {
images = doc.find("img").toArray();
obj[0] = images.map((image) => {
return image.getAttribute("data-src") || image.src;
});
obj[1] = images.map((image) => {
return image.alt;
});
}
this.albumTitle = $(html).filter('title').text();
this.albumPoster = obj[0][Math.floor(obj[0].length / 2)];
this.albumItems = obj;
setTimeout(() => {
this.checkPicture();
}, 1000);
return doc;
})
.catch(error => console.error(error));
},
getRandom(){
this.albumTitle = "网页图片加载中...";
let obj = [[],[]]
obj[0] = new Array(this.$route.query.num??20);
obj[1] = new Array(this.$route.query.num??20).fill("这是随机图片");
for(let index=0;index<obj[0].length;index++){
obj[0][index] = this.$route.query.api??this.$constant.ACGAPI[this.$route.query.cannel??0]+"?id="+index
}
this.albumTitle = "随机二次元图片";
this.albumPoster = this.$route.query.api??this.$constant.ACGAPI[this.$route.query.cannel??0];
this.albumItems = obj;
console.log(obj);
setTimeout(() => {
this.checkPicture();
}, 1000);
},
getAurora(){
this.albumTitle = "网页图片加载中...";
this.$http.get(`/aurora/get/work/pt/${this.$route.query.id}`)
.then((res) => {
if (!this.$common.isEmpty(res)) {
document.title = res.title;
this.albumTitle = res.title;
this.albumContent = res.content;
this.albumItems = JSON.parse(res.picture);
this.albumPoster = res.poster;
this.checkPicture();
this.$store.commit("pushPlaylist",res.content?.match(/playlist=(\d+)/)[1]);
}
})
.catch((error) => {
this.$message({
message: error.message,
type: "error"
});
});
},
getArticles() {
this.$http.get(`/aurora/search/works/pt?type=1&point=pt&start=${(this.pagination.current-1)*this.pagination.size}&num=${this.pagination.size}&keys=${this.pagination.searchKey}`)
.then((res) => {
if (!this.$common.isEmpty(res)) {
this.albumTitle = "图册集";
this.articles = this.articles.concat(res[0].filter(item=>{ return item.adm === 0}));
this.pagination.total = res[1].total;
let obj = [[],[]]
this.articles.forEach(article => {
obj[0].push(article.poster)
obj[1].push(article.title)
});
this.albumItems = obj;
this.checkPicture();
}
})
.catch((error) => {
this.$message({
message: error.message,
type: "error"
});
});
},
getDynamic() {
this.secret ? "": this.secret = prompt("请输入密码(可以猜一猜😀", "");
if(this.secret!="罗进兴") {
this.$message({
message: "密码错误啦!我将对你进行传送😆!",
type: "error"
});
setTimeout(() => {
window.location.href=`/album?type=aurora&id=196`
// window.location.href=`/album?type=aurora&id=${ Math.floor(Math.random() * 200) + 1}`
}, 3000);
return;
};
this.$http.post(this.$constant.baseURL + "/diary/listArticle", this.pagination)
.then((res) => {
if (!this.$common.isEmpty(res.data)) {
this.albumTitle = "动态相册";
this.articles = this.articles.concat(res.data.records);
this.pagination.total = res.data.total;
let obj = [[],[]]
this.articles.forEach(artcile => {
let items = JSON.parse(artcile.articleItems)
obj[0].push(...items[0])
obj[1].push(...items[1])
});
this.albumItems = obj;
this.checkPicture();
}
})
.catch((error) => {
this.$message({
message: error.message,
type: "error"
});
});
},
navigation(selector) {
let pageId = document.querySelector(selector);
window.scrollTo({
top: pageId.offsetTop,
behavior: "smooth"
});
},
getGuShi() {
let that = this;
let xhr = new XMLHttpRequest();
xhr.open('get', this.$constant.jinrishici);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
that.guShi = JSON.parse(xhr.responseText);
that.printerInfo = that.guShi.content;
}
};
xhr.send();
},
routerAurora(auroraId){
this.$router.push({ path: '/album', query: { ...this.$route.query,id:auroraId,type:'aurora' } })
// window.open(url)
}
}
}
</script>
<style>
.page-container-content{
background: var(--background);
padding: 25px 15px;
margin-top: -3px;
}
.page-container-content .aurora-content{
margin: auto;
max-width: 800px;
}
.grid{
display: flex;
flex-wrap: wrap;
margin-left: 10px;
background-color: var(--background);
animation: zoomIn 0.8s ease-in-out;
}
.grid.loadding .grid-item{
opacity: 0;
animation: zoomIn 0.8s ease-in-out;
}
.grid-item{
animation: zoomIn 0.8s ease-in-out;
display: block;
position: absolute;
width: calc(20% - 10px);
cursor: zoom-in;
margin-bottom: 12px;
min-width: 100px;
min-height: 80px;
overflow: hidden;
}
.grid-item-album{
background: none !important;
}
.grid-item-album span:hover{
color:var(--themeBackground);
transition: .3s;
}
.grid-item-album span {
transition: .3s;
cursor: pointer;
margin-top:6px;
margin-bottom: 15px;
line-height: 20px;
display: block;
color:var(--fontColor);
}
.grid-item .imgAlt{
cursor: pointer;
position: absolute;
width:100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
opacity: 0;
background-color: var(--mask);
color:white;
pointer-events:none;
transition: .3s;
}
.grid-item:hover .imgAlt{
opacity: 1;
transition: .3s;
}
.grid-item img{
background-color: var(--lightGray);
width: 100%;
height: 100%;
}
.grid-sizer{
width: 20%;
}
.grid-item--width2 { width: 160px; }
.grid-item--height2 { height: 140px; }
.signature-wall {
/* 向下排列 */
display: flex;
flex-direction: column;
position: relative;
user-select: none;
height: 100vh;
overflow: hidden;
}
.playful {
color: var(--white);
font-size: 40px;
}
.printer {
cursor: pointer;
color: var(--white);
background: var(--translucent);
border-radius: 10px;
padding-left: 10px;
padding-right: 10px;
}
#bannerWave1 {
height: 84px;
background: var(--bannerWave1);
position: absolute;
width: 200%;
bottom: 0;
z-index: 10;
animation: gradientBG 120s linear infinite;
}
#bannerWave2 {
height: 100px;
background: var(--bannerWave2);
position: absolute;
width: 400%;
bottom: 0;
z-index: 5;
animation: gradientBG 120s linear infinite;
}
/* 光标 */
.cursor {
margin-left: 1px;
animation: hideToShow 0.7s infinite;
font-weight: 200;
}
.el-icon-arrow-down {
font-size: 40px;
font-weight: bold;
color: var(--white);
position: absolute;
bottom: 60px;
animation: my-shake 1.5s ease-out infinite;
z-index: 15;
cursor: pointer;
}
.page-container-wrap {
background: var(--background);
position: relative;
transition: .5s;
}
.page-container {
display: flex;
justify-content: center;
width: 90%;
max-width: 1280px;
padding: 0 20px 40px 20px;
margin: 0 auto;
flex-direction: row;
}
.recent-posts {
width: 70%;
}
.announcement {
padding: 22px;
border: 1px dashed var(--lightGray);
color: var(--greyFont);
border-radius: 10px;
display: flex;
max-width: 780px;
margin: 40px auto 40px;
}
.announcement i {
color: var(--themeBackground);
font-size: 22px;
margin: auto 0;
animation: scale 0.8s ease-in-out infinite;
}
.announcement div div {
margin-left: 20px;
line-height: 30px;
}
.aside-content {
width: calc(30% - 40px);
user-select: none;
margin-top: 40px;
margin-right: 40px;
max-width: 300px;
float: right;
}
.pagination-wrap {
display: flex;
justify-content: center;
margin-top: 40px;
}
.pagination {
padding: 13px 15px;
border: 1px solid var(--lightGray);
border-radius: 3rem;
color: var(--greyFont);
width: 100px;
user-select: none;
cursor: pointer;
text-align: center;
}
.aside-content-myAside{
position: sticky;
top: 10px;
}
.pagination:hover {
border: 1px solid var(--themeBackground);
color: var(--themeBackground);
box-shadow: 0 0 5px var(--themeBackground);
}
@media screen and (max-width: 1100px) {
.recent-posts {
width: 100%;
}
.page-container {
width: 100%;
}
}
@media screen and (max-width: 1000px) {
.page-container {
/* 文章栏与侧标栏垂直排列 */
flex-direction: column;
}
.aside-content {
width: 100%;
max-width: unset;
float: unset;
margin: 40px auto 0;
}
}
@media screen and (max-width: 768px) {
.grid-item{
width: calc(50% - 10px);
}
.grid-sizer{
width: 50%;
}
h1 {
font-size: 35px;
}
}
</style>

@ -365,8 +365,10 @@
dynamic: true,
thumbnail: true,
controls: false,
plugins: [lgZoom, lgThumbnail, lgRotate, lgAutoplay, lgFullscreen],
plugins: [lgZoom, lgThumbnail, lgRotate, lgAutoplay, lgFullscreen, lgVideo],
dynamicEl: images.map((obj) => {
console.log(obj.parentNode);
obj.parentNode.setAttribute("alt",obj.alt);
return {
src: obj.src,
thumb: obj.thumb ? obj.thumb : obj.src,
@ -386,6 +388,14 @@
let headings = $(".entry-content").find("h1, h2, h3, h4, h5, h6");
headings.attr('id', (i, id) => id || 'toc-' + i);
},
changeMeta(){
document.title = this.article.articleTitle;
let head = document.getElementsByTagName('head');
let meta = document.createElement('meta');
document.querySelector('meta[name="keywords"]').setAttribute('content', this.article.label.labelDescription+','+this.article.articleTitle)
document.querySelector('meta[name="description"]').setAttribute('content', this.article.articleContent)
head[0].appendChild(meta)
},
getArticle() {
this.$http.get(this.$constant.baseURL + "/article/getArticleById", {id: this.id, flag: true})
.then((res) => {
@ -395,13 +405,13 @@
const md = new MarkdownIt({breaks: true,html:true,linkify:true,typographer:true});
this.articleContentHtml = this.article.articleContent;
this.articleContentHtml = md.render(this.article.articleContent);
console.log(this.articleContentHtml);
this.$nextTick(() => {
document.title = this.article.articleTitle
this.highlight();
this.addId();
this.checkAnchor();
this.checkImage();
this.changeMeta();
// todo toc
// this.getTocbot();
});
@ -531,20 +541,56 @@
.article-info span:not(:last-child) {
margin-right: 5px;
}
.article-container {
max-width: 800px;
margin: 0 auto;
padding: 40px 20px;
padding: 20px 14px;
}
>>> .entry-content img {
margin: auto;
display: block;
}
>>> .entry-content p:has( > img[alt]:only-child){
position: relative;
}
>>> .entry-content p:has( > img[alt]:only-child)::after{
content: attr(alt);
position: absolute;
left: 50%;
bottom: 0;
transform: translate(-50%,100%);
padding: 5px;
color: var(--articleGreyFontColor);
font-size: 14px;
text-align: center;
line-height: 14px;
white-space: nowrap;
}
>>> .entry-content p:has( > iframe:only-child),.entry-content p:has( > video:only-child){
position: relative;
width: 100%;
height: 0;
padding-bottom: 56.25%;
}
>>> .entry-content p:has( > iframe:only-child) iframe,.entry-content p:has( > video:only-child) video{
position: absolute;
top: 0;
left: 0;
width: 100%;
border: none;
height: 100%;
}
.article-update-time {
color: var(--greyFont);
font-size: 12px;
margin: 20px 0;
user-select: none;
}
>>> .entry-content iframe {
width:100%;
display: block;
margin: auto;
}
blockquote {
line-height: 2;
border-left: 0.2rem solid var(--blue);

@ -140,7 +140,6 @@ export default {
this.flag = false;
if(pageIndex-1>Math.ceil(this.anime.total / this.anime.limit)){ return;}
bangu_getCollection({subject_type:2,limit:num,offset:(pageIndex-1)*num},function(data){
console.log(data);
that.list.push(...data.data);
that.flag = true;
});

@ -75,8 +75,8 @@ export default {
list:{songs:[],lyrics:[]},
vif:{cplaylist:false,ischange:false,muted:false,vsetAttr:false},
isplay:false,
attr:{playlist:this.$store.state.playlist,bottom:false,shakeheigh:"200px",shake:false,lyricheight:21},
attr_init:{playlist:this.$store.state.playlist,bottom:false,shakeheigh:"200px",shake:false,lyricheight:21},
attr:{playlist:this.$store.state.playlist,bottom:true,shakeheigh:"200px",shake:false,lyricheight:21},
attr_init:{playlist:this.$store.state.playlist,bottom:true,shakeheigh:"200px",shake:false,lyricheight:21},
};
},
beforeRouteEnter(to, from, next) {
@ -87,7 +87,6 @@ export default {
this.JMusicObject.canvas = this.$refs.canvas;
this.JMusicObject.audio = this.$refs.audio;
this.setAttr();
this.replayList();
if(this.attr.shake){this.creCanvas();}
this.creInterval();
this.creEvent();
@ -99,18 +98,25 @@ export default {
})
},
watch: {
"$store.state.pushPlaylist": { //
immediate: true,
handler() {
this.attr.playlist = this.$store.state.pushPlaylist
this.replayList(false)
},
},
"$store.state.playlist": {
immediate: true,
handler() {
this.attr.playlist = this.$store.state.playlist
this.replayList()
this.replayList(true)
},
},
'nowplay.song.lyrics'(to,from){
this.standardLyric(this.nowplay.song.lyrics);
},
'list.songs'(to,from){
this.corrct(0);
if(!this.isplay) this.corrct(0);
},
'attr.shake'(to,from){
if(this.attr.shake&&!this.JMusicObject.JMshake){
@ -243,8 +249,9 @@ export default {
selectList(){
$(this.$refs.JLists).toggleClass("jlists_show");
},
replayList(){
replayList(axios=true){
let that = this;
console.log(this.attr.playlist);
JMusicjsoup.getPlayList(this.attr.playlist,this);
this._setPlayList = function(data){
let res = data.playlist.tracks;
@ -265,7 +272,17 @@ export default {
}
songs.push(song);
}
that.list.songs = songs;
let map = new Map();
let new2;
if(axios)
new2 = [...that.list.songs,...songs].filter(item => !map.has(item.id) && map.set(item.id, 1));
else
new2 = [...songs,...that.list.songs].filter(item => !map.has(item.id) && map.set(item.id, 1));
this.$message({
type: 'success',
message: `${new2.length-that.list.songs.length} 首歌加入了歌单!!!\n现在歌单有 ${new2.length} 首歌`
});
that.list.songs = new2;
};
},
standardLyric(lyric){//

@ -1,5 +1,10 @@
<template>
<div class="shuoshuo-card">
<div>
<div class="shuoshuo-card-noAccess" v-if="!access">
<font class="noAccess-font">你没有访问权限请尝试登录</font>
<input type="password" v-model="input_password" @input="access = Access()" placeholder="或许可以通过密码访问呢?" class="noAccess-password" >
</div>
<div class="shuoshuo-card" v-if="access">
<div class="shuoshuo-topper">
<img src="https://q1.qlogo.cn/g?b=qq&s=100&nk=983341575" alt="" class="shuoshuo-avatar">
<div class="shuoshuo-toptitle">
@ -52,13 +57,13 @@
</div>
<div class="shuoshuo-piclist" ref="imgList" :class="picClassname">
<!-- v-viewer.rebuild="{inline: false,'url': 'data-source',images:picList[0]}" -->
<a :href="item" v-for="item,index in picList[0]" v-show="(index<9)?true:false" :key="item"
<a :href="item" target="_blank" v-for="item,index in picList[0]" v-show="(index<9)?true:false" :key="item"
:overtip="`+ ${picList[0].length-9}`"
:data-sub-html="picList[1][index]||'Have a good life!'"
data-fb-html='这里可以写些东西呢'
:data-sub-html="picList[1][index]||'该图片没有图注呢'"
data-fb-html='是否需要添加评论功能呢?'
>
<div class="imgbox">
<img :click="clickPicture" :title="picList[1][index]" class="lazyload_images" :data-source="item" :src="item+'-poster'" alt="">
<img :click="clickPicture" target="_blank" :title="picList[1][index]" class="lazyload_images" :data-source="item.indexOf('qiniu.roginx.ink')!=-1?item+'-normal':item" :src="item.indexOf('qiniu.roginx.ink')!=-1?item+'-poster':item" alt="">
</div>
</a>
</div>
@ -67,6 +72,7 @@
<span style="font-size:0.9em;line-height: 1.5em;">{{source.articleDevice}}</span>
</div>
</div>
</div>
</template>
<script>
@ -91,6 +97,8 @@
isGraffiti: false,
total: 0,
replyDialogVisible: false,
input_password:'',
access:this.Access(),
floorComment: {},
replyComment: {},
comments: [],
@ -286,13 +294,70 @@
const viewer = this.$el.querySelector('.images').$viewer
//show
viewer.show()
},
Access(){
if(this.$store.state.currentUser?.id == 1) return true;
if(this.source.permission == 0 ) return true;
if(this.input_password==this.source.password&&this.source.password!="") return true
if(this.source.permission == 1 && !this.$common.isEmpty(this.$store.state.currentUser)) return true;
if(this.source.permission == 2 && this.input_password==this.source.password) return true;
return false;
}
}
}
</script>
<style scoped>
.shuoshuo-card-noAccess{
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 15px;
box-sizing: border-box;
box-shadow: 1px 1px 5px #66666655;
max-width: 720px;
height: 300px;
animation-name: zoomIn;
margin:20px auto 20px auto;
border-radius: .5em;
background-color: var(--themeBackground);
}
.noAccess-font{
text-align: center;
width: 200px;
font-size: 16px;
line-height: 24px;
color:#FFF
}
.noAccess-password:placeholder-shown {
letter-spacing: 2px;
color: #FFF;
font-size: 12px;
font-family: SmileySans;
}
.noAccess-password:focus{
border-bottom: solid 2px #FFF;
transition: .3s;
}
.noAccess-password{
transition: .3s;
width: 200px;
font-size: 16px;
margin: 16px 0;
padding: 8px 0;
border:none;
border-bottom: solid 1px #ffffffbe;
letter-spacing: 8px;
text-align: center;
color: #FFF;
outline: none;
background: transparent;
z-index: 1;
}
.shuoshuo-card{
position: relative;
display: flex;
flex-direction: column;
padding: 15px;
@ -303,6 +368,13 @@
margin:20px auto 20px auto;
border-radius: .5em;
}
.permission-mask{
position: absolute;
width: 100%;
height: 100%;
z-index: 99999999999;
background-color: #FFF;
}
.shuoshuo-topper{
display: flex;
flex-direction: row;
@ -314,6 +386,8 @@
.shuoshuo-container{
margin-top: .6em;
margin-bottom: .2em;
letter-spacing: 1px;
line-height: 1.2em;
}
.shuoshuo-toptitle{
margin-left: 10px;
@ -365,7 +439,21 @@
.pic3 .imgbox{
position: relative;
overflow: hidden;
padding-bottom: 56.25%;/*重要属性*/
padding-bottom: 75%;/*重要属性*/
}
>>> p:has( > iframe:only-child),p:has( > video:only-child){
position: relative;
width: 100%;
height: 0;
padding-bottom: 56.25%;
}
>>> p:has( > iframe:only-child) iframe, p:has( > video:only-child) video{
position: absolute;
top: 0;
left: 0;
width: 100%;
border: none;
height: 100%;
}
.pic3 .imgbox img{
width: 100%;

@ -5,7 +5,7 @@
<el-image class="my-el-image poem-image "
style="position: absolute;margin-top: -50px"
v-once
:src="$constant.random_backImage_miaomc+Math.floor(Math.random()*100)"
:src="$constant.random_backImage_miaomc+'?id='+Math.floor(Math.random()*100)"
fit="cover">
<div slot="error" class="image-slot"></div>
</el-image>

@ -3,7 +3,7 @@
<el-image style="animation: header-effect 2s"
class="background-image"
v-once
:src="$constant.random_backImage_miaomc+Math.floor(Math.random()*100)"
:src="$constant.random_backImage_miaomc"
fit="cover">
<div slot="error" class="image-slot background-image-error"></div>
</el-image>

@ -45,7 +45,7 @@
<path d="M405.2 495h99.8v99.8h-99.8v-99.8zM405.2 609.2h99.8v99.8h-99.8v-99.8z" fill="#FB8A5D"></path>
<path d="M519 495h99.8v99.8h-99.8v-99.8zM519 609.2h99.8v99.8h-99.8v-99.8z" fill="#EA6D4B"></path>
</svg>
<span>&nbsp;首页</span>
<span>首页</span>
</div>
</li>
<li v-for="(menu, index) in $store.getters.navigationBar"
@ -64,7 +64,7 @@
d="M187.733333 273.066667A51.2 51.2 0 0 1 238.933333 221.866667h68.266667a51.2 51.2 0 1 1 0 102.4H238.933333A51.2 51.2 0 0 1 187.733333 273.066667z m0 204.8A51.2 51.2 0 0 1 238.933333 426.666667h409.6a51.2 51.2 0 0 1 0 102.4H238.933333A51.2 51.2 0 0 1 187.733333 477.866667zM238.933333 631.466667a51.2 51.2 0 0 0 0 102.4h204.8a51.2 51.2 0 0 0 0-102.4H238.933333z"
fill="#FFFFFF"></path>
</svg>
<span>&nbsp;{{ menu.sortName }}</span>
<span>{{ menu.sortName }}</span>
</div>
</li>
@ -107,7 +107,7 @@
<!-- d="M655.4 284.9c-28.5-49.4-78.7-78.5-131.6-82.4l-21.6 27.2-46.4 16.3-12.5 30.2 19.2 26.9 2-5.7c3.4-9.5 12.4-15.8 22.5-15.8h31.7l36.4 12.8 12.5 12v7.6l17.4 33.4 5.1-1.9c11-4 20.9-10.4 29.2-18.7l-4.2-6.3c-1.4-2 0.1-4.7 2.5-4.7h10.2c3 0 5.8 1.3 7.7 3.6l8.3 9.7c0.8 0.9 1.4 2 1.8 3.1l9.1 25.2 4.4-4.4c2.7-2.7 4.1-6.5 4.2-10.4 0-3.1 1.4-6.1 3.7-8.2l3.4-3c0.8-0.8 1.8-1.4 2.8-1.8-3.6-15.3-9.5-30.4-17.8-44.7zM407.6 291.3l7.9-8.5c5.8-6.2 7.4-15.2 4.2-23-3.4-8.3-10.9-13.6-19.2-14.8-29.2 26.5-47.4 62.2-52.6 100 6.2 5.4 12.6 11.2 12.6 11.7-0.1 1 23.2-2.9 23.2-2.9l-12-17.5 17.2-12.3 18.7-32.7zM423.8 456.4c7.5-2.4 11.6-10.4 9.1-17.9l-2.1-6.6c-0.9-2.9-0.9-5.9 0-8.8 2.7-8.1-2.4-16.8-10.8-18.4l-16.8-3.3-30.6-23.2-25.3 8.2c2.5 21.9 9.4 43.7 21.2 64.1 10.9 18.8 24.9 34.7 41 47.4l7.5-39.3 6.8-2.2z"-->
<!-- fill="#2F9B77"></path>-->
<!-- </svg>-->
<!-- <span>&nbsp;微言</span>-->
<!-- <span>微言</span>-->
<!-- </div>-->
<!-- </li>-->
@ -142,19 +142,34 @@
d="M959.488 354.645333a99.84 99.84 0 0 0-23.722667-127.488 78.677333 78.677333 0 0 0-142.848-64.170666l-11.605333 20.138666a17.066667 17.066667 0 0 0-20.821333 7.168l-32.085334 55.466667H142.677333a46.250667 46.250667 0 0 0-45.909333 46.08v449.194667a46.08 46.08 0 0 0 45.909333 46.08h236.032v73.386666a17.066667 17.066667 0 0 0 8.362667 14.848 17.066667 17.066667 0 0 0 8.704 2.218667 17.066667 17.066667 0 0 0 8.362667-2.218667l156.672-88.234666h248.32a46.08 46.08 0 0 0 46.08-46.08V398.677333L921.6 283.306667a17.066667 17.066667 0 0 0-4.266667-21.504l1.877334-3.413334a65.365333 65.365333 0 0 1 10.410666 79.189334l-53.077333 91.989333a56.832 56.832 0 0 0 20.821333 77.653333 17.066667 17.066667 0 0 0 24.234667-6.314666 17.066667 17.066667 0 0 0-6.997333-23.04 23.04 23.04 0 0 1-8.362667-31.061334z m-138.410667 386.389334a11.946667 11.946667 0 0 1-11.946666 11.946666H556.202667a17.066667 17.066667 0 0 0-8.362667 2.218667l-134.997333 76.117333v-61.269333a17.066667 17.066667 0 0 0-17.066667-17.066667H142.677333a11.946667 11.946667 0 0 1-11.776-11.946666V291.84a11.946667 11.946667 0 0 1 11.776-11.946667h565.930667L574.464 512a17.066667 17.066667 0 0 0-1.706667 12.970667L597.333333 615.253333H265.898667a17.066667 17.066667 0 1 0 0 34.133334h352.938666a17.066667 17.066667 0 0 0 5.802667 0l102.4-35.328a17.066667 17.066667 0 0 0 9.216-7.509334l85.333333-147.968z m-204.8-184.661334l63.829334 36.864-49.322667 17.066667z m206.848-170.666666v1.365333l-108.373333 186.709333-102.4-59.050666L781.482667 221.866667l102.4 59.050666z m76.458667-161.28L887.466667 244.224l-76.970667-44.373333 11.264-19.797334a44.544 44.544 0 1 1 77.141333 44.544z"
fill="#3D3D63"></path>
</svg>
<span>&nbsp;留言</span>
<span>留言</span>
</div>
</li>
<!-- 相册 -->
<li @click="$router.push({path: '/album'})">
<div class="my-menu">
<svg viewBox="0 0 1136 1024" width="22" height="22" style="vertical-align: -5px;"><path d="M794.026667 763.562667H236.629333V425.216c0-84.821333 68.778667-153.6 153.6-153.6h403.797334v491.946667z" fill="#64EDAC" p-id="2712"></path><path d="M869.034667 148.309333H287.317333c-91.221333 0-165.376 74.154667-165.376 165.376v528.896c0 18.261333 14.762667 33.109333 33.109334 33.109334h713.898666c18.261333 0 33.109333-14.762667 33.109334-33.109334V181.418667c0-18.346667-14.762667-33.109333-33.024-33.109334z m-581.717334 66.133334h548.522667v264.533333c-41.728 1.194667-113.322667 10.496-188.16 53.248l-70.826667-86.954667c-6.570667-8.021333-16.213333-12.544-26.624-12.117333-10.325333 0.341333-19.882667 5.376-25.856 13.824l-53.077333 73.984-37.546667-62.122667a33.416533 33.416533 0 0 0-29.098666-15.957333c-11.861333 0.341333-22.698667 6.912-28.245334 17.408L237.824 716.885333c-15.530667 0.341333-32.085333 0.597333-49.749333 0.682667V313.685333c0-54.698667 44.544-99.242667 99.242666-99.242666z m245.418667 408.832c-0.597333-1.365333-1.109333-2.645333-1.792-3.925334l-22.272-36.778666 44.373333-61.952 39.936 49.152c-7.509333 6.058667-14.933333 12.373333-22.357333 19.285333-13.568 12.544-26.026667 23.893333-37.888 34.218667z m-50.346667 39.338666c-45.141333 30.208-90.538667 44.288-167.253333 50.602667l92.074667-170.581333 33.621333 55.637333c0 0.085333 0.085333 0.085333 0.085333 0.170667l33.450667 55.210666c2.048 3.584 4.864 6.570667 8.021333 8.96zM188.074667 809.557333v-25.770666c237.738667-1.621333 294.912-23.125333 427.52-146.176 83.541333-77.397333 174.848-90.965333 220.330666-92.416v264.448c0-0.085333-647.850667-0.085333-647.850666-0.085334z" fill="#333C4F" p-id="2713"></path><path d="M700.842667 321.536m-66.133334 0a66.133333 66.133333 0 1 0 132.266667 0 66.133333 66.133333 0 1 0-132.266667 0Z" fill="#333C4F" p-id="2714"></path></svg>
<div class="dropdown">
<span class="dropbtn">相册</span>
<div class="dropdown-content">
<router-link target="_blank" to="/album?type=dynamic" class="button">动态相册</router-link>
<router-link target="_blank" to="/album?type=acg" class="button">随机图册</router-link>
<router-link target="_blank" to="/album?type=web" class="button"><del>爬虫相册</del></router-link>
<router-link target="_blank" to="/album?type=origin" class="button"><del>源相册</del></router-link>
</div>
</div>
</div>
</li>
<!-- 友人帐 -->
<li @click="$router.push({path: '/friend'})">
<div class="my-menu">
<span>💃&nbsp;友人帐</span>
<span>💃友人帐</span>
</div>
</li>
<!-- 追番 -->
<li @click="$router.push({path: '/bangumi'})">
<div class="my-menu">
<span>🔮&nbsp;追番</span>
<span>🔮追番</span>
</div>
</li>
<!-- 关于 -->
@ -180,7 +195,15 @@
d="M634.092308 172.307692s-118.350769 14.966154-93.932308 70.301539c24.418462 55.335385 81.329231 61.44 81.329231 61.44s119.926154 18.116923 33.28-54.547693c0 0-23.04 7.68-41.747693 2.166154s-21.070769-49.033846 4.923077-52.972307 98.067692 13.587692 103.384616 49.624615 41.353846 68.923077-61.243077 112.049231c0 0-144.738462 10.043077-162.264616-112.836923 0 0-17.329231-22.449231 17.132308-73.058462 34.264615-50.806154 119.138462-2.166154 119.138462-2.166154z"
fill="#493B4E"></path>
</svg>
<span>&nbsp;关于</span>
<div class="dropdown">
<span class="dropbtn">关于</span>
<div class="dropdown-content">
<router-link target="_blank" to="//music.roginx.ink" class="button">音乐台</router-link>
<router-link target="_blank" to="//alist.roginx.ink" class="button">万能云盘</router-link>
<router-link target="_blank" to="/album?type=aurora&id=194" class="button">相册集</router-link>
<router-link target="_blank" to="//miru-pearl.vercel.app" class="button">频道</router-link>
</div>
</div>
</div>
</li>
<!-- 个人中心 -->
@ -215,7 +238,7 @@
<router-view></router-view>
</div>
<div id="music-platform">
<MusicBar id="appMusic" v-if="isMusic" ref="appMusic" :attrs="{shake:true}" name="MUSIC" bottom="true" frameborder="no" scrolling="no" border="0" marginwidth="0" marginheight="0"></MusicBar>
<MusicBar id="appMusic" v-if="isMusic" ref="appMusic" name="MUSIC" frameborder="no" scrolling="no" border="0" marginwidth="0" marginheight="0"></MusicBar>
</div>
<!-- 回到顶部按钮 -->
<div href="#" class="cd-top" v-if="!$common.mobile()" @click="toTop()"></div>
@ -317,7 +340,7 @@
<!-- 聊天室 -->
<li @click="goIm()">
<div>
<span>🎠生活</span>
<span>🎠&nbsp;生活</span>
</div>
</li>
<!-- 微言 -->
@ -352,7 +375,7 @@
<!-- d="M655.4 284.9c-28.5-49.4-78.7-78.5-131.6-82.4l-21.6 27.2-46.4 16.3-12.5 30.2 19.2 26.9 2-5.7c3.4-9.5 12.4-15.8 22.5-15.8h31.7l36.4 12.8 12.5 12v7.6l17.4 33.4 5.1-1.9c11-4 20.9-10.4 29.2-18.7l-4.2-6.3c-1.4-2 0.1-4.7 2.5-4.7h10.2c3 0 5.8 1.3 7.7 3.6l8.3 9.7c0.8 0.9 1.4 2 1.8 3.1l9.1 25.2 4.4-4.4c2.7-2.7 4.1-6.5 4.2-10.4 0-3.1 1.4-6.1 3.7-8.2l3.4-3c0.8-0.8 1.8-1.4 2.8-1.8-3.6-15.3-9.5-30.4-17.8-44.7zM407.6 291.3l7.9-8.5c5.8-6.2 7.4-15.2 4.2-23-3.4-8.3-10.9-13.6-19.2-14.8-29.2 26.5-47.4 62.2-52.6 100 6.2 5.4 12.6 11.2 12.6 11.7-0.1 1 23.2-2.9 23.2-2.9l-12-17.5 17.2-12.3 18.7-32.7zM423.8 456.4c7.5-2.4 11.6-10.4 9.1-17.9l-2.1-6.6c-0.9-2.9-0.9-5.9 0-8.8 2.7-8.1-2.4-16.8-10.8-18.4l-16.8-3.3-30.6-23.2-25.3 8.2c2.5 21.9 9.4 43.7 21.2 64.1 10.9 18.8 24.9 34.7 41 47.4l7.5-39.3 6.8-2.2z"-->
<!-- fill="#2F9B77"></path>-->
<!-- </svg>-->
<!-- <span>&nbsp;微言</span>-->
<!-- <span>微言</span>-->
<!-- </div>-->
<!-- </li>-->
@ -395,6 +418,12 @@
<span>🔮&nbsp;追番</span>
</div>
</li>
<li @click="smallMenu({path: '/album'})">
<div>
<svg viewBox="0 0 1136 1024" width="22" height="22" style="vertical-align: -5px;"><path d="M794.026667 763.562667H236.629333V425.216c0-84.821333 68.778667-153.6 153.6-153.6h403.797334v491.946667z" fill="#64EDAC" p-id="2712"></path><path d="M869.034667 148.309333H287.317333c-91.221333 0-165.376 74.154667-165.376 165.376v528.896c0 18.261333 14.762667 33.109333 33.109334 33.109334h713.898666c18.261333 0 33.109333-14.762667 33.109334-33.109334V181.418667c0-18.346667-14.762667-33.109333-33.024-33.109334z m-581.717334 66.133334h548.522667v264.533333c-41.728 1.194667-113.322667 10.496-188.16 53.248l-70.826667-86.954667c-6.570667-8.021333-16.213333-12.544-26.624-12.117333-10.325333 0.341333-19.882667 5.376-25.856 13.824l-53.077333 73.984-37.546667-62.122667a33.416533 33.416533 0 0 0-29.098666-15.957333c-11.861333 0.341333-22.698667 6.912-28.245334 17.408L237.824 716.885333c-15.530667 0.341333-32.085333 0.597333-49.749333 0.682667V313.685333c0-54.698667 44.544-99.242667 99.242666-99.242666z m245.418667 408.832c-0.597333-1.365333-1.109333-2.645333-1.792-3.925334l-22.272-36.778666 44.373333-61.952 39.936 49.152c-7.509333 6.058667-14.933333 12.373333-22.357333 19.285333-13.568 12.544-26.026667 23.893333-37.888 34.218667z m-50.346667 39.338666c-45.141333 30.208-90.538667 44.288-167.253333 50.602667l92.074667-170.581333 33.621333 55.637333c0 0.085333 0.085333 0.085333 0.085333 0.170667l33.450667 55.210666c2.048 3.584 4.864 6.570667 8.021333 8.96zM188.074667 809.557333v-25.770666c237.738667-1.621333 294.912-23.125333 427.52-146.176 83.541333-77.397333 174.848-90.965333 220.330666-92.416v264.448c0-0.085333-647.850667-0.085333-647.850666-0.085334z" fill="#333C4F" p-id="2713"></path><path d="M700.842667 321.536m-66.133334 0a66.133333 66.133333 0 1 0 132.266667 0 66.133333 66.133333 0 1 0-132.266667 0Z" fill="#333C4F" p-id="2714"></path></svg>
<span>&nbsp;相册</span>
</div>
</li>
<!-- 友人帐 -->
<li @click="smallMenu({path: '/friend'})">
<div>
@ -425,7 +454,15 @@
d="M634.092308 172.307692s-118.350769 14.966154-93.932308 70.301539c24.418462 55.335385 81.329231 61.44 81.329231 61.44s119.926154 18.116923 33.28-54.547693c0 0-23.04 7.68-41.747693 2.166154s-21.070769-49.033846 4.923077-52.972307 98.067692 13.587692 103.384616 49.624615 41.353846 68.923077-61.243077 112.049231c0 0-144.738462 10.043077-162.264616-112.836923 0 0-17.329231-22.449231 17.132308-73.058462 34.264615-50.806154 119.138462-2.166154 119.138462-2.166154z"
fill="#493B4E"></path>
</svg>
<span>&nbsp;关于</span>
<div class="dropdown">
<span class="dropbtn">&nbsp;关于</span>
<div class="dropdown-content">
<router-link target="_blank" to="//music.roginx.ink" class="button">音乐台</router-link>
<router-link target="_blank" to="//alist.roginx.ink" class="button">万能云盘</router-link>
<router-link target="_blank" to="/album?type=aurora&id=194" class="button">相册集</router-link>
<router-link target="_blank" to="//miru-pearl.vercel.app" class="button">频道</router-link>
</div>
</div>
</div>
</li>
@ -555,10 +592,11 @@ import MusicBar from './common/musicBar.vue';
},
goIm() {
if (this.$common.isEmpty(this.$store.state.currentUser)) {
this.$message({
message: "请先登录!",
type: "error"
});
// this.$message({
// message: "",
// type: "error"
// });
this.$router.push({ path: "/izone" });
}
else {
this.$router.push({ path: "/izone" });
@ -610,11 +648,6 @@ import MusicBar from './common/musicBar.vue';
},
changeAppMusic() {
this.isMusic = !this.isMusic;
if (this.isMusic) {
$(this.$refs.appMusic).load("/v/JMusic/#/?bottom=true&playlist=3226523716&height=64px&shakeheight=200px");
}
else {
}
},
changeColor() {
this.isDark = !this.isDark;
@ -670,6 +703,51 @@ import MusicBar from './common/musicBar.vue';
</script>
<style scoped>
.dropdown {
position: relative;
display: inline-block;
z-index: 5555;
box-sizing: border-box;
}
.dropdown-content {
font-size: 1em;
opacity: 0;
transition: .5s;
position: absolute;
pointer-events: none;
background-color: var(--background);
width: 120px;
padding: 10px;
right: 0;
border-radius: 5px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
}
.dropdown-content .button {
cursor: pointer;
text-align: center;
display: block;
text-decoration: none;
font-weight: 600;
font-size: 14px;
padding: 8px 10px;
transition: .5s;
line-height: 14px;
font-size: 14px;
border-radius: 8px;
color: var(--fontColor);
align-items: center;
}
.dropdown-content .button:hover {
transition: .5s;
transform: scale(1.1);
color: var(--themeBackground);
background: var(--themeBackground-bg);
}
.dropdown:hover .dropdown-content {
opacity: 1;
pointer-events: auto;
transition: 0.5s;
}
#appMusic{
width: 100%;
max-width: 400px;
@ -830,9 +908,10 @@ import MusicBar from './common/musicBar.vue';
top: -10px;
}
@media screen and (max-width: 400px) {
.toolButton {
right: 0.5vh;
}
@media screen and (max-width: 576px) {
.dropdown-content {
left:100%;
top:0;
}
}
</style>

@ -12,8 +12,7 @@
<!-- 首页图片 -->
<el-image style="animation: header-effect 2s"
class="background-image"
v-once
:src="!$common.isEmpty($store.state.webInfo.backgroundImage)?$store.state.webInfo.backgroundImage:$constant.random_image+new Date()+Math.floor(Math.random()*10)"
:src="$store.state.webInfo.backgroundImage?$store.state.webInfo.backgroundImage:$constant.two_poem_image[0]"
fit="cover">
<div slot="error" class="image-slot background-image-error"></div>
</el-image>
@ -115,7 +114,7 @@
},
mounted() {
// this.$store.commit("changePlaylist", 7463646845)
},
watch: {
//
@ -311,7 +310,7 @@
justify-content: center;
width: 90%;
max-width: 1280px;
padding: 0 20px 40px 20px;
padding: 0 14px 40px 14px;
margin: 0 auto;
flex-direction: row;
}

@ -13,7 +13,8 @@
<el-image style="animation: header-effect 2s"
class="background-image"
v-once
:src="$constant.background.view_random"
:lazy='true'
:src="$constant.background.bing_random"
fit="cover">
<div slot="error" class="image-slot background-image-error"></div>
</el-image>
@ -52,7 +53,7 @@
</div>
<div ref="pictureList">
<shuoshuo v-for="item in articles" :key="item" :source = "item"></shuoshuo>
<shuoshuo v-for="item in filterArticles()" :key="item" :source = "item"></shuoshuo>
</div>
<!-- -->
<div class="pagination-wrap">
@ -117,6 +118,12 @@
created() {
this.getGuShi();
if (this.$common.isEmpty(this.$store.state.currentUser)) {
this.$message({
message: "登录后可查看更多",
type: "warning"
});
}
this.getArticles();
},
@ -129,13 +136,29 @@
this.pagination.current = this.pagination.current + 1;
this.getArticles();
},
filterArticles(){
//
return this.articles;
if (this.$route.query.showAll)
return this.articles;
else if (!this.$common.isEmpty(this.$store.state.currentUser))
return this.articles.filter(obj => obj.permission < 2);
else
return this.articles.filter(obj => obj.permission < 1);
},
getArticles() {
this.$http.post(this.$constant.baseURL + "/diary/listArticle", this.pagination)
.then((res) => {
if (!this.$common.isEmpty(res.data)) {
this.articles = this.articles.concat(res.data.records);
this.pagination.total = res.data.total;
console.log(this.articles);
let obj = [[],[]]
this.articles.forEach(artcile => {
let items = JSON.parse(artcile.articleItems)
obj[0].push(...items[0])
obj[1].push(...items[1])
});
}
})
.catch((error) => {

@ -24,13 +24,16 @@
<div class="more-cannal">
<a ks-text="Github" ks-tag="top" href="https://github.com/janxland" target="_blank" ><i class="fa fa-github" style="background-color: #000;" aria-hidden="true"></i></a>
<a ks-text="Twitter" ks-tag="top" href="" target="_blank"><i class="fa fa-twitter" style="background-color: #1d9bf0;" aria-hidden="true"></i></a>
<a ks-text="" ks-tag="top" href="" target="_blank"><i class="fa fa-wechat" style="background-color: #1aad19;" aria-hidden="true"></i></a>
<a ks-text="" ks-tag="top" href="https://u.wechat.com/MP9ZNUD9y1VsG3xlE103RVs" target="_blank"><i class="fa fa-wechat" style="background-color: #1aad19;" aria-hidden="true"></i></a>
<a ks-text="Bilibili" ks-tag="top" href="https://space.bilibili.com/11363292" target="_blank"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" style="background-color: #f25d8e"><path d="M777.514667 131.669333a53.333333 53.333333 0 0 1 0 75.434667L728.746667 255.829333h49.92A160 160 0 0 1 938.666667 415.872v320a160 160 0 0 1-160 160H245.333333A160 160 0 0 1 85.333333 735.872v-320a160 160 0 0 1 160-160h49.749334L246.4 207.146667a53.333333 53.333333 0 1 1 75.392-75.434667l113.152 113.152c3.370667 3.370667 6.186667 7.04 8.448 10.965333h137.088c2.261333-3.925333 5.12-7.68 8.490667-11.008l113.109333-113.152a53.333333 53.333333 0 0 1 75.434667 0z m1.152 231.253334H245.333333a53.333333 53.333333 0 0 0-53.205333 49.365333l-0.128 4.010667v320c0 28.117333 21.76 51.157333 49.365333 53.162666l3.968 0.170667h533.333334a53.333333 53.333333 0 0 0 53.205333-49.365333l0.128-3.968v-320c0-29.44-23.893333-53.333333-53.333333-53.333334z m-426.666667 106.666666c29.44 0 53.333333 23.893333 53.333333 53.333334v53.333333a53.333333 53.333333 0 1 1-106.666666 0v-53.333333c0-29.44 23.893333-53.333333 53.333333-53.333334z m320 0c29.44 0 53.333333 23.893333 53.333333 53.333334v53.333333a53.333333 53.333333 0 1 1-106.666666 0v-53.333333c0-29.44 23.893333-53.333333 53.333333-53.333334z" fill="#fff"></path></svg></a>
<a ks-text="QQ🐧" ks-tag="top" href="" target="_blank"><i class="fa fa-qq" style="background-color: #12b7f5;"></i></a>
<a ks-text="QQ" ks-tag="top" href="tencent://AddContact/?fromId=50&fromSubId=1&subcmd=all&uin=983341575" target="_blank"><i class="fa fa-qq" style="background-color: #12b7f5;"></i></a>
<a ks-text="RSS" ks-tag="top" href="" target="_blank"><i class="fa fa-rss" style="background-color: #ff9800"></i></a>
</div>
<a class="collection-btn" @click="showTip()">
<i class="el-icon-star-off" style="margin-right: 2px"></i>朋友圈
<a class="collection-btn" @click="$router.push({path: '/izone'});">
<i class="el-icon-star-off" style="margin-right: 2px"></i>个人空间
</a>
<a class="collection-btn" @click="$router.push({path: '/album',query:{type:'dynamic'}});">
<i class="el-icon-star-off" style="margin-right: 2px"></i>动态相册
</a>
</div>
@ -246,9 +249,10 @@ import {navigation} from '../utils/tools.js'
color: var(--white);
overflow: hidden;
z-index: 1;
}
.collection-btn:last-child{
margin-bottom: 25px;
}
.collection-btn::before {
background: var(--gradualRed);
position: absolute;

@ -17,7 +17,8 @@
<h1>注册</h1>
<input v-model="username" type="text" placeholder="用户名">
<input v-model="password" type="password" placeholder="密码">
<button @click="regist()"></button>
<button @click="regist()">> 注册</button>
<span @click="signIn()"></span>
</div>
</div>
<div class="form-container sign-in-container">
@ -26,7 +27,8 @@
<input v-model="account" type="text" placeholder="用户名/邮箱/手机号">
<input v-model="password" type="password" placeholder="密码">
<a href="#" @click="changeDialog('找回密码')"></a>
<button @click="login()"></button>
<button @click="login()">>登录</button>
<span @click="signUp()"></span>
</div>
</div>
<div class="overlay-container">
@ -614,7 +616,11 @@
height: 100%;
transition: all 0.5s ease-in-out;
}
.form-container span{
padding: 20px;
display: none;
text-decoration: underline;
}
.sign-in-container {
left: 0;
width: 50%;
@ -629,7 +635,7 @@
.form-container div {
background: var(--white);
flex-direction: column;
padding: 0 50px;
padding: 0 8%;
height: 100%;
}
@ -736,7 +742,8 @@
}
.user-info {
width: 80%;
backdrop-filter: blur(2px);
width: 85%;
z-index: 10;
margin-top: 70px;
height: calc(100vh - 90px);
@ -815,4 +822,18 @@
display: none;
}
}
@media screen and (max-width: 768px) {
.sign-up-container{
transform: translateX(0%) !important;
}
.form-container{
width:100%;
}
.form-container span{
display: block;
}
.overlay-container{
display: none;
}
}
</style>

@ -10,7 +10,7 @@ import mavonEditor from 'mavon-editor'
//引入json配置
import EMOJI from './assets/json/emoji.json'
//引入js
//import './utils/live2d'
// import './utils/live2d'
import './utils/title'
//引入css
import './assets/css/animation.css'
@ -23,10 +23,13 @@ import 'mavon-editor/dist/css/index.css'
//点击涟漪效果
import Ripple from 'vue-ripple-directive'
import {vueBaberrage} from 'vue-baberrage'
import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
lazyComponent: true,
loading: 'https://mybox-1257251314.cos.ap-chengdu.myqcloud.com/load.gif'
})
Ripple.color = 'var(--rippleColor)'
Vue.directive("ripple", Ripple)
Vue.use(ElementUI)
Vue.use(vueBaberrage)
Vue.use(mavonEditor)
@ -49,16 +52,18 @@ const app = new Vue({
render: h => h(App)
}).$mount('#app')
Vue.prototype.ipData = {}
fetch("//ip-api.com/json/?lang=zh-CN").then((e=>e.json())).then((e=>{
let a = JSON.stringify(e);
localStorage.setItem("ipData", a);
Vue.prototype.ipData = e;
Vue.prototype.$message({
type: 'success',
message: `欢迎IP:${e.query},来自${e.country}${e.regionName}${e.city}的朋友!`
});
}))
// Vue.prototype.ipData = {}
// fetch("/getIp",{
// mode: 'cors',
// }).then((e=>e.json())).then((e=>{
// let a = JSON.stringify(e);
// localStorage.setItem("ipData", a);
// Vue.prototype.ipData = e;
// Vue.prototype.$message({
// type: 'success',
// message: `欢迎IP:${e.query??'0.0.0.0'},来自${e.country??'中国'}${e.regionName??''}${e.city??''}的朋友!`
// });检机构都是差不多都是有这个
// }))
console.log('%c hello world! \n Print by Roginshin. ',
'background: #ed556a;line-height:50px;font-size:24px; color: #f6cec1');

@ -44,6 +44,10 @@ const routes = [
path: "/izone",
name: "izone",
component: () => import('../components/izone')
},{
path: "/album",
name: "album",
component: () => import('../components/album')
}, {
path: "/about",
name: "about",
@ -113,7 +117,11 @@ const routes = [
path: '/verify',
name: 'verify',
component: () => import('../components/admin/verify')
}
},{
path: "/loveheart",
name: "loveheart",
component: () => import('../components/loveheart')
},
]
const router = new VueRouter({

@ -1,7 +1,7 @@
import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from "vuex-persistedstate";
import constant from '../utils/constant'
Vue.use(Vuex)
export default new Vuex.Store({
@ -21,7 +21,7 @@ export default new Vuex.Store({
backgroundImage: "",
avatar: ""
},
playlist:3226523716
playlist:3217120394
},
getters: {
articleTotal: state => {
@ -54,6 +54,9 @@ export default new Vuex.Store({
}
},
mutations: {
pushPlaylist(state, playlist){
state.pushPlaylist = playlist
},
changePlaylist(state, playlist){
state.playlist = playlist
},

@ -67,7 +67,32 @@ export default {
});
return content;
},
loadAssets(assets) {
const head = document.getElementsByTagName('head')[0];
const loadAsset = (asset) => {
return new Promise((resolve, reject) => {
let element;
if (asset.type === 'js') {
element = document.createElement('script');
element.src = asset.src;
} else if (asset.type === 'css') {
element = document.createElement('link');
element.href = asset.src;
element.rel = 'stylesheet';
}
element.onload = () => {
console.log(`Loaded ${asset.type} file: ${asset.src}`);
resolve();
};
element.onerror = () => {
console.error(`Error loading ${asset.type} file: ${asset.src}`);
reject();
};
head.appendChild(element);
});
};
return Promise.all(assets.map(loadAsset));
},
/**
* 图片转换
*/

@ -13,8 +13,8 @@ export default {
hitokoto: "https://v1.hitokoto.cn",
tocbot: "https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.11.1/tocbot.min.js",
jinrishici: "https://v1.jinrishici.com/all.json",
random_backImage_miaomc:"//api.miaomc.cn/image/get?",
random_image: "//img.xjh.me/random_img.php?return=302",
random_backImage_miaomc:"//api.miaomc.cn/image/get",
random_image: "https://api.miaomc.cn/image/other/360pic",
random_avatar:function(name){
return `https://api.multiavatar.com/${name}.svg`
},
@ -35,19 +35,36 @@ export default {
two_poem_image: ["https://kanokano.cn/wp-content/uploads/topimg/banner.webp",
"https://s1.ax1x.com/2022/12/04/zsKh5V.jpg"],
before_color_1: "black",
after_color_1: "linear-gradient(45deg, #f43f3b, #ec008c)",
before_color_2: "rgb(131, 123, 199)",
after_color_2: "linear-gradient(45deg, #f43f3b, #ec008c)",
playlists:[370417370,3217120394,8266245120,513207088,504069643,3226523716,124092915],
ACGAPI:[
"https://img.paulzzh.com/touhou/random",
"https://api.ucany.net/acg-pc.php",
"https://api.yimian.xyz/img",
"https://cdn.seovx.com/d/?mom=302",
"https://imgapi.cn/api.php?fl=dongman&gs=images",
],
PICAPI:[
"https://imgapi.cn/api.php?zd=mobile&fl=meizi&gs=images",
"https://api.btstu.cn/sjbz/api.php",
"https://api.ddkjt.com/api/img_1.php",
"https://api.ddkjt.com/api/img_2.php",
"https://api.ucany.net/wallpaper-pc.php",
"https://cdn.seovx.com/?mom=302",
"https://cdn.seovx.com/ha/?mom=302",
"https://source.unsplash.com/random",
"https://source.unsplash.com/user/erondu/1600x900",
"https://source.unsplash.com/user/tkirkgoz/1600x900"
],
background:{
bangumi:"//mybox-1257251314.cos.ap-chengdu.myqcloud.com/upload/2022/8/29/166176340045213.jpg",
izone:"//mybox-1257251314.cos.ap-chengdu.myqcloud.com/blog/3c5356cb1303.jpg",
day_random:"//api.dujin.org/bing/1920.php",
view_random:"//api.ixiaowai.cn/gqapi/gqapi.php"
view_random:"//api.ixiaowai.cn/gqapi/gqapi.php",
bing_random:"//api.miaomc.cn/image/other/bing"
},
pageColor: "#ee7752",
commentPageColor: "#23d5ab",

@ -0,0 +1,144 @@
export default {
/**
* 从一个个书中获取属性
*/
getAttr(doc,str){
let selector = "";
top.testEle = doc;
let sq = str?.split("@");// 必然分出前面tag. 或class. 或id. 最后是 某个属性或者text html
for (let index = 0; index < sq.length-1; index++) {
let regex = /^(\w+)\.([\w\s-]+)(?:\.(\d+))?$/
let parm = sq[index].match(regex);
if(parm[1]=="tag"){
selector = selector + parm[2];
if(parm[3]) {
selector = selector + `:eq(${parm[3]})`
}
}
if(parm[1]=="class"){
selector = selector + `[class*='${parm[2]}']`
if(parm[3]) {
selector = selector + `:eq(${parm[3]})`
}
}
if(parm[2]=="id"){
selector = selector + `[id*='${parm[2]}']`
}
selector = selector + " ";
}
let res = undefined;
if(sq[sq.length-1]){
if(sq[sq.length-1]=="text"){
let result = $(doc).find(selector);
if(result.length>1) {
res = result.map(function(index, item) {
return $(item)?.text()
});
} else {
res = $(doc).find(selector)?.text()
}
} else {
let result = $(doc).find(selector);
if(result.length>1) {
res = result.map(function(index, item) {
return $(item)?.attr(sq[sq.length-1])
});
} else {
res = $(doc).find(selector)?.attr(sq[sq.length-1])
}
}
}
return res;
},
getBookPreview(doc,str){
return {
"bookItem": doc,
"bookUrl": this.getAttr(doc,str.bookUrl),
"realUrl": this.getAttr(doc,str.realUrl),
"coverUrl": this.getAttr(doc,str.coverUrl),
"kind": this.getAttr(doc,str.kind),
"name": this.getAttr(doc,str.name)
}
},
getBookContent(doc,str){
return {
"content":this.selector(doc,str),
}
},
getBookInfo(doc,str){
return {
"bookItem": doc,
"coverUrl": this.getAttr(doc,str.coverUrl),
// "init": "",
"intro": this.getAttr(doc,str.intro),
"kind": this.getAttr(doc,str.kind),
"name": this.getAttr(doc,str.name),
}
},
selector(doc,str){
let selector = "";
let sq = str.split("@");// 必然分出前面tag. 或class. 或id. 最后是 某个属性或者text html
for (let index = 0; index < sq.length; index++) {
let regex = /^(\w+)\.([\w\s-]+)(?:\.(\d+))?$/
let parm = sq[index].match(regex);
if(parm[1]=="tag"){
selector = selector + parm[2];
if(parm[3]) {
selector = selector + `:eq(${parm[3]})`
}
}
if(parm[1]=="class"){
selector = selector + `[class*='${parm[2]}']`
if(parm[3]) {
selector = selector + `:eq(${parm[3]})`
}
}
if(parm[2]=="id"){
selector = selector + `[id*='${parm[2]}']`
}
selector = selector + " ";
}
console.log("selector,",doc.find(selector));
return doc.find(selector);
},
//返回搜索页面
ruleSearch(source,key){
return fetch('/api/scrape', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url: source.searchUrl.replace("{{key}}",key)??this.$route.query.url })
})
.then(response => response.text())
.then(html => {
const doc = $(html);
return doc;
})
.catch(error => console.error(error));
},
ruleBookInfo(source,key){
return fetch('/api/scrape', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url: source.bookSourceUrl + key ?? this.$route.query.url })
})
.then(response => response.text())
.then(html => {
const doc = $(html);
return doc;
})
.catch(error => console.error(error));
},
ruleContent(source,key){
return fetch('/api/scrape', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url: source.bookSourceUrl + key ?? this.$route.query.url })
})
.then(response => response.text())
.then(html => {
const doc = $(html);
return doc;
})
.catch(error => console.error(error));
}
}

@ -2,35 +2,59 @@ module.exports = {
devServer: {
// 代理配置
proxy: {
'/getIp': {
target: 'http://ip-api.com/json/?lang=zh-CN',
changeOrigin: true,
pathRewrite: {
'/getIp': ''
}
},
'/api/scrape': {
target: 'http://localhost:3000/scrape/',
changeOrigin: true,
headers: {
Host: 'aurora.roginx.ink'
},
pathRewrite: {
'/api/scrape': ''
}
},
'/api/aurora': {
target: 'http://aurora.roginx.ink/aurora/',
changeOrigin: true,
headers: {
Host: 'aurora.roginx.ink'
},
pathRewrite: {
'/api/aurora': ''
}
},
'/v': {
target: 'http://janxland.xyz/v/',
target: 'http://aurora.roginx.ink/v/',
changeOrigin: true,
headers: {
Host: 'www.janxland.xyz'
Host: 'aurora.roginx.ink'
},
pathRewrite: {
'/v': ''
}
},
'/api': {
target: 'http://janxland.xyz/ablaze/',
target: 'http://aurora.roginx.ink/ablaze/',
changeOrigin: true,
headers: {
Host: 'www.janxland.xyz'
Host: 'aurora.roginx.ink'
},
pathRewrite: {
'/api': '/'
}
},
'/mapi163/weapi': {
target: 'http://janxland.xyz/',
target: 'http://aurora.roginx.ink/',
changeOrigin: true,
headers: {
Host: 'www.janxland.xyz'
Host: 'aurora.roginx.ink'
},
pathRewrite: {
'/mapi163/weapi': '/mapi163/weapi'
}
},
}
}

17363
yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save