|
|
@ -219,12 +219,23 @@ class FacebookIE(InfoExtractor): |
|
|
|
|
|
|
|
BEFORE = '{swf.addParam(param[0], param[1]);});' |
|
|
|
AFTER = '.forEach(function(variable) {swf.addVariable(variable[0], variable[1]);});' |
|
|
|
m = re.search(re.escape(BEFORE) + '(?:\n|\\\\n)(.*?)' + re.escape(AFTER), webpage) |
|
|
|
if m: |
|
|
|
swf_params = m.group(1).replace('\\\\', '\\').replace('\\"', '"') |
|
|
|
PATTERN = re.escape(BEFORE) + '(?:\n|\\\\n)(.*?)' + re.escape(AFTER) |
|
|
|
|
|
|
|
for m in re.findall(PATTERN, webpage): |
|
|
|
swf_params = m.replace('\\\\', '\\').replace('\\"', '"') |
|
|
|
data = dict(json.loads(swf_params)) |
|
|
|
params_raw = compat_urllib_parse_unquote(data['params']) |
|
|
|
video_data = json.loads(params_raw)['video_data'] |
|
|
|
video_data_candidate = json.loads(params_raw)['video_data'] |
|
|
|
for _, f in video_data_candidate.items(): |
|
|
|
if not f: |
|
|
|
continue |
|
|
|
if isinstance(f, dict): |
|
|
|
f = [f] |
|
|
|
if isinstance(f, list): |
|
|
|
continue |
|
|
|
if f[0].get('video_id') == video_id: |
|
|
|
video_data = video_data_candidate |
|
|
|
break |
|
|
|
|
|
|
|
def video_data_list2dict(video_data): |
|
|
|
ret = {} |
|
|
|