更新 金票普票筛选和自动脚本消费主播过滤

This commit is contained in:
2026-02-05 18:46:35 +08:00
parent 42732d71d6
commit fce706198a
2 changed files with 60 additions and 1 deletions

View File

@@ -250,6 +250,24 @@ onMounted(() => {
}
})
// 监听过滤器变化,同步到后端配置
watch(() => filters.value, async (newFilters) => {
if (!isElectron()) return
try {
await window.electronAPI.updateAutomationConfig({
filters: {
gold: newFilters.gold,
ordinary: newFilters.ordinary,
minOnlineFans: newFilters.minOnlineFans ? parseInt(newFilters.minOnlineFans) : 0,
maxOnlineFans: newFilters.maxOnlineFans ? parseInt(newFilters.maxOnlineFans) : 0,
}
})
console.log('[HostListDialog] 过滤配置已同步:', newFilters)
} catch (e) {
console.error('同步过滤配置失败:', e)
}
}, { deep: true })
// Loading
const loadHosts = async () => {
if (!isElectron()) return
@@ -272,6 +290,20 @@ const loadConfig = async () => {
if (config?.filters?.hostsLevelList) {
selectedLevels.value = new Set(config.filters.hostsLevelList)
}
// 加载金票/普票过滤配置
if (config?.filters?.gold !== undefined) {
filters.value.gold = config.filters.gold
}
if (config?.filters?.ordinary !== undefined) {
filters.value.ordinary = config.filters.ordinary
}
// 加载在线人数过滤配置
if (config?.filters?.minOnlineFans !== undefined && config.filters.minOnlineFans > 0) {
filters.value.minOnlineFans = config.filters.minOnlineFans
}
if (config?.filters?.maxOnlineFans !== undefined && config.filters.maxOnlineFans > 0 && config.filters.maxOnlineFans < 9999999999999) {
filters.value.maxOnlineFans = config.filters.maxOnlineFans
}
} catch (e) {
console.error('加载配置失败:', e)
}

View File

@@ -706,13 +706,40 @@ const handleStart = async (specificGroupIndex) => {
}
}
await Promise.allSettled(
const results = await Promise.allSettled(
startTasks.map(async ({ viewId, account, delay }) => {
await new Promise(r => setTimeout(r, delay))
return window.electronAPI.startTikTokAutomation(viewId, account)
})
)
// 检查启动结果
const failedResults = results
.map((r, i) => ({ result: r, task: startTasks[i] }))
.filter(({ result }) => {
if (result.status === 'rejected') return true
if (result.status === 'fulfilled' && !result.value.success) return true
return false
})
// 如果全部失败,显示错误并不跳转
if (failedResults.length === startTasks.length) {
const firstError = failedResults[0]
let errorMsg = '启动失败'
if (firstError.result.status === 'rejected') {
errorMsg = firstError.result.reason?.message || '启动失败'
} else if (firstError.result.status === 'fulfilled') {
errorMsg = firstError.result.value.error || '启动失败'
}
alert(`启动失败:${errorMsg}`)
return
}
// 如果部分失败,显示警告但继续
if (failedResults.length > 0) {
console.warn(`部分账号启动失败: ${failedResults.length}/${startTasks.length}`)
}
setIsRunning(true)
currentGroupIndex.value = activeGroupIndex
const status = await window.electronAPI.getRotationStatus()