Skip to content

Commit

Permalink
[afreecatv] Add support for authentication (ytdl-org#14450)
Browse files Browse the repository at this point in the history
  • Loading branch information
dstftw committed Apr 1, 2018
1 parent 03fcde1 commit e51762b
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions youtube_dl/extractor/afreecatv.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
determine_ext,
ExtractorError,
int_or_none,
urlencode_postdata,
xpath_text,
)

Expand All @@ -28,6 +29,7 @@ class AfreecaTVIE(InfoExtractor):
)
(?P<id>\d+)
'''
_NETRC_MACHINE = 'afreecatv'
_TESTS = [{
'url': 'http://live.afreecatv.com:8079/app/index.cgi?szType=read_ucc_bbs&szBjId=dailyapril&nStationNo=16711924&nBbsNo=18605867&nTitleNo=36164052&szSkin=',
'md5': 'f72c89fe7ecc14c1b5ce506c4996046e',
Expand Down Expand Up @@ -172,6 +174,51 @@ def parse_video_key(key):
video_key['part'] = int(m.group('part'))
return video_key

def _real_initialize(self):
self._login()

def _login(self):
username, password = self._get_login_info()
if username is None:
return

login_form = {
'szWork': 'login',
'szType': 'json',
'szUid': username,
'szPassword': password,
'isSaveId': 'false',
'szScriptVar': 'oLoginRet',
'szAction': '',
}

response = self._download_json(
'https://login.afreecatv.com/app/LoginAction.php', None,
'Logging in', data=urlencode_postdata(login_form))

_ERRORS = {
-4: 'Your account has been suspended due to a violation of our terms and policies.',
-5: 'https://member.afreecatv.com/app/user_delete_progress.php',
-6: 'https://login.afreecatv.com/membership/changeMember.php',
-8: "Hello! AfreecaTV here.\nThe username you have entered belongs to \n an account that requires a legal guardian's consent. \nIf you wish to use our services without restriction, \nplease make sure to go through the necessary verification process.",
-9: 'https://member.afreecatv.com/app/pop_login_block.php',
-11: 'https://login.afreecatv.com/afreeca/second_login.php',
-12: 'https://member.afreecatv.com/app/user_security.php',
0: 'The username does not exist or you have entered the wrong password.',
-1: 'The username does not exist or you have entered the wrong password.',
-3: 'You have entered your username/password incorrectly.',
-7: 'You cannot use your Global AfreecaTV account to access Korean AfreecaTV.',
-10: 'Sorry for the inconvenience. \nYour account has been blocked due to an unauthorized access. \nPlease contact our Help Center for assistance.',
-32008: 'You have failed to log in. Please contact our Help Center.',
}

result = int_or_none(response.get('RESULT'))
if result != 1:
error = _ERRORS.get(result, 'You have failed to log in.')
raise ExtractorError(
'Unable to login: %s said: %s' % (self.IE_NAME, error),
expected=True)

def _real_extract(self, url):
video_id = self._match_id(url)

Expand Down

0 comments on commit e51762b

Please sign in to comment.