diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 402e542ae..be996af53 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1066,6 +1066,7 @@ from .scte import ( ) from .seeker import SeekerIE from .senateisvp import SenateISVPIE +from .sendfox import SendFoxIE from .sendtonews import SendtoNewsIE from .servus import ServusIE from .sevenplus import SevenPlusIE diff --git a/youtube_dl/extractor/sendfox.py b/youtube_dl/extractor/sendfox.py new file mode 100644 index 000000000..ed3dece27 --- /dev/null +++ b/youtube_dl/extractor/sendfox.py @@ -0,0 +1,37 @@ +# coding: utf-8 +from __future__ import unicode_literals +from youtube_dl.utils import decode_packed_codes + +from .common import InfoExtractor + + +class SendFoxIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?sendfox\.org/(?P[0-9a-z]+)' + _TEST = { + 'url': 'https://sendfox.org/bsw8k32fezg6/big_buck_bunny_1080p_surround.avi', + 'md5': 'a1a3969c928f8c3850d34abc18c33cc6', + 'info_dict': { + 'id': 'bsw8k32fezg6', + 'ext': 'mp4', + 'title': 'big buck bunny 1080p surround', + 'thumbnail': 'https://img.sendfox.org/bsw8k32fezg6_t.jpg' + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + packed_code = self._search_regex( + r'(eval\(function\(p,a,c,k,e,d\){.+)', webpage, 'obfuscated code') + + video_src = self._search_regex( + r'src:"(.+?)"', decode_packed_codes(packed_code), 'src') + + return { + 'id': video_id, + 'title': self._html_search_regex(r'
(.+?)
', webpage, 'title'), + 'formats': self._extract_m3u8_formats(video_src, video_id, ext='mp4'), + 'thumbnail': 'https://img.sendfox.org/' + video_id + '_t.jpg', + 'ext': 'mp4' + }