soimort/you-get · error · NotImplementedError

Flickr extractor is not supported for %s.

Error message

Flickr extractor is not supported for %s.

What it means

Raised as NotImplementedError by fetch_photo_url_list (src/you_get/extractors/flickr.py:166). It iterates the module's url_patterns table trying to classify the URL; if no pattern's first element matches, there is no known extractor method for that URL shape and it gives up.

Source

Thrown at src/you_get/extractors/flickr.py:166

        url, title = get_single_photo_url(url)
        urls = [url]
    else:
        urls, title = fetch_photo_url_list(url, size)
    index = 0
    for url in urls:
        mime, ext, size = url_info(url)
        print_info('Flickr.com', title, mime, size)
        if not info_only:
            suffix = '[%d]' % index
            download_urls([url], title + suffix, ext, False, output_dir, None, False, False)
            index = index + 1

def fetch_photo_url_list(url, size):
    for pattern in url_patterns:
        # FIXME: fix multiple matching since the match group is dropped
        if match1(url, pattern[0]):
            return fetch_photo_url_list_impl(url, size, *pattern[1:])
    raise NotImplementedError('Flickr extractor is not supported for %s.' % url)

def fetch_photo_url_list_impl(url, size, method, id_field, id_parse_func, collection_name):
    page = get_html(url)
    api_key = get_api_key(page)
    ext_field = ''
    if id_parse_func:
        ext_field = '&%s=%s' % (id_field, id_parse_func(url, page))
    page_number = 1
    urls = []
    while True:
        call_url = tmpl_api_call % (api_key, method, ext_field, page_number)
        photoset = json.loads(get_content_headered(call_url))[collection_name]
        pagen = photoset['page']
        pages = photoset['pages']
        for info in photoset['photo']:
            url = get_url_of_largest(info, api_key, size)
            urls.append(url)
        page_number = page_number + 1

View on GitHub (pinned to 049548f3f3)

Solutions

  1. Use a canonical desktop Flickr URL form known to be supported (compare with the regexes in url_patterns in flickr.py).
  2. Expand the flickr.com URL from any short link before passing it in.
  3. Add a new (pattern, method, id_field, parse_func, collection) entry to url_patterns for the new URL shape.

Example fix

# before
fetch_photo_url_list('https://www.flickr.com/photos/user/123456789789/some/new/path', 'o')
# NotImplementedError: Flickr extractor is not supported for %s.

# after: use the supported canonical photo URL form
fetch_photo_url_list('https://www.flickr.com/photos/user/123456789789', 'o')
Defensive patterns

Strategy: validation

Validate before calling

import re
from you_get.extractors.flickr import url_patterns

def flickr_url_supported(url):
    return any(re.match(p[0], url) for p in url_patterns)

Try / catch

try:
    flickr_download(url, output_dir)
except NotImplementedError as e:
    if 'Flickr extractor is not supported' in str(e):
        expand_url_and_retry(url)  # e.g. resolve flic.kr short links first
    else:
        raise

Prevention

When it happens

Trigger: Calling flickr_download with a Flickr URL that matches none of the entries in url_patterns (the supported photo/photoset/gallery/group URL forms). Examples: new URL layouts, URLs with extra path segments or different subdomains.

Common situations: Flickr rolling out new URL formats (e.g. new-style photo pages or migration paths); users passing a mobile or flic.kr short link the pattern list does not cover; URLs with tracking parameters changing the shape.

Related errors


AI-assisted analysis of soimort/you-get@049548f3f3 (2026-08-15). Data as JSON: /api/errors/7f60eb87f50fe454. Report an issue: GitHub.