fix
@ -6,10 +6,12 @@
|
||||
<meta property="og:url" content="https://manga.syui.ai">
|
||||
<meta property="og:title" content="yui">
|
||||
<meta property="og:description" content="©syui">
|
||||
<meta property="og:image" content="https://manga.syui.ai/manga/og.png">
|
||||
<meta property="og:image" content="/wa/0/og.png">
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
<link rel="stylesheet" href="https://syui.ai/bower_components/icomoon/style.css" />
|
||||
<link rel="stylesheet" href="https://syui.ai/bower_components/font-awesome/css/all.min.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
@ -22,7 +24,7 @@
|
||||
<script src="https://syui.ai/js/comment/chunk-vendors.js"></script>
|
||||
<script src="https://syui.ai/js/comment/app.js"></script>
|
||||
|
||||
<div class="page_title" v-if="loc === ''" >
|
||||
<div class="page_title">
|
||||
<div class="page_data">
|
||||
<table>
|
||||
<tbody>
|
||||
@ -31,7 +33,7 @@
|
||||
<a href="https://yui.syui.ai"><span class="icon-ai"></span></a>
|
||||
</th>
|
||||
<td>yui</td>
|
||||
<td>不思議な力を持つアイの話</td>
|
||||
<td>不思議な力を持つアイの冒険</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -4,13 +4,15 @@
|
||||
"end": 21,
|
||||
"updated_at": "2021-07-11T00:00:00+09:00",
|
||||
"comment": "特別編",
|
||||
"dir": "0"
|
||||
"illust": 100,
|
||||
"dir": 0
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"end": 6,
|
||||
"updated_at": "2024-05-01T00:00:00+09:00",
|
||||
"comment": "1話",
|
||||
"dir": "1"
|
||||
"illust": 89,
|
||||
"dir": 1
|
||||
}
|
||||
]
|
||||
|
Before Width: | Height: | Size: 311 KiB After Width: | Height: | Size: 950 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 787 KiB |
BIN
public/wa/ai.png
Normal file
After Width: | Height: | Size: 81 KiB |
BIN
public/wa/bg.png
Normal file
After Width: | Height: | Size: 133 KiB |
BIN
public/wa/bg_og.png
Normal file
After Width: | Height: | Size: 259 KiB |
BIN
public/wa/com.png
Normal file
After Width: | Height: | Size: 786 KiB |
BIN
public/wa/yui_100.png
Normal file
After Width: | Height: | Size: 544 KiB |
BIN
public/wa/yui_89.png
Normal file
After Width: | Height: | Size: 416 KiB |
47
scpt/title.zsh
Executable file
@ -0,0 +1,47 @@
|
||||
#!/bin/zsh
|
||||
d=${0:a:h}
|
||||
dd=${0:a:h:h}
|
||||
|
||||
url=syui.ai/img
|
||||
|
||||
case $OSTYPE in
|
||||
darwin*)
|
||||
path_nvm_sh="/opt/homebrew/opt/nvm/nvm.sh";;
|
||||
linux*)
|
||||
path_nvm_sh="";;
|
||||
esac
|
||||
|
||||
json=$dd/public/json/manga.json
|
||||
bg=$dd/public/wa/bg.png
|
||||
bgg=$dd/public/wa/bg_og.png
|
||||
|
||||
convert -resize 3240x4320! $bg $bgg
|
||||
|
||||
n=`cat $json|jq "length"`
|
||||
n=`expr $n - 1`
|
||||
|
||||
cd $dir
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$path_nvm_sh" ] && \. "$path_nvm_sh"
|
||||
nvm use 17
|
||||
nvm i squoosh-cli
|
||||
|
||||
for ((i=0;i<=$n;i++))
|
||||
do
|
||||
illust=`cat $json|jq -r ".[$i].illust"`
|
||||
id=`cat $json|jq -r ".[$i].id"`
|
||||
s=$dd/public/wa/yui_${illust}
|
||||
o=$dd/public/wa/$id/0_test.png
|
||||
og=${s}_og.png
|
||||
f=$dd/public/wa/$id/0_font.png
|
||||
ff=$dd/public/wa/$id/0.png
|
||||
if [ ! -f $s ];then
|
||||
curl -sL https://syui.ai/img/yui_${illust}.png -o ${s}.png
|
||||
fi
|
||||
convert ${s}.png -gravity south -geometry 135%x135% -extent 3240x4320 $og
|
||||
|
||||
magick composite $bgg -gravity north -geometry +0+0 $og $o
|
||||
convert -font "Meiryo" -pointsize 150 -fill black -gravity east -annotate +650-140 "$id" $o $f
|
||||
mv $f $ff
|
||||
rm $og $o
|
||||
done
|
144
src/App.vue
@ -1,62 +1,10 @@
|
||||
<template>
|
||||
|
||||
<div id="app">
|
||||
<link rel="stylesheet" href="https://syui.ai/bower_components/icomoon/style.css" />
|
||||
<link rel="stylesheet" href="https://syui.ai/bower_components/font-awesome/css/all.min.css" />
|
||||
|
||||
<div class="page" v-if="m.data && loc_dir !== '' && m.data.find((v) => v.id == loc_dir) !== undefined">
|
||||
<hooper :settings="hooperSettings">
|
||||
<slide v-for="(n,index) in m.data.find((v) => v.id == loc_dir).end" :key="n">
|
||||
<div v-if="loading" class="loading">
|
||||
<i class="fa-solid fa-spinner fa-spin-pulse"></i>
|
||||
</div>
|
||||
<img :src="url + 'wa/' + loc_dir + '/' + (index) +'.png'" @load="load" />
|
||||
<div class="page_n"><a href="/"><span class="icon-ai"></span></a>{{ index }}</div>
|
||||
</slide>
|
||||
<hooper-navigation slot="hooper-addons"></hooper-navigation>
|
||||
<hooper-pagination slot="hooper-addons"></hooper-pagination>
|
||||
<hooper-progress slot="hooper-addons"></hooper-progress>
|
||||
</hooper>
|
||||
<div id="comment"></div>
|
||||
<div class="page_data">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">manga</th>
|
||||
<th scope="col">ver</th>
|
||||
<th scope="col">day</th>
|
||||
<th scope="col">cmt</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<div class="page">
|
||||
|
||||
<tbody v-for="i in m.data">
|
||||
<tr v-if="i.id >= 1">
|
||||
<th>
|
||||
<a :href="'/' + i.id"><img :src="'/wa/' + i.dir + '/0.png'"></a>
|
||||
</th>
|
||||
<td>{{ i.id }}</td>
|
||||
<td v-if="i.updated_at">{{ moment(i.updated_at) }}</td>
|
||||
<td v-if="i.comment">{{ i.comment }}</td>
|
||||
<td v-else>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
<tbody v-for="i in m.data">
|
||||
<tr v-if="i.id == 0">
|
||||
<th>
|
||||
<a :href="'/' + i.id"><img :src="'/wa/' + i.dir + '/0.png'"></a>
|
||||
</th>
|
||||
<td>{{ i.id }}</td>
|
||||
<td v-if="i.updated_at">{{ moment(i.updated_at) }}</td>
|
||||
<td v-if="i.comment">{{ i.comment }}</td>
|
||||
<td v-else>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="page" v-if="loc === ''">
|
||||
<div class="page-top" v-if="loc === ''">
|
||||
<hooper :settings="hooperSettings">
|
||||
<slide v-for="(n,index) of products" :key="n">
|
||||
<div v-if="loading" class="loading">
|
||||
@ -69,44 +17,61 @@
|
||||
<hooper-pagination slot="hooper-addons"></hooper-pagination>
|
||||
<hooper-progress slot="hooper-addons"></hooper-progress>
|
||||
</hooper>
|
||||
</div>
|
||||
|
||||
<div class="page_data">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">manga</th>
|
||||
<th scope="col">ver</th>
|
||||
<th scope="col">day</th>
|
||||
<th scope="col">cmt</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<div class="page-number" v-if="m.data && loc_dir !== '' && m.data.find((v) => v.id == loc_dir) !== undefined">
|
||||
<hooper :settings="hooperSettings">
|
||||
<slide v-for="(n,index) in m.data.find((v) => v.id == loc_dir).end" :key="n">
|
||||
<div v-if="loading" class="loading">
|
||||
<i class="fa-solid fa-spinner fa-spin-pulse"></i>
|
||||
</div>
|
||||
<img :src="url + 'wa/' + loc_dir + '/' + (index) +'.png'" @load="load" />
|
||||
<div class="page_n"><a href="/"><span class="icon-ai"></span></a> {{ index }}</div>
|
||||
</slide>
|
||||
<hooper-navigation slot="hooper-addons"></hooper-navigation>
|
||||
<hooper-pagination slot="hooper-addons"></hooper-pagination>
|
||||
<hooper-progress slot="hooper-addons"></hooper-progress>
|
||||
</hooper>
|
||||
|
||||
<tbody v-for="i in m.data">
|
||||
<tr v-if="i.id >= 1">
|
||||
<th>
|
||||
<a :href="'/' + i.id"><img :src="'/wa/' + i.dir + '/0.png'"></a>
|
||||
</th>
|
||||
<td>{{ i.id }}</td>
|
||||
<td v-if="i.updated_at">{{ moment(i.updated_at) }}</td>
|
||||
<td v-if="i.comment">{{ i.comment }}</td>
|
||||
<td v-else>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<div id="comment"></div>
|
||||
|
||||
<tbody v-for="i in m.data">
|
||||
<tr v-if="i.id == 0">
|
||||
<th>
|
||||
<a :href="'/' + i.id"><img :src="'/wa/' + i.dir + '/0.png'"></a>
|
||||
</th>
|
||||
<td>{{ i.id }}</td>
|
||||
<td v-if="i.updated_at">{{ moment(i.updated_at) }}</td>
|
||||
<td v-if="i.comment">{{ i.comment }}</td>
|
||||
<td v-else>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page_data">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">manga</th>
|
||||
<th scope="col">ver</th>
|
||||
<th scope="col">day</th>
|
||||
<th scope="col">cmt</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody v-for="i in m.data">
|
||||
<tr v-if="i.id >= 1">
|
||||
<th>
|
||||
<a :href="'/' + i.id"><img :src="'/wa/' + i.dir + '/0.png'"></a>
|
||||
</th>
|
||||
<td>{{ i.id }}</td>
|
||||
<td v-if="i.updated_at">{{ moment(i.updated_at) }}</td>
|
||||
<td v-if="i.comment">{{ i.comment }}</td>
|
||||
<td v-else>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
<tbody v-for="i in m.data">
|
||||
<tr v-if="i.id == 0">
|
||||
<th>
|
||||
<a :href="'/' + i.id"><img :src="'/wa/' + i.dir + '/0.png'"></a>
|
||||
</th>
|
||||
<td>{{ i.id }}</td>
|
||||
<td v-if="i.updated_at">{{ moment(i.updated_at) }}</td>
|
||||
<td v-if="i.comment">{{ i.comment }}</td>
|
||||
<td v-else>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
@ -117,6 +82,7 @@
|
||||
</div>
|
||||
-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|