{"record":{"id":"73b65c3139e3bd0c","repo":"iawia002/lux","slug":"lux-doesn-t-support-this-url-right-now","errorCode":null,"errorMessage":"lux doesn't support this URL right now","messagePattern":"lux doesn't support this URL right now","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"extractors/tumblr/tumblr.go","lineNumber":111,"sourceCode":"\t\t{\n\t\t\tSite:    \"Tumblr tumblr.com\",\n\t\t\tTitle:   title,\n\t\t\tType:    extractors.DataTypeImage,\n\t\t\tStreams: streams,\n\t\t\tURL:     url,\n\t\t},\n\t}, nil\n}\n\nfunc tumblrVideoDownload(url, html, title string) ([]*extractors.Data, error) {\n\tvideoURLs := utils.MatchOneOf(html, `<iframe src='(.+?)'`)\n\tif videoURLs == nil || len(videoURLs) < 2 {\n\t\treturn nil, errors.WithStack(extractors.ErrURLParseFailed)\n\t}\n\tvideoURL := videoURLs[1]\n\n\tif !strings.Contains(videoURL, \"tumblr.com/video\") {\n\t\treturn nil, errors.New(\"lux doesn't support this URL right now\")\n\t}\n\tvideoHTML, err := request.Get(videoURL, url, nil)\n\tif err != nil {\n\t\treturn nil, errors.WithStack(err)\n\t}\n\n\trealURLs := utils.MatchOneOf(videoHTML, `source src=\"(.+?)\"`)\n\tif realURLs == nil || len(realURLs) < 2 {\n\t\treturn nil, errors.WithStack(extractors.ErrURLParseFailed)\n\t}\n\trealURL := realURLs[1]\n\n\turlData, size, err := genURLData(realURL, url)\n\tif err != nil {\n\t\treturn nil, errors.WithStack(err)\n\t}\n\tstreams := map[string]*extractors.Stream{\n\t\t\"default\": {","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/iawia002/lux/blob/dd00f6d258d80b6684a0b9402d7124e5c18ef42f/extractors/tumblr/tumblr.go#L93-L129","documentation":"tumblrVideoDownload grabs the first <iframe src='...'> in the Tumblr post HTML and expects it to be a tumblr.com/video embed. If the first iframe points anywhere else — a third-party player like YouTube/Vimeo, or an unrelated embed — lux reports that it does not support this URL. It is a scope statement, not a network failure.","triggerScenarios":"Extracting a Tumblr post whose video is a reblogged third-party embed (iframe src on youtube.com/embed, player.vimeo.com, etc.), or whose theme markup puts a non-video iframe before the native player iframe.","commonSituations":"Posts that embed YouTube/Vimeo rather than native Tumblr video; theme templates that inject widget iframes; native videos served via <video> tags without the classic iframe fallback.","solutions":["Confirm the post actually hosts a native Tumblr video (view-source: the iframe src should contain 'tumblr.com/video')","For third-party embeds, extract the inner URL and hand it to the matching extractor (youtube, vimeo, ...)","Use the Tumblr API (api.tumblr.com/v2/blog/.../posts) which returns a direct video_url or permalink to the native player","Patch the matcher in extractors/tumblr/tumblr.go to iterate all iframes and pick the tumblr.com/video one instead of taking the first"],"exampleFix":"// before\nvideoURLs := utils.MatchOneOf(html, `<iframe src='(.+?)'`)\nvideoURL := videoURLs[1]\nif !strings.Contains(videoURL, \"tumblr.com/video\") {\n    return nil, errors.New(\"lux doesn't support this URL right now\")\n}\n\n// after (look specifically for the native player iframe)\nvideoURLs := utils.MatchOneOf(html, `<iframe src='(https?://[^']+?tumblr\\.com/video/[^']+)'`)\nif videoURLs == nil || len(videoURLs) < 2 {\n    return nil, errors.New(\"no native tumblr video iframe found (third-party embed?\")\n}\nvideoURL := videoURLs[1]","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"_, err := tumblr.Extract(url, opts)\nif err != nil {\n    if strings.Contains(err.Error(), \"lux doesn't support this URL right now\") {\n        // third-party embed, not a native tumblr video\n        // extract the inner iframe URL and route it to the right extractor\n    }\n    return err\n}","preventionTips":["Prefer native Tumblr video posts; route embedded YouTube/Vimeo links to their own extractors","Use the Tumblr API to obtain direct video_url when scraping fails","Do not retry this error — it is a support-scope statement, not a transient failure"],"tags":["tumblr","iframe","unsupported-embed","third-party"],"backgroundTag":null,"analyzedSha":"dd00f6d258d80b6684a0b9402d7124e5c18ef42f","analyzedAt":"2026-08-15T16:57:31.080Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}