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

  1. 确认主域名可用并让 searchPage 自动切换备用域名
  2. 增加重试与超时时间
  3. 失败时返回友好错误提示
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)