harden regex with lookbehind

pull/8/head
siikamiika 4 years ago
parent eaedbfd97e
commit 15eae44d74

@ -28,8 +28,8 @@ class YoutubeLiveChatReplayFD(FragmentFD):
return self._download_fragment(ctx, url, info_dict, headers) return self._download_fragment(ctx, url, info_dict, headers)
def parse_yt_initial_data(data): def parse_yt_initial_data(data):
window_patt = b'window\\["ytInitialData"\\]\\s*=\\s*(.*?);' window_patt = b'window\\["ytInitialData"\\]\\s*=\\s*(.*?)(?<=});'
var_patt = b'var\\s+ytInitialData\\s*=\\s*(.*?);' var_patt = b'var\\s+ytInitialData\\s*=\\s*(.*?)(?<=});'
for patt in window_patt, var_patt: for patt in window_patt, var_patt:
try: try:
raw_json = re.search(patt, data).group(1) raw_json = re.search(patt, data).group(1)

@ -1495,8 +1495,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
def _get_yt_initial_data(self, video_id, webpage): def _get_yt_initial_data(self, video_id, webpage):
config = self._search_regex( config = self._search_regex(
(r'window\["ytInitialData"\]\s*=\s*(.*);', (r'window\["ytInitialData"\]\s*=\s*(.*?)(?<=});',
r'var\s+ytInitialData\s*=\s*(.*?);'), r'var\s+ytInitialData\s*=\s*(.*?)(?<=});'),
webpage, 'ytInitialData', default=None) webpage, 'ytInitialData', default=None)
if config: if config:
return self._parse_json( return self._parse_json(

Loading…
Cancel
Save