[AfreecaTV] Add AfreecaTVUserIE
(#3286)
Closes #3257 Authored by: hatienl0i261299
This commit is contained in:
parent
22fba53fbd
commit
bd4073c535
2 changed files with 58 additions and 1 deletions
|
@ -1,14 +1,16 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import functools
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..compat import compat_xpath
|
from ..compat import compat_xpath
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
|
ExtractorError,
|
||||||
|
OnDemandPagedList,
|
||||||
date_from_str,
|
date_from_str,
|
||||||
determine_ext,
|
determine_ext,
|
||||||
ExtractorError,
|
|
||||||
int_or_none,
|
int_or_none,
|
||||||
qualities,
|
qualities,
|
||||||
traverse_obj,
|
traverse_obj,
|
||||||
|
@ -482,3 +484,57 @@ class AfreecaTVLiveIE(AfreecaTVIE):
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'is_live': True,
|
'is_live': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class AfreecaTVUserIE(InfoExtractor):
|
||||||
|
IE_NAME = 'afreecatv:user'
|
||||||
|
_VALID_URL = r'https?://bj\.afreeca(?:tv)?\.com/(?P<id>[^/]+)/vods/?(?P<slug_type>[^/]+)?'
|
||||||
|
_TESTS = [{
|
||||||
|
'url': 'https://bj.afreecatv.com/ryuryu24/vods/review',
|
||||||
|
'info_dict': {
|
||||||
|
'_type': 'playlist',
|
||||||
|
'id': 'ryuryu24',
|
||||||
|
'title': 'ryuryu24 - review',
|
||||||
|
},
|
||||||
|
'playlist_count': 218,
|
||||||
|
}, {
|
||||||
|
'url': 'https://bj.afreecatv.com/parang1995/vods/highlight',
|
||||||
|
'info_dict': {
|
||||||
|
'_type': 'playlist',
|
||||||
|
'id': 'parang1995',
|
||||||
|
'title': 'parang1995 - highlight',
|
||||||
|
},
|
||||||
|
'playlist_count': 997,
|
||||||
|
}, {
|
||||||
|
'url': 'https://bj.afreecatv.com/ryuryu24/vods',
|
||||||
|
'info_dict': {
|
||||||
|
'_type': 'playlist',
|
||||||
|
'id': 'ryuryu24',
|
||||||
|
'title': 'ryuryu24 - all',
|
||||||
|
},
|
||||||
|
'playlist_count': 221,
|
||||||
|
}, {
|
||||||
|
'url': 'https://bj.afreecatv.com/ryuryu24/vods/balloonclip',
|
||||||
|
'info_dict': {
|
||||||
|
'_type': 'playlist',
|
||||||
|
'id': 'ryuryu24',
|
||||||
|
'title': 'ryuryu24 - balloonclip',
|
||||||
|
},
|
||||||
|
'playlist_count': 0,
|
||||||
|
}]
|
||||||
|
_PER_PAGE = 60
|
||||||
|
|
||||||
|
def _fetch_page(self, user_id, user_type, page):
|
||||||
|
page += 1
|
||||||
|
info = self._download_json(f'https://bjapi.afreecatv.com/api/{user_id}/vods/{user_type}', user_id,
|
||||||
|
query={'page': page, 'per_page': self._PER_PAGE, 'orderby': 'reg_date'},
|
||||||
|
note=f'Downloading {user_type} video page {page}')
|
||||||
|
for item in info['data']:
|
||||||
|
yield self.url_result(
|
||||||
|
f'https://vod.afreecatv.com/player/{item["title_no"]}/', AfreecaTVIE, item['title_no'])
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
user_id, user_type = self._match_valid_url(url).group('id', 'slug_type')
|
||||||
|
user_type = user_type or 'all'
|
||||||
|
entries = OnDemandPagedList(functools.partial(self._fetch_page, user_id, user_type), self._PER_PAGE)
|
||||||
|
return self.playlist_result(entries, user_id, f'{user_id} - {user_type}')
|
||||||
|
|
|
@ -44,6 +44,7 @@ from .aenetworks import (
|
||||||
from .afreecatv import (
|
from .afreecatv import (
|
||||||
AfreecaTVIE,
|
AfreecaTVIE,
|
||||||
AfreecaTVLiveIE,
|
AfreecaTVLiveIE,
|
||||||
|
AfreecaTVUserIE,
|
||||||
)
|
)
|
||||||
from .airmozilla import AirMozillaIE
|
from .airmozilla import AirMozillaIE
|
||||||
from .aljazeera import AlJazeeraIE
|
from .aljazeera import AlJazeeraIE
|
||||||
|
|
Loading…
Reference in a new issue