Compare commits

..

No commits in common. "b5d656ac7309f36a7a574b5766883807e4c7a196" and "89b6befb656dfdc19455e200ac43e1cd0cb860ef" have entirely different histories.

3 changed files with 11 additions and 21 deletions

View File

@ -15,7 +15,7 @@ jobs:
with: with:
python-version: '3.11' python-version: '3.11'
- name: Install test requirements - name: Install test requirements
run: pip install -r requirements.txt run: pip install pytest pycryptodomex
- name: Run tests - name: Run tests
run: | run: |
python3 -m yt_dlp -v || true python3 -m yt_dlp -v || true

View File

@ -6,6 +6,3 @@ brotlicffi; platform_python_implementation!='CPython'
certifi certifi
requests>=2.31.0,<3 requests>=2.31.0,<3
urllib3>=1.26.17,<3 urllib3>=1.26.17,<3
# test
pytest

View File

@ -19,8 +19,6 @@ def _generate_video_specific_cache_url(slug, parent_slug):
""" """
return 'https://de-api.loma-cms.com/feloma/page/{0}/?environment=tele5&parent_slug={1}&v=2'.format(slug, return 'https://de-api.loma-cms.com/feloma/page/{0}/?environment=tele5&parent_slug={1}&v=2'.format(slug,
parent_slug) parent_slug)
def _do_cached_post(s: requests.session, def _do_cached_post(s: requests.session,
referer: str, referer: str,
url: str) -> dict: url: str) -> dict:
@ -47,7 +45,6 @@ def _do_cached_post(s: requests.session,
r.raise_for_status() r.raise_for_status()
return r.json() return r.json()
class Tele5IE(DPlayIE): # XXX: Do not subclass from concrete IE class Tele5IE(DPlayIE): # XXX: Do not subclass from concrete IE
_VALID_URL = r'https?://(?:www\.)?tele5\.de/(?:[^/]+/)*(?P<id>[^/?#&]+)' _VALID_URL = r'https?://(?:www\.)?tele5\.de/(?:[^/]+/)*(?P<id>[^/?#&]+)'
_GEO_COUNTRIES = ['DE'] _GEO_COUNTRIES = ['DE']
@ -131,22 +128,19 @@ class Tele5IE(DPlayIE): # XXX: Do not subclass from concrete IE
}] }]
def _real_extract(self, url): def _real_extract(self, url):
content_regex = re.compile( content_regex = re.compile(r'https?://(?:www\.)?(?P<environment>[^.]+)\.de/(?P<parent_slug>[^/]+)/(?P<slug>[^/?#&]+)')
r'https?://(?:www\.)?(?P<environment>[^.]+)\.de/(?P<parent_slug>[^/]+)/(?P<slug>[^/?#&]+)')
m = content_regex.search(url) m = content_regex.search(url)
if m is not None: if m is not None:
environment, parent_slug, slug = m.groups() environment, parent_slug, slug = m.groups()
s = requests.session() s = requests.session()
headers_for_origin = { headers_for_origin = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0'}
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0'}
r = s.get(url=url, r = s.get(url=url,
headers=headers_for_origin) headers=headers_for_origin)
r.raise_for_status() r.raise_for_status()
cached_base = _do_cached_post( cached_base = _do_cached_post(s=s,
s=s, referer=url,
referer=url, url='https://de-api.loma-cms.com/feloma/configurations/?environment={0}'.format(environment))
url='https://de-api.loma-cms.com/feloma/configurations/?environment={0}'.format(environment))
site_info = cached_base.get('data').get('settings').get('site') site_info = cached_base.get('data').get('settings').get('site')
player_info = site_info.get('player') player_info = site_info.get('player')
@ -155,11 +149,10 @@ class Tele5IE(DPlayIE): # XXX: Do not subclass from concrete IE
sonic_endpoint = compat_urlparse.urlparse(player_info['sonicEndpoint']).hostname sonic_endpoint = compat_urlparse.urlparse(player_info['sonicEndpoint']).hostname
country = site_info['info']['country'] country = site_info['info']['country']
cached_video_specific = _do_cached_post(s=s, cached_video_specific = _do_cached_post(s=s, referer=url,
referer=url, url=_generate_video_specific_cache_url(
url=_generate_video_specific_cache_url( slug=slug,
slug=slug, parent_slug=parent_slug))
parent_slug=parent_slug))
video_id = cached_video_specific['data']['blocks'][1]['videoId'] video_id = cached_video_specific['data']['blocks'][1]['videoId']