Skip to content

Failed to import "curl_cffi" request handler: type object 'GreenSocket' has no attribute 'sendmsg' #11860

@wzqj

Description

@wzqj

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

  • I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

Region

Canada

Provide a description that is worded well enough to be understood

Updated to nightly, installed curl-cffi by pip install "yt-dlp[default,curl-cffi]" but it seems to fail to import curl_cffi. --list-impersonate-targets shows not available for all 3 targets. curl_chrome116 on CLI is working and usable.

Provide verbose output that clearly demonstrates the problem

  • Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • If using API, add 'verbose': True to YoutubeDL params instead
  • Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

user@home ~> yt-dlp -vU
/home/user/.local/lib/python3.12/site-packages/yt_dlp/networking/__init__.py:37: UserWarning: Failed to import "curl_cffi" request handler: type object 'GreenSocket' has no attribute 'sendmsg'; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  warnings.warn(f'Failed to import "curl_cffi" request handler: {e}' + bug_reports_message())
[debug] Command-line config: ['-vU']
[debug] User config "/home/user/.config/yt-dlp/config": ['--download-archive', 'ids.txt', '--no-continue', '--no-cache-dir', '--add-metadata', '--embed-subs', '--sub-langs=en.*,kr,ja,zh.*', '--write-sub', '--write-auto-sub']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds [d298693b1] (pip)
[debug] Python 3.12.7 (CPython x86_64 64bit) - Linux-6.11.7-2-cachyos-x86_64-with-glibc2.40 (OpenSSL 3.4.0 22 Oct 2024, glibc 2.40)
[debug] exe versions: ffmpeg 7.1 (setts), ffprobe 7.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.21.0, brotlicffi-1.1.0.0, certifi-2024.08.30, curl_cffi-0.7.1, mutagen-1.47.0, requests-2.32.3, secretstorage-3.3.3, sqlite3-3.47.2, urllib3-1.26.20, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1837 extractors
[debug] Loading archive file 'ids.txt'
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds)
user@home ~> yt-dlp -vU "https://kick.com/xqc/videos/df3484e4-0ef6-4883-a39b-029ce72a0127"
/home/user/.local/lib/python3.12/site-packages/yt_dlp/networking/__init__.py:37: UserWarning: Failed to import "curl_cffi" request handler: type object 'GreenSocket' has no attribute 'sendmsg'; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  warnings.warn(f'Failed to import "curl_cffi" request handler: {e}' + bug_reports_message())
[debug] Command-line config: ['-vU', 'https://kick.com/xqc/videos/df3484e4-0ef6-4883-a39b-029ce72a0127']
[debug] User config "/home/user/.config/yt-dlp/config": ['--download-archive', 'ids.txt', '--no-continue', '--no-cache-dir', '--add-metadata', '--embed-subs', '--sub-langs=en.*,kr,ja,zh.*', '--write-sub', '--write-auto-sub']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds [d298693b1] (pip)
[debug] Python 3.12.7 (CPython x86_64 64bit) - Linux-6.11.7-2-cachyos-x86_64-with-glibc2.40 (OpenSSL 3.4.0 22 Oct 2024, glibc 2.40)
[debug] exe versions: ffmpeg 7.1 (setts), ffprobe 7.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.21.0, brotlicffi-1.1.0.0, certifi-2024.08.30, curl_cffi-0.7.1, mutagen-1.47.0, requests-2.32.3, secretstorage-3.3.3, sqlite3-3.47.2, urllib3-1.26.20, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1837 extractors
[debug] Loading archive file 'ids.txt'
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds)
[kick:vod] Setting up session
WARNING: [kick:vod] The extractor is attempting impersonation, but no impersonate target is available; if you encounter errors, then see  https://github.com/yt-dlp/yt-dlp#impersonation  for information on installing the required dependencies
WARNING: [kick:vod] Unable to download webpage: HTTP Error 403: Forbidden
[debug] [kick:vod] kick.com did not set XSRF-TOKEN cookie
[kick:vod] Extracting URL: https://kick.com/xqc/videos/df3484e4-0ef6-4883-a39b-029ce72a0127
[kick:vod] df3484e4-0ef6-4883-a39b-029ce72a0127: Downloading API JSON
ERROR: [kick:vod] df3484e4-0ef6-4883-a39b-029ce72a0127: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: Forbidden>)
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/common.py", line 742, in extract
    ie_result = self._real_extract(url)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/kick.py", line 126, in _real_extract
    response = self._call_api(f'v1/video/{video_id}', video_id)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/kick.py", line 31, in _call_api
    return self._download_json(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/common.py", line 1152, in download_content
    res = getattr(self, download_handle.__name__)(url_or_request, video_id, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/common.py", line 1112, in download_handle
    res = self._download_webpage_handle(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/common.py", line 962, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/common.py", line 911, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/extractor/common.py", line 898, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query, extensions))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/YoutubeDL.py", line 4162, in urlopen
    return self._request_director.send(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/networking/common.py", line 117, in send
    response = handler.send(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/networking/_helper.py", line 208, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/networking/common.py", line 340, in send
    return self._send(request)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.12/site-packages/yt_dlp/networking/_requests.py", line 365, in _send
    raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 403: Forbidden

[debug] Command-line config: ['--list-impersonate-targets', '-vU', 'https://kick.com/xqc/videos/df3484e4-0ef6-4883-a39b-029ce72a0127']
[debug] User config "/home/user/.config/yt-dlp/config": ['--download-archive', 'ids.txt', '--no-continue', '--no-cache-dir', '--add-metadata', '--embed-subs', '--sub-langs=en.*,kr,ja,zh.*', '--write-sub', '--write-auto-sub']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds [d298693b1] (pip)
[debug] Python 3.12.7 (CPython x86_64 64bit) - Linux-6.11.7-2-cachyos-x86_64-with-glibc2.40 (OpenSSL 3.4.0 22 Oct 2024, glibc 2.40)
[debug] exe versions: ffmpeg 7.1 (setts), ffprobe 7.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.21.0, brotlicffi-1.1.0.0, certifi-2024.08.30, curl_cffi-0.7.1, mutagen-1.47.0, requests-2.32.3, secretstorage-3.3.3, sqlite3-3.47.2, urllib3-1.26.20, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1837 extractors
[debug] Loading archive file 'ids.txt'
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds)
[info] Available impersonate targets
Client   OS   Source
---------------------------------------
Chrome   -    curl_cffi (not available)
Edge     -    curl_cffi (not available)
Safari   -    curl_cffi (not available)

Metadata

Metadata

Assignees

No one assigned

    Labels

    core:networkingcore networking relatedexternal issueIssue with an external tool or site

    Type

    No type

    Projects

    Status

    Release blocker

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions