{"record":{"id":"39ba43e6ab46b55f","repo":"fish2018/pansou","slug":"unsupported-share-link-s","errorCode":null,"errorMessage":"unsupported share link: %s","messagePattern":"unsupported share link: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"info","filePath":"plugin/sousou/sousou.go","lineNumber":269,"sourceCode":"\tresp, err := client.Do(req)\n\tif err != nil {\n\t\treturn model.SearchResult{}, err\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn model.SearchResult{}, fmt.Errorf(\"document returned status %d\", resp.StatusCode)\n\t}\n\tdoc, err := goquery.NewDocumentFromReader(resp.Body)\n\tif err != nil {\n\t\treturn model.SearchResult{}, err\n\t}\n\tlinkURL := strings.TrimSpace(doc.Find(\"a.jump-link[href]\").First().AttrOr(\"href\", \"\"))\n\tif linkURL == \"\" {\n\t\treturn model.SearchResult{}, fmt.Errorf(\"document has no share link\")\n\t}\n\tlinkType := util.GetLinkType(linkURL)\n\tif linkType == \"others\" || linkType == \"\" {\n\t\treturn model.SearchResult{}, fmt.Errorf(\"unsupported share link: %s\", linkURL)\n\t}\n\ttitle := cleanPansoTitle(doc.Find(\".resource-box h1\").First().Text())\n\tif title == \"\" {\n\t\ttitle = cleanPansoTitle(item.Title)\n\t}\n\tdatetime := item.Datetime\n\tif value := strings.TrimSpace(doc.Find(\".description-label\").FilterFunction(func(_ int, s *goquery.Selection) bool {\n\t\treturn strings.TrimSpace(s.Text()) == \"分享时间\"\n\t}).Next().Text()); value != \"\" {\n\t\tif parsed, err := time.Parse(\"2006-01-02\", value); err == nil {\n\t\t\tdatetime = parsed\n\t\t}\n\t}\n\tif datetime.IsZero() {\n\t\tdatetime = time.Now()\n\t}\n\tpassword := item.Password\n\tif password == \"\" {","sourceCodeStart":251,"sourceCodeEnd":287,"githubUrl":"https://github.com/fish2018/pansou/blob/beaa56133755a548ebc51b090b3816e2ae044aa6/plugin/sousou/sousou.go#L251-L287","documentation":"The extracted share link is classified via util.GetLinkType; only known pan providers (e.g. quark/uc/baidu/aliyun) are supported. If the link classifies as \"others\" or an empty type, the plugin cannot handle it and returns this error naming the offending URL.","triggerScenarios":"linkURL points to a pan provider util.GetLinkType does not recognize (returns \"others\"), or linkURL is non-empty but produces an empty link type.","commonSituations":"Search results include links to lesser-known cloud drives, magnet/torrent pages, or ad/redirect URLs; GetLinkType's known-host list is outdated after a provider changes domain.","solutions":["Inspect the logged linkURL and, if it is a valid new pan provider, add its domain to util.GetLinkType's recognized hosts","Skip/filter unsupported link types at the caller so these items are silently omitted","Sanitize the extracted URL (strip tracking redirects) before classification","Update GetLinkType when a provider changes its domain"],"exampleFix":"// before\nif linkType == \"others\" || linkType == \"\" {\n    return model.SearchResult{}, fmt.Errorf(\"unsupported share link: %s\", linkURL)\n}\n// after\nif linkType == \"others\" || linkType == \"\" {\n    debugLog(\"skipping unsupported share link: %s\", linkURL)\n    return model.SearchResult{}, ErrUnsupportedLink // caller skips item\n}","handlingStrategy":"validation","validationCode":"linkType := util.GetLinkType(linkURL)\nif linkType == \"\" || linkType == \"others\" {\n    skipItem(linkURL) // filter before calling the plugin\n}","typeGuard":"func isSupportedLink(linkType string) bool { return linkType != \"\" && linkType != \"others\" }","tryCatchPattern":"res, err := fetchPansoDocument(...)\nif err != nil && strings.HasPrefix(err.Error(), \"unsupported share link\") {\n    continue // skip unsupported provider\n}","preventionTips":["Keep util.GetLinkType's known pan domains up to date","Pre-filter search items by URL host before fetching details","Log skipped links to spot newly popular providers to support","Strip redirect/tracking wrappers from URLs before classification"],"tags":["url","validation","unsupported"],"backgroundTag":"unsupported-operation","analyzedSha":"beaa56133755a548ebc51b090b3816e2ae044aa6","analyzedAt":"2026-09-07T00:31:18.025Z","contentChangedAt":"2026-09-07T00:31:18.025Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}