diff --git a/youtube_dl/extractor/filemoon.py b/youtube_dl/extractor/filemoon.py index 5050a0967..79feaa546 100644 --- a/youtube_dl/extractor/filemoon.py +++ b/youtube_dl/extractor/filemoon.py @@ -4,12 +4,14 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from .. import utils -from ..utils import js_to_json +from ..utils import ( + decode_packed_codes, + js_to_json, +) class FileMoonIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?filemoon\.sx/./(?P\w+)(/(?P.*))*' + _VALID_URL = r'https?://(?:www\.)?filemoon\.sx/./(?P<id>\w+)(?:/(?P<title>.+))*' _TEST = { 'url': 'https://filemoon.sx/e/dw40rxrzruqz', 'md5': '5a713742f57ac4aef29b74733e8dda01', @@ -21,19 +23,17 @@ class FileMoonIE(InfoExtractor): } def _real_extract(self, url): - video_id = self._match_id(url) - m = self._VALID_URL_RE.match(url) - title = m.group('title') + video_id, title = re.match(self._VALID_URL, url).group('id', 'title') if not title: title = video_id webpage = self._download_webpage(url, video_id) - matches = re.findall(r'(eval.*?)<\/script>', webpage, flags=re.DOTALL) + matches = re.findall(r'(?s)(eval.*?)<\/script>', webpage) packed = matches[-1] - unpacked = utils.decode_packed_codes(packed) + unpacked = decode_packed_codes(packed) jwplayer_sources = self._parse_json( self._search_regex( - r"(?s)player\.setup\(\{sources:(.*?])", unpacked, 'jwplayer sources'), + r'(?s)player\s*\.\s*setup\s*\(\s*\{\s*sources\s*:\s*(.*?])', unpacked, 'jwplayer sources'), video_id, transform_source=js_to_json) formats = self._parse_jwplayer_formats(jwplayer_sources, video_id)