Skip to content

Commit

Permalink
fix: 修復隨機封面死循環的問題
Browse files Browse the repository at this point in the history
  • Loading branch information
jerryc127 committed Jan 12, 2025
1 parent 172a8ee commit 3d4bf30
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 22 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hexo-theme-butterfly",
"version": "5.3.0",
"version": "5.3.1",
"description": "A Simple and Card UI Design theme for Hexo",
"main": "package.json",
"scripts": {
Expand Down
54 changes: 33 additions & 21 deletions scripts/filters/random_cover.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,32 @@
'use strict'

hexo.extend.generator.register('post', locals => {
const recentCovers = []
const randomCoverFn = () => {
const { cover: { default_cover: defaultCover } } = hexo.theme.config
const previousIndexes = []

const getRandomCover = defaultCover => {
if (!defaultCover) return false
if (!Array.isArray(defaultCover)) return defaultCover
const defaultCoverLen = defaultCover.length
const limit = 3

let num
const coverCount = defaultCover.length

if (coverCount === 1) {
return defaultCover[0]
}

const maxPreviousIndexes = coverCount === 2 ? 1 : (coverCount === 3 ? 2 : 3)

let index
do {
num = Math.floor(Math.random() * defaultCoverLen)
} while (recentCovers.includes(num))
index = Math.floor(Math.random() * coverCount)
} while (previousIndexes.includes(index) && previousIndexes.length < coverCount)

recentCovers.push(num)
if (recentCovers.length > limit) recentCovers.shift()
previousIndexes.push(index)
if (previousIndexes.length > maxPreviousIndexes) {
previousIndexes.shift()
}

return defaultCover[num]
console.log(defaultCover[index])
return defaultCover[index]
}

const handleImg = data => {
Expand All @@ -30,15 +39,20 @@ hexo.extend.generator.register('post', locals => {

// Add path to top_img and cover if post_asset_folder is enabled
if (hexo.config.post_asset_folder) {
if (topImg && topImg.indexOf('/') === -1 && imgTestReg.test(topImg)) data.top_img = `${data.path}${topImg}`
if (coverVal && coverVal.indexOf('/') === -1 && imgTestReg.test(coverVal)) data.cover = `${data.path}${coverVal}`
if (topImg && topImg.indexOf('/') === -1 && imgTestReg.test(topImg)) {
data.top_img = `${data.path}${topImg}`
}
if (coverVal && coverVal.indexOf('/') === -1 && imgTestReg.test(coverVal)) {
data.cover = `${data.path}${coverVal}`
}
}

if (coverVal === false) return data

// If cover is not set, use random cover
if (!coverVal) {
const randomCover = randomCoverFn()
const { cover: { default_cover: defaultCover } } = hexo.theme.config
const randomCover = getRandomCover(defaultCover)
data.cover = randomCover
coverVal = randomCover // update coverVal
}
Expand All @@ -50,11 +64,9 @@ hexo.extend.generator.register('post', locals => {
return data
}

return locals.posts.sort('date').map(post => {
return {
data: handleImg(post),
layout: 'post',
path: post.path
}
})
return locals.posts.sort('date').map(post => ({
data: handleImg(post),
layout: 'post',
path: post.path
}))
})

0 comments on commit 3d4bf30

Please sign in to comment.