Pytube: AttributeError: 'NoneType' objekt nemá žádný atribut 'span'

0

Otázka

Stáhnul jsem si pytube (verze 11.0.1) a začal se tento fragment kódu z tu:

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

který dává tuto chybu:

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'

a zajímalo by mě, proč? Může mi někdo pomoci? Já používám tento úryvek v ipython konzole (IPython verze 7.22.0) s Python 3.8.8 v conda prostředí.

attributeerror python pytube
2021-11-22 02:24:59
3

Nejlepší odpověď

11

Zjistil tento problém, pytube v11.0.1. Je to pro mě trochu pozdě, ale pokud nikdo předložil opravit zítra to prověřím.

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

Změňte tento řádek:

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

k tomuto:

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

Problém je, že regex očekává, že funkce s argumentem, ale myslím, že youtube přidal některé src, která zahrnuje non-paramterized funkce.

2021-11-22 07:03:22

Já jsem taky líný, ale myslím, že to by mělo být oznámeno na github informovat vývojáře o tom.
Lukas Nothhelfer

Díky moc, fungovalo v pořádku.
Yalchin Mammadli

vlastně, ještě lepší by bylo, function\([^)]*?\)
Braynstorm

To včera fungovalo, teď už to zase nejde, alespoň na mé straně, jsem zkontrolovat linky 152, to je v pořádku, nicméně, to je zase hází mi to stejnou chybu...
Yalchin Mammadli
3

Měl jsem stejný problém, změnil jsem parser.py stejně jako v odpovědi výše, jen rozeklaný pytube lib na GitHub, a změnil soubor.

Můžete nainstalovat pytube tímto způsobem:

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

Místo:

pip install pytube
2021-11-22 22:11:50

Tam je další chyba od včerejška. Nějaký nápad jak to opravit?
wmcnally

Nemám tušení, protože jsem nedostal žádné chyby
baxgf
0

Nejvíce nejjednodušší řešení může být:

  1. Přejděte na místo, kde python je nainstalován (Především v : C:/Users/HP/appdata/local/programs/python)
  2. Hledat pytube v pravém horním rohu a odstranit všechny pytube moduly vidíte
  3. otevřít cmd (v režimu správy) zde
  4. zadejte příkaz : pip nainstalovat pytube
  5. to dělá ✅ Nyní zkuste spustit kód znovu [ ⭐Měl jsem stejný problém a tyto kroky to vyřešil]
2021-11-22 14:13:13

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................