diff options
Diffstat (limited to 'youtube_dl/extractor/udemy.py')
| -rw-r--r-- | youtube_dl/extractor/udemy.py | 32 | 
1 files changed, 17 insertions, 15 deletions
| diff --git a/youtube_dl/extractor/udemy.py b/youtube_dl/extractor/udemy.py index d1e6f2703..89b869559 100644 --- a/youtube_dl/extractor/udemy.py +++ b/youtube_dl/extractor/udemy.py @@ -5,7 +5,6 @@ import re  from .common import InfoExtractor  from ..compat import (      compat_HTTPError, -    compat_urllib_parse_urlencode,      compat_urllib_request,      compat_urlparse,  ) @@ -84,18 +83,19 @@ class UdemyIE(InfoExtractor):          if enroll_url:              webpage = self._download_webpage(                  combine_url(base_url, enroll_url), -                course_id, 'Enrolling in the course') +                course_id, 'Enrolling in the course', +                headers={'Referer': base_url})              if '>You have enrolled in' in webpage:                  self.to_screen('%s: Successfully enrolled in the course' % course_id)      def _download_lecture(self, course_id, lecture_id):          return self._download_json( -            'https://www.udemy.com/api-2.0/users/me/subscribed-courses/%s/lectures/%s?%s' % ( -                course_id, lecture_id, compat_urllib_parse_urlencode({ -                    'fields[lecture]': 'title,description,view_html,asset', -                    'fields[asset]': 'asset_type,stream_url,thumbnail_url,download_urls,data', -                })), -            lecture_id, 'Downloading lecture JSON') +            'https://www.udemy.com/api-2.0/users/me/subscribed-courses/%s/lectures/%s?' +            % (course_id, lecture_id), +            lecture_id, 'Downloading lecture JSON', query={ +                'fields[lecture]': 'title,description,view_html,asset', +                'fields[asset]': 'asset_type,stream_url,thumbnail_url,download_urls,data', +            })      def _handle_error(self, response):          if not isinstance(response, dict): @@ -142,7 +142,9 @@ class UdemyIE(InfoExtractor):              self._LOGIN_URL, None, 'Downloading login popup')          def is_logged(webpage): -            return any(p in webpage for p in ['href="https://www.udemy.com/user/logout/', '>Logout<']) +            return any(re.search(p, webpage) for p in ( +                r'href=["\'](?:https://www\.udemy\.com)?/user/logout/', +                r'>Logout<'))          # already logged in          if is_logged(login_popup): @@ -155,13 +157,13 @@ class UdemyIE(InfoExtractor):              'password': password,          }) -        request = sanitized_Request( -            self._LOGIN_URL, urlencode_postdata(login_form)) -        request.add_header('Referer', self._ORIGIN_URL) -        request.add_header('Origin', self._ORIGIN_URL) -          response = self._download_webpage( -            request, None, 'Logging in as %s' % username) +            self._LOGIN_URL, None, 'Logging in as %s' % username, +            data=urlencode_postdata(login_form), +            headers={ +                'Referer': self._ORIGIN_URL, +                'Origin': self._ORIGIN_URL, +            })          if not is_logged(response):              error = self._html_search_regex( | 
