aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom-Oliver Heidel <github@tom-oliver.eu>2020-09-13 12:47:12 +0200
committerGitHub <noreply@github.com>2020-09-13 12:47:12 +0200
commitacd0a71894af8ddea18c28bac6032fbb85e8b9c2 (patch)
tree5eb8c1db8da0cf56474806ae458252fdde55d9de
parentd8edca1e56bf9dae98ac32083af5d43c01e88342 (diff)
parent4cd3053c4f27223a162473bb05724b2ec7454466 (diff)
downloadhypervideo-pre-acd0a71894af8ddea18c28bac6032fbb85e8b9c2.tar.lz
hypervideo-pre-acd0a71894af8ddea18c28bac6032fbb85e8b9c2.tar.xz
hypervideo-pre-acd0a71894af8ddea18c28bac6032fbb85e8b9c2.zip
Merge pull request #96 from blackjack4494/kakao-new-apis
[kakao] new apis
-rw-r--r--youtube_dlc/extractor/kakao.py35
1 files changed, 12 insertions, 23 deletions
diff --git a/youtube_dlc/extractor/kakao.py b/youtube_dlc/extractor/kakao.py
index 32935bb28..fefd8a215 100644
--- a/youtube_dlc/extractor/kakao.py
+++ b/youtube_dlc/extractor/kakao.py
@@ -8,13 +8,13 @@ from ..utils import (
int_or_none,
strip_or_none,
unified_timestamp,
- update_url_query,
)
class KakaoIE(InfoExtractor):
_VALID_URL = r'https?://(?:play-)?tv\.kakao\.com/(?:channel/\d+|embed/player)/cliplink/(?P<id>\d+|[^?#&]+@my)'
- _API_BASE_TMPL = 'http://tv.kakao.com/api/v1/ft/cliplinks/%s/'
+ _API_BASE_TMPL = 'http://tv.kakao.com/api/v1/ft/playmeta/cliplink/%s/'
+ _CDN_API = 'https://tv.kakao.com/katz/v1/ft/cliplink/%s/readyNplay?'
_TESTS = [{
'url': 'http://tv.kakao.com/channel/2671005/cliplink/301965083',
@@ -45,18 +45,8 @@ class KakaoIE(InfoExtractor):
def _real_extract(self, url):
video_id = self._match_id(url)
- display_id = video_id.rstrip('@my')
api_base = self._API_BASE_TMPL % video_id
-
- player_header = {
- 'Referer': update_url_query(
- 'http://tv.kakao.com/embed/player/cliplink/%s' % video_id, {
- 'service': 'kakao_tv',
- 'autoplay': '1',
- 'profile': 'HIGH',
- 'wmode': 'transparent',
- })
- }
+ cdn_api_base = self._CDN_API % video_id
query = {
'player': 'monet_html5',
@@ -73,17 +63,14 @@ class KakaoIE(InfoExtractor):
'videoOutputList', 'width', 'height', 'kbps', 'profile', 'label'])
}
- impress = self._download_json(
- api_base + 'impress', display_id, 'Downloading video info',
- query=query, headers=player_header)
+ api_json = self._download_json(
+ api_base, video_id, 'Downloading video info')
- clip_link = impress['clipLink']
+ clip_link = api_json['clipLink']
clip = clip_link['clip']
title = clip.get('title') or clip_link.get('displayTitle')
- query['tid'] = impress.get('tid', '')
-
formats = []
for fmt in clip.get('videoOutputList', []):
try:
@@ -94,15 +81,17 @@ class KakaoIE(InfoExtractor):
'profile': profile_name,
'fields': '-*,url',
})
+
fmt_url_json = self._download_json(
- api_base + 'raw/videolocation', display_id,
+ cdn_api_base, video_id,
'Downloading video URL for profile %s' % profile_name,
- query=query, headers=player_header, fatal=False)
+ query=query, fatal=False)
if fmt_url_json is None:
continue
- fmt_url = fmt_url_json['url']
+ fmt_vidLocation = fmt_url_json['videoLocation']
+ fmt_url = fmt_vidLocation['url']
formats.append({
'url': fmt_url,
'format_id': profile_name,
@@ -131,7 +120,7 @@ class KakaoIE(InfoExtractor):
})
return {
- 'id': display_id,
+ 'id': video_id,
'title': title,
'description': strip_or_none(clip.get('description')),
'uploader': clip_link.get('channel', {}).get('name'),