mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[afreecatv] Add support for authentication (#14450)
This commit is contained in:
		| @@ -9,6 +9,7 @@ from ..utils import ( | ||||
|     determine_ext, | ||||
|     ExtractorError, | ||||
|     int_or_none, | ||||
|     urlencode_postdata, | ||||
|     xpath_text, | ||||
| ) | ||||
|  | ||||
| @@ -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', | ||||
| @@ -172,6 +174,51 @@ class AfreecaTVIE(InfoExtractor): | ||||
|             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) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․