Skip to content
Advertisement

youtube downloader by pyscript

I’m trying to make a youtube downloader by pyscript but I got this error

<py-env>
    - pytube
</py-env>

<py-script >
    from pytube import YouTube
    url="https://www.youtube.com/watch?v=7BXJIjfJCsA&t=111s"
    my_video=YouTube(url)
    print(my_video.title)
</py-script>
JsException(PythonError: Traceback (most recent call last): 
File "/lib/python3.10/site-packages/_pyodide/_base.py", line 429, 
in eval_code .run(globals, locals) 
File "/lib/python3.10/site-packages/_pyodide/_base.py", line 300, 
in run coroutine = eval(self.code, globals, locals) 
File "", line 4, 
in 
File "/lib/python3.10/site-packages/pytube/__main__.py", line 341, 
in title self._title = self.vid_info['videoDetails']['title'] 
File "/lib/python3.10/site-packages/pytube/__main__.py", line 246, 
in vid_info innertube_response = innertube.player(self.video_id) 
File "/lib/python3.10/site-packages/pytube/innertube.py", line 300, 
in player return self._call_api(endpoint, query, self.base_data) 
File "/lib/python3.10/site-packages/pytube/innertube.py", line 242, 
in _call_api response = request._execute_request( 
File "/lib/python3.10/site-packages/pytube/request.py", line 37, 
in _execute_request return urlopen(request, timeout=timeout) # nosec 
File "/lib/python3.10/urllib/request.py", line 216, 
in urlopen return opener.open(url, data, timeout) 
File "/lib/python3.10/urllib/request.py", line 519, 
in open response = self._open(req, data) 
File "/lib/python3.10/urllib/request.py", line 541, 
in _open return self._call_chain(self.handle_open, 'unknown', 
File "/lib/python3.10/urllib/request.py", line 496, 
in _call_chain result = func(*args) 
File "/lib/python3.10/urllib/request.py", line 1419, 
in unknown_open raise URLError('unknown url type: %s' % type) urllib.error.URLError:

Advertisement

Answer

Web browsers do not allow applications to open TCP sockets. Your application depends on urllib which requires TCP sockets. The package urllib is not supported by any web browser due to the browser’s security sandbox.

Your application and its dependencies must be modified to use supported browser APIs such as fetch.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement