# coding: utf-8 from __future__ import unicode_literals from random import choice as random_choice from string import ascii_letters, digits from time import time as time_time from ..compat import compat_filter as filter from ..utils import ( clean_html, ExtractorError, get_element_by_class, parse_duration, parse_filesize, update_url_query, unified_strdate, url_or_none, ) from .common import InfoExtractor class DoodStreamIE(InfoExtractor): # dood.* redirects # .watch -> .re (but HEAD request fails in GenericIE) # .so -> .li _VALID_URL = r'https?://(?:www\.)?(?Pdood\.(?:to|la|li|pm|re|sh|watch|ws|one)|ds2play\.com)/[ed]/(?P[a-z\d]+)' _TESTS = [{ 'url': 'https://dood.li/e/h7ecgw5oqn8k', 'md5': '90f2af170551c17fc78bee7426890054', 'info_dict': { 'id': 'h7ecgw5oqn8k', 'ext': 'mp4', 'title': 'Free-Slow-Music', 'upload_date': '20230814', 'thumbnail': 'https://img.doodcdn.co/splash/7mbnwydhb6kb7xyk.jpg', }, }, { 'url': 'https://dood.to/d/is34uy8wvaet', 'md5': '04740d3ba93bcd638aa7a097d9226710', 'info_dict': { 'id': 'is34uy8wvaet', 'ext': 'mp4', 'title': 'Akhanda (2021) Telugu DVDScr MP3 700MB', 'upload_date': '20211202', 'thumbnail': r're:https?://img\.doodcdn\.com?/[\w/]+\.jpg', 'filesize_approx': int, 'duration': 9886, }, 'skip': 'Video not found', }, { 'url': 'https://dood.sh/d/wlihoael8uog', 'md5': '2c14444c89788cc309738c1560abe278', 'info_dict': { 'id': 'wlihoael8uog', 'ext': 'mp4', 'title': 'VID 20220319 161659', 'thumbnail': r're:https?://img\.doodcdn\.com?/splash/rmpnhb8ckkk79cge\.jpg', 'upload_date': '20220319', 'filesize_approx': int, 'duration': 12.0, }, }, { 'url': 'http://dood.ws /d/h7ecgw5oqn8k', 'only_matching': True, }, { 'url': 'https://dood.li/d/wlihoael8uog', 'only_matching': True, }] def _real_extract(self, url): video_id = self._match_id(url) host = 'dood.li' url = 'https://%s/e/%s' % (host, video_id) webpage = self._download_webpage(url, video_id, note='Downloading "/e/" webpage') def get_title(html, fatal=False): return self._html_search_regex(r']*>([^<]+?)(?:[|-]\s+DoodStream\s*)?