hdr = {'User-Agent': 'Mozilla/5.0'}
url = "https://www.youtube.com/results?search_query=%s+%s" % (artistName, songName)
req = urllib2.Request(url, headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
for SongTitle in soup.findAll('a', {'class': 'yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink spf-link '}):
song_titles.append(SongTitle.string)
i += 1
これは、カスタム URL で YouTube ページを検索するために使用しているコードです。その後、ユーザーはビデオ番号に基づいてダウンロードするビデオを選択できます。問題は、ダウンロードしようとするほとんどのビデオが次のエラーを返すことです。
WARNING:root:ciphertag doesn't match signature type
WARNING:root:JRMOMjCoR58
Traceback (most recent call last):
File "PyKo.py", line 123, in <module>
query(sys.argv[1], sys.argv[2])
File "PyKo.py", line 118, in query
downloadSong(link_to_download, s_url)
File "PyKo.py", line 30, in downloadSong
video = pafy.new(url)
File "C:\Python27\lib\site-packages\pafy\pafy.py", line 138, in new
return Pafy(url, basic, gdata, signature, size, callback)
File "C:\Python27\lib\site-packages\pafy\pafy.py", line 1041, in __init__
self.fetch_basic()
File "C:\Python27\lib\site-packages\pafy\pafy.py", line 1087, in fetch_basic
self.dash = _extract_dash(self._dashurl)
File "C:\Python27\lib\site-packages\pafy\pafy.py", line 274, in _extract_dash
dashdata = fetch_decode(dashurl)
File "C:\Python27\lib\site-packages\pafy\pafy.py", line 91, in fetch_decode
req = g.opener.open(url)
File "C:\Python27\lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
そして、非常に少量のビデオしか機能しません。私はグーグルで調べて、似たようなものに対する答えを見つけました。ヘッダーを挿入するように言われたので、そうしましたが、それでも機能しません。前もって感謝します!