[theplatform] use _get_netrc_login_info and fix session expiration check(#10345)
authorRemita Amine <remitamine@gmail.com>
Sun, 14 Aug 2016 10:52:48 +0000 (11:52 +0100)
committerRemita Amine <remitamine@gmail.com>
Sun, 14 Aug 2016 10:55:28 +0000 (11:55 +0100)
youtube_dl/extractor/theplatform.py

index bb3efc4ea17e6f4d0ae2252d7e6a317cd6bf7f03..9ca765a5ffaa9d4fdf1d57fabd4a527d5a772962 100644 (file)
@@ -218,15 +218,16 @@ class ThePlatformIE(ThePlatformBaseIE):
         requestor_info = self._downloader.cache.load('mvpd', requestor_id) or {}
         authn_token = requestor_info.get('authn_token')
         if authn_token:
-            token_expires = unified_timestamp(xml_text(authn_token, 'simpleTokenExpires').replace('_GMT', ''))
-            if token_expires and token_expires >= time.time():
+            token_expires = unified_timestamp(re.sub(r'[_ ]GMT', '', xml_text(authn_token, 'simpleTokenExpires')))
+            if token_expires and token_expires <= int(time.time()):
                 authn_token = None
+                requestor_info = {}
         if not authn_token:
             # TODO add support for other TV Providers
             mso_id = 'DTV'
-            login_info = netrc.netrc().authenticators(mso_id)
-            if not login_info:
-                return None
+            username, password = self._get_netrc_login_info(mso_id)
+            if not username or not password:
+                return ''
 
             def post_form(form_page, note, data={}):
                 post_url = self._html_search_regex(r'<form[^>]+action=(["\'])(?P<url>.+?)\1', form_page, 'post url', group='url')
@@ -248,8 +249,8 @@ class ThePlatformIE(ThePlatformBaseIE):
             provider_login_page = post_form(
                 provider_redirect_page, 'Downloading Provider Login Page')
             mvpd_confirm_page = post_form(provider_login_page, 'Logging in', {
-                'username': login_info[0],
-                'password': login_info[2],
+                'username': username,
+                'password': password,
             })
             post_form(mvpd_confirm_page, 'Confirming Login')