from __future__ import unicode_literals
import json
-import re
from .common import InfoExtractor
from ..compat import compat_str
title = (data.get('title') or data.get('grid_title') or video_id).strip()
+ urls = []
formats = []
duration = None
if extract_formats:
if not isinstance(format_dict, dict):
continue
format_url = url_or_none(format_dict.get('url'))
- if not format_url:
+ if not format_url or format_url in urls:
continue
+ urls.append(format_url)
duration = float_or_none(format_dict.get('duration'), scale=1000)
ext = determine_ext(format_url)
if 'hls' in format_id.lower() or ext == 'm3u8':
PinterestCollectionIE, cls).suitable(url)
def _real_extract(self, url):
- username, slug = re.match(self._VALID_URL, url).groups()
+ username, slug = self._match_valid_url(url).groups()
board = self._call_api(
'Board', slug, {
'slug': slug,