Quelqu'un peut-il m'aider avec ce code? J'essaye de faire un script python qui jouera les vidéos et j'ai trouvé ce fichier qui télécharge les vidéos Youtube. Je ne suis pas tout à fait sûr de ce qui se passe et je ne peux pas comprendre cette erreur .
Erreur:
AttributeError: 'NoneType' object has no attribute 'group'
Traceback:
Traceback (most recent call last):
File "youtube.py", line 67, in <module>
videoUrl = getVideoUrl(content)
File "youtube.py", line 11, in getVideoUrl
grps = fmtre.group(0).split('&')
Extrait de code:
(lignes 66-71)
content = resp.read()
videoUrl = getVideoUrl(content)
if videoUrl is not None:
print('Video URL cannot be found')
exit(1)
(lignes 9-17)
def getVideoUrl(content):
fmtre = re.search('(?<=fmt_url_map=).*', content)
grps = fmtre.group(0).split('&')
vurls = urllib2.unquote(grps[0])
videoUrl = None
for vurl in vurls.split('|'):
if vurl.find('itag=5') > 0:
return vurl
return None
L'erreur est dans votre ligne 11, votre re.search
ne renvoie aucun résultat, c'est-à-dire None
, puis vous essayez d'appeler fmtre.group
mais fmtre
est None
, d'où le AttributeError
.
Tu pourrais essayer:
def getVideoUrl(content):
fmtre = re.search('(?<=fmt_url_map=).*', content)
if fmtre is None:
return None
grps = fmtre.group(0).split('&')
vurls = urllib2.unquote(grps[0])
videoUrl = None
for vurl in vurls.split('|'):
if vurl.find('itag=5') > 0:
return vurl
return None
Vous utilisez regex
pour faire correspondre l'URL, mais elle ne peut pas correspondre, donc le résultat est None
et le type None
n'a pas l'attribut group
Vous devez ajouter du code à detect
le résultat
S'il ne peut pas correspondre à la règle, il ne doit pas continuer sous le code
def getVideoUrl(content):
fmtre = re.search('(?<=fmt_url_map=).*', content)
if fmtre is None:
return None # if fmtre is None, it prove there is no match url, and return None to tell the calling function
grps = fmtre.group(0).split('&')
vurls = urllib2.unquote(grps[0])
videoUrl = None
for vurl in vurls.split('|'):
if vurl.find('itag=5') > 0:
return vurl
return None