[ie/soundcloud] Various fixes (#11820)

- Fix original/download formats so that they are considered bestaudio
- Raise appropriate error if track is DRM-protected

Authored by: bashonly
This commit is contained in:
bashonly 2024-12-15 20:16:04 +00:00 committed by GitHub
parent 09a6c68712
commit d298693b1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 2 deletions

View File

@ -210,6 +210,7 @@ class SoundcloudBaseIE(InfoExtractor):
format_urls = set() format_urls = set()
formats = [] formats = []
has_drm = False
query = {'client_id': self._CLIENT_ID} query = {'client_id': self._CLIENT_ID}
if secret_token: if secret_token:
query['secret_token'] = secret_token query['secret_token'] = secret_token
@ -245,6 +246,7 @@ class SoundcloudBaseIE(InfoExtractor):
'url': format_url, 'url': format_url,
'quality': 10, 'quality': 10,
'format_note': 'Original', 'format_note': 'Original',
'vcodec': 'none',
}) })
def invalid_url(url): def invalid_url(url):
@ -260,6 +262,7 @@ class SoundcloudBaseIE(InfoExtractor):
protocol = traverse_obj(t, ('format', 'protocol', {str})) or 'http' protocol = traverse_obj(t, ('format', 'protocol', {str})) or 'http'
if protocol.startswith(('ctr-', 'cbc-')): if protocol.startswith(('ctr-', 'cbc-')):
has_drm = True
continue continue
if protocol == 'progressive': if protocol == 'progressive':
protocol = 'http' protocol = 'http'
@ -317,8 +320,11 @@ class SoundcloudBaseIE(InfoExtractor):
'preference': -10 if is_preview else None, 'preference': -10 if is_preview else None,
}) })
if not formats and info.get('policy') == 'BLOCK': if not formats:
self.raise_geo_restricted(metadata_available=True) if has_drm:
self.report_drm(track_id)
if info.get('policy') == 'BLOCK':
self.raise_geo_restricted(metadata_available=True)
user = info.get('user') or {} user = info.get('user') or {}