fish2018/pansou · error
搜索第一页失败
Error message
搜索第一页失败: %w
What it means
Wrapped first-page failure in PanwikiPlugin.searchImpl (plugin/panwiki/panwiki.go:83): the initial search page request failed (including any backup-domain retry inside searchPage), so pagination never starts. Underlying cause is wrapped via %w.
Solutions
- 确认主域名可用并让 searchPage 自动切换备用域名
- 增加重试与超时时间
- 失败时返回友好错误提示
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at plugin/panwiki/panwiki.go:83 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of fish2018/pansou@beaa561337 (2026-09-07).
Data as JSON: /api/errors/57b4abf3befe4413.
Report an issue: GitHub.
Appendix: source
Thrown at plugin/panwiki/panwiki.go:83
return searchURL
}
// switchToBackupDomain 切换到备用域名
func (p *PanwikiPlugin) switchToBackupDomain() {
if p.currentBaseURL == PrimaryBaseURL {
p.currentBaseURL = BackupBaseURL
if p.debugMode {
log.Printf("[Panwiki] 切换到备用域名: %s", p.currentBaseURL)
}
}
}
// searchImpl 实现搜索逻辑
func (p *PanwikiPlugin) searchImpl(client *http.Client, keyword string, ext map[string]interface{}) ([]model.SearchResult, error) {
// 第一页搜索
firstPageResults, err := p.searchPage(client, keyword, 1)
if err != nil {
return nil, fmt.Errorf("搜索第一页失败: %w", err)
}
var allResults []model.SearchResult
allResults = append(allResults, firstPageResults...)
// 多页并发搜索
if MaxPages > 1 {
var wg sync.WaitGroup
var mu sync.Mutex
semaphore := make(chan struct{}, MaxConcurrency)
pageResults := make(map[int][]model.SearchResult)
for page := 2; page <= MaxPages; page++ {
wg.Add(1)
go func(pageNum int) {
defer wg.Done()
semaphore <- struct{}{}
defer func() { <-semaphore }()View on GitHub (pinned to beaa561337)