Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

868
Views
pytube: AttributeError: el objeto 'NoneType' no tiene atributo 'span'

Acabo de descargar pytube (versión 11.0.1) y comencé con este fragmento de código de aquí :

 from pytube import YouTube YouTube('https://youtu.be/9bZkp7q19f0').streams.first().download()

que da este error:

 AttributeError Traceback (most recent call last) <ipython-input-29-0bfa08b87614> in <module> ----> 1 YouTube('https://youtu.be/9bZkp7q19f0').streams.first().download() ~/anaconda3/lib/python3.8/site-packages/pytube/__main__.py in streams(self) 290 """ 291 self.check_availability() --> 292 return StreamQuery(self.fmt_streams) 293 294 @property ~/anaconda3/lib/python3.8/site-packages/pytube/__main__.py in fmt_streams(self) 175 # https://github.com/pytube/pytube/issues/1054 176 try: --> 177 extract.apply_signature(stream_manifest, self.vid_info, self.js) 178 except exceptions.ExtractError: 179 # To force an update to the js file, we clear the cache and retry ~/anaconda3/lib/python3.8/site-packages/pytube/extract.py in apply_signature(stream_manifest, vid_info, js) 407 408 """ --> 409 cipher = Cipher(js=js) 410 411 for i, stream in enumerate(stream_manifest): ~/anaconda3/lib/python3.8/site-packages/pytube/cipher.py in __init__(self, js) 42 43 self.throttling_plan = get_throttling_plan(js) ---> 44 self.throttling_array = get_throttling_function_array(js) 45 46 self.calculated_n = None ~/anaconda3/lib/python3.8/site-packages/pytube/cipher.py in get_throttling_function_array(js) 321 322 array_raw = find_object_from_startpoint(raw_code, match.span()[1] - 1) --> 323 str_array = throttling_array_split(array_raw) 324 325 converted_array = [] ~/anaconda3/lib/python3.8/site-packages/pytube/parser.py in throttling_array_split(js_array) 156 # Handle functions separately. These can contain commas 157 match = func_regex.search(curr_substring) --> 158 match_start, match_end = match.span() 159 160 function_text = find_object_from_startpoint(curr_substring, match.span()[1]) AttributeError: 'NoneType' object has no attribute 'span'

y me pregunto porque? ¿Alguien puede ayudarme? Estoy ejecutando este fragmento en una consola ipython (IPython versión 7.22.0) con Python 3.8.8 en un entorno conda.

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

Encontré este problema, pytube v11.0.1. Es un poco tarde para mí, pero si nadie ha enviado una solución mañana, lo comprobaré.

en C:\Python38\lib\site-packages\pytube\parser.py

Cambia esta línea:

152: func_regex = re.compile(r"function\([^)]+\)")

a esto:

152: func_regex = re.compile(r"function\([^)]?\)")

El problema es que la expresión regular espera una función con un argumento, pero supongo que YouTube agregó algunos src que incluyen funciones no parametrizadas.

over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema, cambié parser.py como en la respuesta anterior, simplemente bifurqué pytube lib en GitHub y cambié el archivo.

Puedes instalar pytube de esta manera:

 pip install git+https://github.com/baxterisme/pytube

En lugar de:

 pip install pytube
over 4 years ago · Santiago Trujillo Report

0

La solución más sencilla puede ser:

  1. Vaya a la ubicación donde está instalado su python (principalmente en: C:/Users/HP/appdata/local/programs/python)
  2. Busque pytube en la esquina superior derecha y elimine todos los módulos de pytube que vea
  3. abre tu cmd (en modo administrativo) aquí
  4. ingrese el comando: pip install pytube
  5. está hecho ✅ Ahora intente ejecutar el código nuevamente [ ⭐Tuve el mismo problema y estos pasos lo resolvieron]
over 4 years ago · Santiago Trujillo Report

0

La versión problemática era 11.0.1 y ahora ya se ha solucionado, por lo que solo necesita actualizar a la versión más nueva y volverá a funcionar bien:

 pip install --upgrade pytube
over 4 years ago · Santiago Trujillo Report

0

Editar:

Traté de mantener mi solución actualizada, pero comencé a sentir que pytube parece tener problemas con frecuencia y estos errores afectan negativamente a mi proyecto. Así que lo refactoricé y comencé a usar la biblioteca ytdlp a partir de ahora. Entonces, en el momento en que lea esto, es posible que esta solución no funcione para usted.

Por el momento, ya que tenemos este error nuevamente. Puede probar la solución dada aquí

O

Asegúrese de estar en pytube/cipher.py en la línea 293:

Tú cambias

name = re.escape(get_throttling_function_name(js))

para

name = "hha"

gracias jeffery williams

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!