Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Register
Sign in
Toggle navigation
Menu
Open sidebar
Tiger Ton
real-url
Commits
b6daf0ab
Unverified
Commit
b6daf0ab
authored
2 years ago
by
wbt5
Browse files
Options
Download
Plain Diff
Merge branch
parents
e90452ea
bdfb83c5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
douyin.py
+46
-40
douyin.py
twitch.py
+1
-1
twitch.py
with
47 additions
and
41 deletions
+47
-41
douyin.py
+
46
-
40
View file @
b6daf0ab
# 获取抖音直播的真实流媒体地址,默认最高画质。
# 如果知道该直播间如“6779127643792280332”形式的room_id,则直接传入room_id。
# 如果不知道room_id,可以使用手机上打开直播间后,选择“分享--复制链接”,传入如“https://v.douyin.com/qyRqMp/”形式的分享链接。
#
import
requests
import
re
import
sys
import
requests
class
DouYin
:
def
__init__
(
self
,
rid
):
self
.
rid
=
rid
def
get_real_url
(
self
):
headers
=
{
'User-Agent'
:
'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, '
'like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
,
}
try
:
if
'v.douyin.com'
in
self
.
rid
:
room_id
=
re
.
findall
(
r
'(\d{19})'
,
requests
.
get
(
url
=
self
.
rid
).
url
)[
0
]
else
:
room_id
=
self
.
rid
room_url
=
'https://webcast.amemv.com/webcast/reflow/{}'
.
format
(
room_id
)
response
=
requests
.
get
(
url
=
room_url
,
headers
=
headers
).
text
rtmp_pull_url
=
re
.
search
(
r
'"rtmp_pull_url":"(.*?flv)"'
,
response
).
group
(
1
)
hls_pull_url
=
re
.
search
(
r
'"hls_pull_url":"(.*?m3u8)"'
,
response
).
group
(
1
)
real_url
=
[
rtmp_pull_url
,
hls_pull_url
]
except
:
raise
Exception
(
'直播间不存在或未开播或参数错误'
)
return
real_url
def
get_real_url
(
rid
):
try
:
dy
=
DouYin
(
rid
)
return
dy
.
get_real_url
()
except
Exception
as
e
:
print
(
'Exception:'
,
e
)
return
False
DEBUG
=
False
headers
=
{
'authority'
:
'v.douyin.com'
,
'user-agent'
:
'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
,
}
if
__name__
==
'__main__'
:
r
=
input
(
'请输入抖音直播间room_id或分享链接:
\n
'
)
print
(
get_real_url
(
r
))
url
=
input
(
'请输入抖音直播链接或19位room_id:'
)
if
re
.
match
(
r
'\d{19}'
,
url
):
room_id
=
url
else
:
try
:
url
=
re
.
search
(
r
'(https.*)'
,
url
).
group
(
1
)
response
=
requests
.
head
(
url
,
headers
=
headers
)
url
=
response
.
headers
[
'location'
]
room_id
=
re
.
search
(
r
'\d{19}'
,
url
).
group
(
0
)
except
Exception
as
e
:
if
DEBUG
:
print
(
e
)
print
(
'获取room_id失败'
)
sys
.
exit
(
1
)
print
(
'room_id'
,
room_id
)
try
:
headers
.
update
({
'authority'
:
'webcast.amemv.com'
,
'cookie'
:
'_tea_utm_cache_1128={%22utm_source%22:%22copy%22%2C%22utm_medium%22:%22android%22%2C%22utm_campaign%22:%22client_share%22}'
,
})
params
=
(
(
'type_id'
,
'0'
),
(
'live_id'
,
'1'
),
(
'room_id'
,
room_id
),
(
'app_id'
,
'1128'
),
)
response
=
requests
.
get
(
'https://webcast.amemv.com/webcast/room/reflow/info/'
,
headers
=
headers
,
params
=
params
).
json
()
rtmp_pull_url
=
response
[
'data'
][
'room'
][
'stream_url'
][
'rtmp_pull_url'
]
hls_pull_url
=
response
[
'data'
][
'room'
][
'stream_url'
][
'hls_pull_url'
]
print
(
rtmp_pull_url
)
print
(
hls_pull_url
)
except
Exception
as
e
:
if
DEBUG
:
print
(
e
)
print
(
'获取real url失败'
)
This diff is collapsed.
Click to expand it.
twitch.py
+
1
-
1
View file @
b6daf0ab
...
...
@@ -23,7 +23,7 @@ class Twitch:
def
get_client_id
(
self
):
try
:
res
=
self
.
s
.
get
(
f
'https://www.twitch.tv/
{
self
.
rid
}
'
).
text
client_id
=
re
.
search
(
r
'
"C
lient
-ID":
"(.*?)"'
,
res
).
group
(
1
)
client_id
=
re
.
search
(
r
'
c
lient
Id=
"(.*?)"'
,
res
).
group
(
1
)
return
client_id
except
requests
.
exceptions
.
ConnectionError
:
raise
Exception
(
'ConnectionError'
)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets