誰かがこのコードを手伝ってくれますか?動画を再生するpythonスクリプトを作成しようとしていますが、YouTubeの動画をダウンロードするこのファイルを見つけました。何が起こっているのか完全にはわからず、このエラーを理解できません。
エラー:
AttributeError: 'NoneType' object has no attribute 'group'
トレースバック:
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('&')
コードスニペット:
(66-71行目)
content = resp.read()
videoUrl = getVideoUrl(content)
if videoUrl is not None:
print('Video URL cannot be found')
exit(1)
(行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
エラーは11行目にあります。re.search
が結果を返さない、つまりNone
であり、fmtre.group
を呼び出そうとしていますが、fmtre
はNone
、したがってAttributeError
です。
あなたが試すことができます:
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
regex
を使用してURLを照合しますが、照合できないため、結果はNone
になります
None
タイプにはgroup
属性がありません
結果にdetect
にいくつかのコードを追加する必要があります
ルールに一致しない場合は、コードの下で続行しないでください
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