Remove the calls to 'compat_urllib_request.urlopen' in a few extractors

This commit is contained in:
Jaime Marquínez Ferrándiz
2013-12-08 22:24:55 +01:00
parent ac5118bcb9
commit baa7b1978b
5 changed files with 42 additions and 86 deletions

View File

@ -7,7 +7,6 @@ import itertools
import json
import os.path
import re
import socket
import string
import struct
import traceback
@ -17,9 +16,7 @@ from .common import InfoExtractor, SearchInfoExtractor
from .subtitles import SubtitlesInfoExtractor
from ..utils import (
compat_chr,
compat_http_client,
compat_parse_qs,
compat_urllib_error,
compat_urllib_parse,
compat_urllib_request,
compat_urlparse,
@ -53,9 +50,9 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
request = compat_urllib_request.Request(self._LANG_URL)
try:
self.report_lang()
compat_urllib_request.urlopen(request).read()
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self._downloader.report_warning(u'unable to set language: %s' % compat_str(err))
self._download_webpage(self._LANG_URL, None, False)
except ExtractorError as err:
self._downloader.report_warning(u'unable to set language: %s' % compat_str(err.cause))
return False
return True
@ -67,12 +64,8 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
raise ExtractorError(u'No login info available, needed for using %s.' % self.IE_NAME, expected=True)
return False
request = compat_urllib_request.Request(self._LOGIN_URL)
try:
login_page = compat_urllib_request.urlopen(request).read().decode('utf-8')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self._downloader.report_warning(u'unable to fetch login page: %s' % compat_str(err))
return False
login_page = self._download_webpage(self._LOGIN_URL, None, False,
u'Unable to fetch login page')
galx = self._search_regex(r'(?s)<input.+?name="GALX".+?value="(.+?)"',
login_page, u'Login GALX parameter')
@ -105,12 +98,12 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
request = compat_urllib_request.Request(self._LOGIN_URL, login_data)
try:
self.report_login()
login_results = compat_urllib_request.urlopen(request).read().decode('utf-8')
login_results = self._download_webpage(request, None, False)
if re.search(r'(?i)<form[^>]* id="gaia_loginform"', login_results) is not None:
self._downloader.report_warning(u'unable to log in: bad username or password')
return False
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self._downloader.report_warning(u'unable to log in: %s' % compat_str(err))
except ExtractorError as err:
self._downloader.report_warning(u'unable to log in: %s' % compat_str(err.cause))
return False
return True
@ -120,11 +113,8 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
'action_confirm': 'Confirm',
}
request = compat_urllib_request.Request(self._AGE_URL, compat_urllib_parse.urlencode(age_form))
try:
self.report_age_confirmation()
compat_urllib_request.urlopen(request).read().decode('utf-8')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
raise ExtractorError(u'Unable to confirm age: %s' % compat_str(err))
self.report_age_confirmation()
self._download_webpage(request, None, False, u'Unable to confirm age')
return True
def _real_initialize(self):
@ -1737,10 +1727,6 @@ class YoutubeSearchIE(SearchInfoExtractor):
IE_NAME = u'youtube:search'
_SEARCH_KEY = 'ytsearch'
def report_download_page(self, query, pagenum):
"""Report attempt to download search page with given number."""
self._downloader.to_screen(u'[youtube] query "%s": Downloading page %s' % (query, pagenum))
def _get_n_results(self, query, n):
"""Get a specified number of results for a query"""
@ -1749,13 +1735,9 @@ class YoutubeSearchIE(SearchInfoExtractor):
limit = n
while (50 * pagenum) < limit:
self.report_download_page(query, pagenum+1)
result_url = self._API_URL % (compat_urllib_parse.quote_plus(query), (50*pagenum)+1)
request = compat_urllib_request.Request(result_url)
try:
data = compat_urllib_request.urlopen(request).read().decode('utf-8')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
raise ExtractorError(u'Unable to download API page: %s' % compat_str(err))
data = self._download_webpage(result_url, u'query "%s"' % query,
u'Downloading page %s' % pagenum, u'Unable to download API page')
api_response = json.loads(data)['data']
if not 'items' in api_response: