Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XianxinMao
Yt Dlp
提交
be05d5cf
Y
Yt Dlp
项目概览
XianxinMao
/
Yt Dlp
12 个月 前同步成功
通知
27
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
Yt Dlp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
be05d5cf
编写于
7月 07, 2021
作者:
T
Tom-Oliver Heidel
提交者:
GitHub
7月 07, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[soundcloud] Allow login using oauth token (#469)
Authored by: blackjack4494
上级
30d569d2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
29 addition
and
22 deletion
+29
-22
yt_dlp/extractor/soundcloud.py
yt_dlp/extractor/soundcloud.py
+29
-22
未找到文件。
yt_dlp/extractor/soundcloud.py
浏览文件 @
be05d5cf
...
...
@@ -4,7 +4,7 @@
import
itertools
import
re
import
json
import
random
#
import random
from
.common
import
(
InfoExtractor
,
...
...
@@ -164,23 +164,11 @@ class SoundcloudIE(InfoExtractor):
},
# downloadable song
{
'url'
:
'https://soundcloud.com/
oddsamples/bus-brakes
'
,
'md5'
:
'
7624f2351f8a3b2e7cd51522496e7631
'
,
'url'
:
'https://soundcloud.com/
the80m/the-following
'
,
'md5'
:
'
9ffcddb08c87d74fb5808a3c183a1d04
'
,
'info_dict'
:
{
'id'
:
'128590877'
,
'ext'
:
'mp3'
,
'title'
:
'Bus Brakes'
,
'description'
:
'md5:0053ca6396e8d2fd7b7e1595ef12ab66'
,
'uploader'
:
'oddsamples'
,
'uploader_id'
:
'73680509'
,
'timestamp'
:
1389232924
,
'upload_date'
:
'20140109'
,
'duration'
:
17.346
,
'license'
:
'cc-by-sa'
,
'view_count'
:
int
,
'like_count'
:
int
,
'comment_count'
:
int
,
'repost_count'
:
int
,
'id'
:
'343609555'
,
'ext'
:
'wav'
,
},
},
# private link, downloadable format
...
...
@@ -317,12 +305,13 @@ def _download_json(self, *args, **kwargs):
raise
def
_real_initialize
(
self
):
self
.
_CLIENT_ID
=
self
.
_downloader
.
cache
.
load
(
'soundcloud'
,
'client_id'
)
or
"T5R4kgWS2PRf6lzLyIravUMnKlbIxQag"
# 'EXLwg5lHTO2dslU5EePe3xkw0m1h86Cd' # 'YUKXoArFcqrlQn9tfNHvvyfnDISj04zk'
self
.
_CLIENT_ID
=
self
.
_downloader
.
cache
.
load
(
'soundcloud'
,
'client_id'
)
or
'fXuVKzsVXlc6tzniWWS31etd7VHWFUuN'
# persistent `client_id`
self
.
_login
()
_USER_AGENT
=
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"
_USER_AGENT
=
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
_API_AUTH_QUERY_TEMPLATE
=
'?client_id=%s'
_API_AUTH_URL_PW
=
'https://api-auth.soundcloud.com/web-auth/sign-in/password%s'
_API_VERIFY_AUTH_TOKEN
=
'https://api-auth.soundcloud.com/connect/session%s'
_access_token
=
None
_HEADERS
=
{}
_NETRC_MACHINE
=
'soundcloud'
...
...
@@ -332,6 +321,23 @@ def _login(self):
if
username
is
None
:
return
if
username
==
'oauth'
and
password
is
not
None
:
self
.
_access_token
=
password
query
=
self
.
_API_AUTH_QUERY_TEMPLATE
%
self
.
_CLIENT_ID
payload
=
{
'session'
:
{
'access_token'
:
self
.
_access_token
}}
token_verification
=
sanitized_Request
(
self
.
_API_VERIFY_AUTH_TOKEN
%
query
,
json
.
dumps
(
payload
).
encode
(
'utf-8'
))
response
=
self
.
_download_json
(
token_verification
,
None
,
note
=
'Verifying login token...'
,
fatal
=
False
)
if
response
is
not
False
:
self
.
_HEADERS
=
{
'Authorization'
:
'OAuth '
+
self
.
_access_token
}
self
.
report_login
()
else
:
self
.
report_warning
(
'Provided authorization token seems to be invalid. Continue as guest'
)
elif
username
is
not
None
:
self
.
report_warning
(
'Login using username and password is not currently supported. '
'Use "--user oauth --password <oauth_token>" to login using an oauth token'
)
r
'''
def genDevId():
def genNumBlock():
return ''.join([str(random.randrange(10)) for i in range(6)])
...
...
@@ -358,6 +364,7 @@ def genNumBlock():
self.report_warning('Unable to get access token, login may has failed')
else:
self._HEADERS = {'Authorization': 'OAuth ' + self._access_token}
'''
# signature generation
def
sign
(
self
,
user
,
pw
,
clid
):
...
...
@@ -370,9 +377,9 @@ def sign(self, user, pw, clid):
b
=
37
k
=
37
c
=
5
n
=
"0763ed7314c69015fd4a0dc16bbf4b90"
# _KEY
y
=
"8"
# _REV
r
=
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"
# _USER_AGENT
n
=
'0763ed7314c69015fd4a0dc16bbf4b90'
# _KEY
y
=
'8'
# _REV
r
=
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
# _USER_AGENT
e
=
user
# _USERNAME
t
=
clid
# _CLIENT_ID
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录