- # UTC+x - UTC+9 (KST)
- tz = time.altzone if time.localtime().tm_isdst == 1 else time.timezone
- tz_offset = -tz // 60 - 9 * 60
- self._set_cookie('vlive.tv', 'timezoneOffset', '%d' % tz_offset)
-
- status_params = self._download_json(
- 'http://www.vlive.tv/video/status?videoSeq=%s' % video_id,
- video_id, 'Downloading JSON status',
- headers={'Referer': url})
- status = status_params.get('status')
- air_start = status_params.get('onAirStartAt', '')
- is_live = status_params.get('isLive')
-
- video_params = self._search_regex(
- r'vlive\.tv\.video\.ajax\.request\.handler\.init\((.+)\)',
- webpage, 'video params')
- live_params, long_video_id, key = re.split(
- r'"\s*,\s*"', video_params)[1:4]
+ VIDEO_PARAMS_RE = r'\bvlive\.video\.init\(([^)]+)'
+ VIDEO_PARAMS_FIELD = 'video params'
+
+ params = self._parse_json(self._search_regex(
+ VIDEO_PARAMS_RE, webpage, VIDEO_PARAMS_FIELD, default=''), video_id,
+ transform_source=lambda s: '[' + s + ']', fatal=False)
+
+ if not params or len(params) < 7:
+ params = self._search_regex(
+ VIDEO_PARAMS_RE, webpage, VIDEO_PARAMS_FIELD)
+ params = [p.strip(r'"') for p in re.split(r'\s*,\s*', params)]
+
+ status, long_video_id, key = params[2], params[5], params[6]
+ status = remove_start(status, 'PRODUCT_')