From fce572294a76759528a58cde865e2d003963f917 Mon Sep 17 00:00:00 2001 From: sulyi Date: Fri, 16 Dec 2016 00:33:49 +0100 Subject: [PATCH] [jsinterp] Adding error handling to global variable init --- youtube_dl/jsinterp/jsinterp.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/youtube_dl/jsinterp/jsinterp.py b/youtube_dl/jsinterp/jsinterp.py index 73725294b..9aebe128f 100644 --- a/youtube_dl/jsinterp/jsinterp.py +++ b/youtube_dl/jsinterp/jsinterp.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import re +from compat import compat_str from ..utils import ExtractorError from .tstream import TokenStream, convert_to_unary from .jsgrammar import Token, token_keys @@ -70,12 +71,14 @@ class JSInterpreter(object): o = {} for k, v in value.items(): o[k] = self.create_reference(v, (o, k)) - elif isinstance(value, list): + elif isinstance(value, (list, tuple, set)): o = [] for k, v in enumerate(value): o[k] = self.create_reference(v, (o, k)) - else: + elif isinstance(value, (int, float, compat_str, bool, re._pattern_type)) or value is None: o = value + else: + raise ExtractorError('Unsupported type, %s in variables' % type(value)) return Reference(o, parent_key)