mirror of
https://github.com/yt-dlp/yt-dlp
synced 2025-12-22 09:05:41 +07:00
working login. aac hq is working if available
This commit is contained in:
@@ -318,6 +318,8 @@ def _real_initialize(self):
|
||||
_API_AUTH_QUERY_TEMPLATE = '?client_id=%s'
|
||||
_API_AUTH_URL_PW = 'https://api-auth.soundcloud.com/web-auth/sign-in/password%s'
|
||||
_access_token = None
|
||||
_HEADERS = {}
|
||||
_NETRC_MACHINE = 'soundcloud'
|
||||
|
||||
def _login(self):
|
||||
username, password = self._get_login_info()
|
||||
@@ -338,10 +340,14 @@ def _login(self):
|
||||
}
|
||||
|
||||
query = self._API_AUTH_QUERY_TEMPLATE % self._CLIENT_ID
|
||||
login = sanitized_Request(self._API_AUTH_URL_PW % query, json.dumps(payload))
|
||||
response = self._download_json(login)
|
||||
print(response)
|
||||
return 0
|
||||
login = sanitized_Request(self._API_AUTH_URL_PW % query, json.dumps(payload).encode('utf-8'))
|
||||
response = self._download_json(login, None)
|
||||
self._access_token = response.get('session').get('access_token')
|
||||
if not self._access_token:
|
||||
self.report_warning('Unable to get access token, login may has failed')
|
||||
else:
|
||||
self._HEADERS = {'Authorization': 'OAuth ' + self._access_token}
|
||||
|
||||
|
||||
|
||||
# signature generation
|
||||
@@ -457,7 +463,7 @@ def add_format(f, protocol, is_preview=False):
|
||||
if not format_url:
|
||||
continue
|
||||
stream = self._download_json(
|
||||
format_url, track_id, query=query, fatal=False)
|
||||
format_url, track_id, query=query, fatal=False, headers=self._HEADERS)
|
||||
if not isinstance(stream, dict):
|
||||
continue
|
||||
stream_url = url_or_none(stream.get('url'))
|
||||
@@ -555,7 +561,7 @@ def _real_extract(self, url):
|
||||
info_json_url = self._resolv_url(self._BASE_URL + resolve_title)
|
||||
|
||||
info = self._download_json(
|
||||
info_json_url, full_title, 'Downloading info JSON', query=query)
|
||||
info_json_url, full_title, 'Downloading info JSON', query=query, headers=self._HEADERS)
|
||||
|
||||
return self._extract_info_dict(info, full_title, token)
|
||||
|
||||
@@ -571,7 +577,7 @@ def _extract_set(self, playlist, token=None):
|
||||
'ids': ','.join([compat_str(t['id']) for t in tracks]),
|
||||
'playlistId': playlist_id,
|
||||
'playlistSecretToken': token,
|
||||
})
|
||||
}, headers=self._HEADERS)
|
||||
entries = []
|
||||
for track in tracks:
|
||||
track_id = str_or_none(track.get('id'))
|
||||
@@ -615,7 +621,7 @@ def _real_extract(self, url):
|
||||
full_title += '/' + token
|
||||
|
||||
info = self._download_json(self._resolv_url(
|
||||
self._BASE_URL + full_title), full_title)
|
||||
self._BASE_URL + full_title), full_title, headers=self._HEADERS)
|
||||
|
||||
if 'errors' in info:
|
||||
msgs = (compat_str(err['error_message']) for err in info['errors'])
|
||||
@@ -640,7 +646,7 @@ def _extract_playlist(self, base_url, playlist_id, playlist_title):
|
||||
for i in itertools.count():
|
||||
response = self._download_json(
|
||||
next_href, playlist_id,
|
||||
'Downloading track page %s' % (i + 1), query=query)
|
||||
'Downloading track page %s' % (i + 1), query=query, headers=self._HEADERS)
|
||||
|
||||
collection = response['collection']
|
||||
|
||||
@@ -762,7 +768,7 @@ def _real_extract(self, url):
|
||||
|
||||
user = self._download_json(
|
||||
self._resolv_url(self._BASE_URL + uploader),
|
||||
uploader, 'Downloading user info')
|
||||
uploader, 'Downloading user info', headers=self._HEADERS)
|
||||
|
||||
resource = mobj.group('rsrc') or 'all'
|
||||
|
||||
@@ -787,7 +793,7 @@ class SoundcloudTrackStationIE(SoundcloudPagedPlaylistBaseIE):
|
||||
def _real_extract(self, url):
|
||||
track_name = self._match_id(url)
|
||||
|
||||
track = self._download_json(self._resolv_url(url), track_name)
|
||||
track = self._download_json(self._resolv_url(url), track_name, headers=self._HEADERS)
|
||||
track_id = self._search_regex(
|
||||
r'soundcloud:track-stations:(\d+)', track['id'], 'track id')
|
||||
|
||||
@@ -820,7 +826,7 @@ def _real_extract(self, url):
|
||||
|
||||
data = self._download_json(
|
||||
self._API_V2_BASE + 'playlists/' + playlist_id,
|
||||
playlist_id, 'Downloading playlist', query=query)
|
||||
playlist_id, 'Downloading playlist', query=query, headers=self._HEADERS)
|
||||
|
||||
return self._extract_set(data, token)
|
||||
|
||||
@@ -857,7 +863,7 @@ def _get_collection(self, endpoint, collection_id, **query):
|
||||
for i in itertools.count(1):
|
||||
response = self._download_json(
|
||||
next_url, collection_id, 'Downloading page {0}'.format(i),
|
||||
'Unable to download API page')
|
||||
'Unable to download API page', headers=self._HEADERS)
|
||||
|
||||
collection = response.get('collection', [])
|
||||
if not collection:
|
||||
|
||||
Reference in New Issue
Block a user