iawia002/lux · error

lux doesn't support this URL right now

Error message

lux doesn't support this URL right now

What it means

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.

Source

Thrown at extractors/tumblr/tumblr.go:111

		{
			Site:    "Tumblr tumblr.com",
			Title:   title,
			Type:    extractors.DataTypeImage,
			Streams: streams,
			URL:     url,
		},
	}, nil
}

func tumblrVideoDownload(url, html, title string) ([]*extractors.Data, error) {
	videoURLs := utils.MatchOneOf(html, `<iframe src='(.+?)'`)
	if videoURLs == nil || len(videoURLs) < 2 {
		return nil, errors.WithStack(extractors.ErrURLParseFailed)
	}
	videoURL := videoURLs[1]

	if !strings.Contains(videoURL, "tumblr.com/video") {
		return nil, errors.New("lux doesn't support this URL right now")
	}
	videoHTML, err := request.Get(videoURL, url, nil)
	if err != nil {
		return nil, errors.WithStack(err)
	}

	realURLs := utils.MatchOneOf(videoHTML, `source src="(.+?)"`)
	if realURLs == nil || len(realURLs) < 2 {
		return nil, errors.WithStack(extractors.ErrURLParseFailed)
	}
	realURL := realURLs[1]

	urlData, size, err := genURLData(realURL, url)
	if err != nil {
		return nil, errors.WithStack(err)
	}
	streams := map[string]*extractors.Stream{
		"default": {

View on GitHub (pinned to dd00f6d258)

Solutions

  1. Confirm the post actually hosts a native Tumblr video (view-source: the iframe src should contain 'tumblr.com/video')
  2. For third-party embeds, extract the inner URL and hand it to the matching extractor (youtube, vimeo, ...)
  3. Use the Tumblr API (api.tumblr.com/v2/blog/.../posts) which returns a direct video_url or permalink to the native player
  4. Patch the matcher in extractors/tumblr/tumblr.go to iterate all iframes and pick the tumblr.com/video one instead of taking the first

Example fix

// before
videoURLs := utils.MatchOneOf(html, `<iframe src='(.+?)'`)
videoURL := videoURLs[1]
if !strings.Contains(videoURL, "tumblr.com/video") {
    return nil, errors.New("lux doesn't support this URL right now")
}

// after (look specifically for the native player iframe)
videoURLs := utils.MatchOneOf(html, `<iframe src='(https?://[^']+?tumblr\.com/video/[^']+)'`)
if videoURLs == nil || len(videoURLs) < 2 {
    return nil, errors.New("no native tumblr video iframe found (third-party embed?")
}
videoURL := videoURLs[1]
Defensive patterns

Strategy: try-catch

Try / catch

_, err := tumblr.Extract(url, opts)
if err != nil {
    if strings.Contains(err.Error(), "lux doesn't support this URL right now") {
        // third-party embed, not a native tumblr video
        // extract the inner iframe URL and route it to the right extractor
    }
    return err
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.


AI-assisted analysis of iawia002/lux@dd00f6d258 (2026-08-15). Data as JSON: /api/errors/73b65c3139e3bd0c. Report an issue: GitHub.