gallery
This commit is contained in:
63
public/api/i/gallery-meow/generate.sh
Executable file
63
public/api/i/gallery-meow/generate.sh
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
# 生成图片列表 JSON
|
||||
|
||||
cd "$(dirname "$0")/../" || exit 1
|
||||
|
||||
OUTPUT="images.json"
|
||||
|
||||
echo "[" > "$OUTPUT"
|
||||
|
||||
FIRST=true
|
||||
# 使用 awk 替代 shell 循环以提高性能
|
||||
find . -type f \( -iname "*.webp" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" -o -iname "*.svg" \) | sort -r | awk '
|
||||
BEGIN {
|
||||
print "["
|
||||
first = 1
|
||||
}
|
||||
{
|
||||
# 去掉开头的 ./
|
||||
sub(/^\.\//, "", $0)
|
||||
path = $0
|
||||
|
||||
# 分割路径
|
||||
n = split(path, parts, "/")
|
||||
|
||||
# 仅处理符合 year/month/day/filename 结构的文件 (至少4部分)
|
||||
# 这样可以自动过滤掉 cache 目录或其他不符合规范的图片
|
||||
if (n >= 4) {
|
||||
year = parts[1]
|
||||
month = parts[2]
|
||||
day = parts[3]
|
||||
filename = parts[n]
|
||||
|
||||
# 简单的数字检查,确保是日期目录
|
||||
if (year ~ /^[0-9]+$/ && month ~ /^[0-9]+$/) {
|
||||
# 转义 JSON 特殊字符
|
||||
gsub(/\\/, "\\\\", path)
|
||||
gsub(/"/, "\\\"", path)
|
||||
gsub(/\\/, "\\\\", filename)
|
||||
gsub(/"/, "\\\"", filename)
|
||||
|
||||
if (first == 0) {
|
||||
print ","
|
||||
}
|
||||
first = 0
|
||||
|
||||
print " {"
|
||||
print " \"url\": \"/api/i/" path "\","
|
||||
print " \"filename\": \"" filename "\","
|
||||
print " \"year\": \"" year "\","
|
||||
print " \"month\": \"" month "\","
|
||||
print " \"day\": \"" day "\","
|
||||
print " \"date\": \"" year "-" month "-" day "\""
|
||||
printf " }"
|
||||
}
|
||||
}
|
||||
}
|
||||
END {
|
||||
print "\n]"
|
||||
}
|
||||
' > "$OUTPUT"
|
||||
|
||||
TOTAL=$(grep -c '"url"' "$OUTPUT" || echo 0)
|
||||
echo "✓ 已生成 $TOTAL 张图片的列表: $(pwd)/$OUTPUT"
|
||||
Reference in New Issue
Block a user