diff --git a/haruhi_dl/extractor/generic.py b/haruhi_dl/extractor/generic.py index 8e8ee2178..1a9287d14 100644 --- a/haruhi_dl/extractor/generic.py +++ b/haruhi_dl/extractor/generic.py @@ -136,6 +136,7 @@ from .pulsembed import PulsEmbedIE from .arcpublishing import ArcPublishingIE from .medialaan import MedialaanIE from .simplecast import SimplecastIE +from .spreaker import SpreakerIE class GenericIE(InfoExtractor): @@ -2301,6 +2302,20 @@ class GenericIE(InfoExtractor): }, 'playlist_mincount': 52, }, + { + # Spreaker embed + 'url': 'https://socjalizm.fm/jak-bedzie-w-socjalizmie/praca/', + 'info_dict': { + 'id': '44098221', + 'ext': 'mp3', + 'title': 'Jak będzie w socjalizmie? Praca.', + 'uploader': 'Socjalizm FM', + 'description': 'md5:d2833c41296a996153353890c329e1af', + 'upload_date': '20210329', + 'uploader_id': '13705223', + 'timestamp': 1617024666, + }, + }, ] def report_following_redirect(self, new_url): @@ -2739,6 +2754,7 @@ class GenericIE(InfoExtractor): ArcPublishingIE, MedialaanIE, SimplecastIE, + SpreakerIE, ): try: ie_key = embie.ie_key() diff --git a/haruhi_dl/extractor/spreaker.py b/haruhi_dl/extractor/spreaker.py index 7fa13899d..a3012707e 100644 --- a/haruhi_dl/extractor/spreaker.py +++ b/haruhi_dl/extractor/spreaker.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import itertools +import re from .common import InfoExtractor from ..compat import compat_str @@ -108,6 +109,12 @@ class SpreakerIE(InfoExtractor): 'only_matching': True, }] + @staticmethod + def _extract_urls(webpage, **kw): + return ['https://api.spreaker.com/episode/%s' % mobj.group('id') for mobj in re.finditer( + r']+src=(["\'])(?:(?:https?)?:)?//widget\.spreaker\.com/player\?(?:.+?&)?episode_id=(?P\d+)', + webpage)] + def _real_extract(self, url): episode_id = self._match_id(url) data = self._download_json(