Showing preview only (1,053K chars total). Download the full file or copy to clipboard to get everything.
Repository: wbt5/real-url
Branch: master
Commit: b6daf0abcd44
Files: 114
Total size: 1012.6 KB
Directory structure:
gitextract_z4z_ib8x/
├── .gitattributes
├── .gitignore
├── 173.py
├── 17live.py
├── 2cq.py
├── 51lm.py
├── 95xiu.py
├── 9xiu.py
├── LICENSE
├── README.md
├── acfun.py
├── bigo.py
├── bilibili.py
├── cc.py
├── changyou.py
├── danmu/
│ ├── danmaku/
│ │ ├── __init__.py
│ │ ├── acfun.proto
│ │ ├── acfun.py
│ │ ├── acfun_pb2.py
│ │ ├── bilibili.py
│ │ ├── cc.py
│ │ ├── douyu.py
│ │ ├── egame.py
│ │ ├── huajiao.proto
│ │ ├── huajiao.py
│ │ ├── huajiao_pb2.py
│ │ ├── huomao.py
│ │ ├── huya.py
│ │ ├── inke.py
│ │ ├── kuaishou.proto
│ │ ├── kuaishou.py
│ │ ├── kuaishou_pb2.py
│ │ ├── kugou.proto
│ │ ├── kugou.py
│ │ ├── kugou_pb2.py
│ │ ├── laifeng.py
│ │ ├── longzhu.py
│ │ ├── look.py
│ │ ├── pps.py
│ │ ├── qf.py
│ │ ├── tars/
│ │ │ ├── EndpointF.py
│ │ │ ├── QueryF.py
│ │ │ ├── __TimeoutQueue.py
│ │ │ ├── __adapterproxy.py
│ │ │ ├── __async.py
│ │ │ ├── __init__.py
│ │ │ ├── __logger.py
│ │ │ ├── __packet.py
│ │ │ ├── __rpc.py
│ │ │ ├── __servantproxy.py
│ │ │ ├── __tars.py
│ │ │ ├── __trans.py
│ │ │ ├── __tup.py
│ │ │ ├── __util.py
│ │ │ ├── core.py
│ │ │ ├── exception.py
│ │ │ └── tars/
│ │ │ ├── EndpointF.tars
│ │ │ ├── QueryF.tars
│ │ │ └── __init__.py
│ │ ├── yqs.proto
│ │ ├── yqs.py
│ │ ├── yqs_pb2.py
│ │ └── zhanqi.py
│ └── main.py
├── douyin.py
├── douyu.py
├── egame.py
├── fengbolive.py
├── hongle.py
├── huajiao.py
├── huomao.py
├── huya.py
├── imifun.py
├── immomo.py
├── inke.py
├── iqiyi.js
├── iqiyi.py
├── ixigua.py
├── jd.py
├── kbs.py
├── kk.py
├── kuaishou.py
├── kugou.py
├── kuwo.py
├── laifeng.py
├── lehai.py
├── liveu.py
├── longzhu.py
├── look.py
├── maoer.py
├── migu.py
├── now.py
├── pps.py
├── ppsport.py
├── qf.py
├── qie.py
├── renren.py
├── requirements.txt
├── showself.py
├── sports_iqiyi.py
├── tiktok.py
├── tuho.py
├── twitch.py
├── v6cn.py
├── wali.py
├── woxiu.py
├── xunlei.py
├── yangshipin.py
├── yizhibo.py
├── youku.py
├── yuanbobo.py
├── yy.py
├── zhanqi.py
└── zhibotv.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
*.js linguist-language=python
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
.idea/*
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
================================================
FILE: 173.py
================================================
# 艺气山直播:http://www.173.com/room/category?categoryId=11
import requests
class YQS:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
params = f'roomId={self.rid}'
with requests.Session() as s:
res = s.post('https://www.173.com/room/getVieoUrl', params=params).json()
data = res['data']
if data:
status = data['status']
if status == 2:
return data['url']
else:
raise Exception('未开播')
else:
raise Exception('直播间不存在')
def get_real_url(rid):
try:
yqs = YQS(rid)
return yqs.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('输入艺气山直播房间号:\n')
print(get_real_url(r))
================================================
FILE: 17live.py
================================================
# 获取17直播的真实流媒体地址,可能需要挂国外代理才行。
# 17直播间链接形式:https://17.live/live/276480
import requests
class Live17:
def __init__(self, rid):
"""
# 可能需要挂代理。
# self.proxies = {
# "http": "http://xxxx:1080",
# "https": "http://xxxx:1080",
# }
Args:
rid:
"""
self.rid = rid
self.BASE_URL = 'https://api-dsa.17app.co/api/v1/lives/'
def get_real_url(self):
try:
# res = requests.get(f'{self.BASE_URL}{self.rid}', proxies=self.proxies).json()
res = requests.get(f'{self.BASE_URL}{self.rid}').json()
real_url_default = res.get('rtmpUrls')[0].get('url')
real_url_modify = real_url_default.replace('global-pull-rtmp.17app.co', 'china-pull-rtmp-17.tigafocus.com')
real_url = [real_url_modify, real_url_default]
except Exception:
raise Exception('直播间不存在或未开播')
return real_url
def get_real_url(rid):
try:
live17 = Live17(rid)
return live17.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('请输入17直播房间号:\n')
print(get_real_url(r))
================================================
FILE: 2cq.py
================================================
# 棉花糖直播:https://www.2cq.com/rank
import requests
class MHT:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
with requests.Session() as s:
res = s.get(f'https://www.2cq.com/proxy/room/room/info?roomId={self.rid}&appId=1004')
res = res.json()
if res['status'] == 1:
result = res['result']
if result['liveState'] == 1:
real_url = result['pullUrl']
return real_url
else:
raise Exception('未开播')
else:
raise Exception('直播间可能不存在')
def get_real_url(rid):
try:
mht = MHT(rid)
return mht.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('输入棉花糖直播房间号:\n')
print(get_real_url(r))
================================================
FILE: 51lm.py
================================================
# 羚萌直播:https://live.51lm.tv/programs/Hot
from urllib.parse import urlencode
import requests
import time
import hashlib
class LM:
def __init__(self, rid):
self.rid = rid
self.BASE_URL = 'https://www.51lm.tv/live/room/info/basic'
def get_real_url(self):
roominfo = {'programId': self.rid}
def g(d):
return hashlib.md5(f'{d}#{urlencode(roominfo)}#Ogvbm2ZiKE'.encode('utf-8')).hexdigest()
lminfo = {
'h': int(time.time()) * 1000,
'i': -246397986,
'o': 'iphone',
's': 'G_c17a64eff3f144a1a48d9f02e8d981c2',
't': 'H',
'v': '4.20.43',
'w': 'a710244508d3cc14f50d24e9fecc496a'
}
u = g(urlencode(lminfo))
lminfo = f'G={u}&{urlencode(lminfo)}'
with requests.Session() as s:
res = s.post(self.BASE_URL, json=roominfo, headers={'lminfo': lminfo}).json()
code = res['code']
if code == 200:
status = res['data']['isLiving']
if status == 'True':
real_url = res['data']['playUrl']
return real_url
else:
raise Exception('未开播')
elif code == -1:
raise Exception('输入错误')
elif code == 1201:
raise Exception('直播间不存在')
def get_real_url(rid):
try:
lm = LM(rid)
return lm.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('输入羚萌直播房间号:\n')
print(get_real_url(r))
================================================
FILE: 95xiu.py
================================================
# 95秀:http://www.95.cn/
import requests
import re
class JWXiu:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
with requests.Session() as s:
res = s.get(f'https://www.95.cn/{self.rid}.html').text
try:
uid = re.search(r'"uid":(\d+),', res).group(1)
status = re.search(r'"is_offline":"(\d)"', res).group(1)
except AttributeError:
raise Exception('没有找到直播间')
if status == '0':
real_url = f'https://play1.95xiu.com/app/{uid}.flv'
return real_url
else:
raise Exception('未开播')
def get_real_url(rid):
try:
jwx = JWXiu(rid)
return jwx.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('输入95秀房间号:\n')
print(get_real_url(r))
================================================
FILE: 9xiu.py
================================================
# 九秀直播:https://www.9xiu.com/other/classify?tag=all&index=all
import requests
class JXiu:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
with requests.Session() as s:
url = f'https://h5.9xiu.com/room/live/enterRoom?rid={self.rid}'
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) '
'AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
}
res = s.get(url, headers=headers).json()
if res['code'] == 200:
status = res['data']['status']
if status == 0:
raise Exception('未开播')
elif status == 1:
live_url = res['data']['live_url']
return live_url
else:
raise Exception('直播间可能不存在')
def get_real_url(rid):
try:
jx = JXiu(rid)
return jx.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('输入九秀直播房间号:\n')
print(get_real_url(r))
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: README.md
================================================
# Real-Url
## 说明
没想到还有这么多朋友发 issue 和邮件咨询问题,感谢大家的支持🎈!因为有时很忙,回复和提交代码的周期会有点长,抱歉哦😋
这个仓库存放的是:获取一些直播平台真实流媒体地址(直播源)和弹幕的 Python 代码实现。获取的地址经测试,均可在 PotPlayer、VLC、DPlayer(flv.js + hls.js)等播放器中播放。
> 🤘👌🤙🙏🐉👉 :如果该项目能帮助到您,欢迎 star 和 pr;或在您的项目中标注 Real-Url 为参考来源。
目前已实现:
**59** 个直播平台的直播源获取:斗鱼直播、虎牙直播、哔哩哔哩直播、战旗直播、网易 CC 直播、火猫直播、企鹅电竞、YY 直播、一直播、快手直播、花椒直播、映客直播、西瓜直播、触手直播(已倒闭)、NOW 直播、抖音直播,爱奇艺直播、酷狗直播、龙珠直播、PPS 奇秀直播、六间房、17 直播、来疯直播、优酷轮播台、网易 LOOK 直播、千帆直播、陌陌直播、小米直播、迅雷直播、京东直播、企鹅体育、人人直播、棉花糖直播、九秀直播、羚萌直播、95秀、新浪疯播、红人直播、艾米直播、KK直播、酷我聚星、乐嗨直播、秀色直播、星光直播、我秀直播、热猫直播、艺气山直播、AcFun 直播、猫耳FM、畅秀阁、Twitch、TikTok、央视频、PP体育、zhibotv、腾讯体育直播、爱奇艺体育直播、liveU、bigolive、咪咕视频体育。
**18** 个直播平台的弹幕获取:斗鱼直播、虎牙直播、哔哩哔哩直播、快手直播、火猫直播、企鹅电竞、花椒直播、映客直播、网易 CC 直播、酷狗直播、龙珠直播、PPS 奇秀、搜狐千帆、战旗直播、来疯直播、网易 LOOK 直播、AcFun 直播、艺气山直播。
## 运行
1. 项目使用了很简单的 Python 代码,仅在 Python 3 环境运行测试。
2. 具体所需模块请查看 requirements.txt
3. 获取斗鱼和爱奇艺的直播源,需 JavaScript 环境,可使用 node.js。爱奇艺直播里有个参数是加盐的 MD5,由仓库中的 iqiyi.js 生成。
4. 每个平台的直播源和弹幕获取功能相互独立,以后再整合。弹幕食用:python main.py
## 反馈
有直播平台失效或新增其他平台解析的,可发 [issue](https://github.com/wbt5/real-url/issues/new)。
## 更新
2021.11.7::sparkles:新增咪咕体育。
2021.8.15::sparkles:新增 liveU、bigolive。
2021.7.4::art:更新哔哩哔哩直播源;:bug:修复Acfun直播弹幕;:bug:修复企鹅电竞弹幕。
2021.6.20::sparkles:新增爱奇艺体育直播。
2021.6.13::bug:修复腾讯体育。
2021.6.12::bug:修复斗鱼直播。
2021.05.22::sparkles:新增腾讯体育直播。
2021.05.15::art:更新爱奇艺、:bug:修复战旗直播。
2021.05.13: :sparkles:新增 zhibotv。
2021.05.05::sparkles:新增 PP体育。
2021.05.03::sparkles:新增 央视频。
2021.05.02::sparkles:新增 Twitch、TikTok。
2021.05.01::sparkles:新增畅秀阁、猫耳FM。
2020.12.20:修复直播源:抖音、艺气山、花椒、快手、来疯、龙珠、PPS、人人直播、17live 可能需要挂代理。
2020.10.17:修复:西瓜直播、YY直播。
2020.09.26:更新:虎牙直播源;注释掉未完成的 YY 直播弹幕功能。
2020.09.12:新增:斗鱼添加一个从PC网页端获取直播源的方法,可选线路和清晰度;新增requirements.txt文件;更新代码。
2020.08.18:更新快手直播源,现在播放链接需要带参数;更新快手直播弹幕,直接用 protobuf 序列化;新增 AcFun、艺气山两个平台的弹幕功能。
2020.08.08:新增 AcFun 直播、艺气山直播;更新:哔哩哔哩直播、虎牙直播、红人直播;优化:斗鱼直播。
2020.07.31:新增 19 个直播平台,详见上面说明;更新YY直播,现在可以获取最高画质;优化战旗直播、优酷直播代码;
2020.07.25:新增网易 LOOK 直播弹幕获取;修复斗鱼直播源;新增陌陌直播源。
2020.07.19:新增来疯直播弹幕获取
2020.07.18:新增酷狗、龙珠、PPS奇秀、搜狐千帆、战旗直播等5个平台的弹幕获取
2020.07.11:新增网易CC直播弹幕获取
2020.07.05:新增花椒直播、映客直播弹幕获取;更新虎牙直播源
2020.06.25:新增🐧企鹅电竞弹幕获取
2020.06.19:新增火猫直播弹幕获取
2020.06.18:新增弹幕功能
- 添加斗鱼、虎牙、哔哩哔哩和快手 4 个平台的弹幕获取。后续添加其他平台。
- 实现弹幕功能的代码和思路主要来自:[danmaku](https://github.com/IsoaSFlus/danmaku) 和 [ks_barrage](https://github.com/py-wuhao/ks_barrage),感谢两位大佬!
2020.05.30:更新虎牙直播。
2020.05.25:更新哔哩哔哩直播。
- 默认获取最高画质,不同清晰度取决于请求参数中的 qn。
- 增加 .m3u8 格式播放链接的获取方法。
2020.05.23:更新17直播、虎牙直播
2020.05.19:更新火猫、快手、酷狗、PPS
2020.05.08:新增优酷轮播台、look 直播、千帆直播;
- 新增优酷轮播台:优酷轮播台是优酷直播下的一个子栏目,轮播一些经典电影电视剧,个人感觉要比其他直播平台影视区的画质要好,而且没有平台水印和主播自己贴的乱七八糟的字幕遮挡。
- 新增 LOOK 直播:LOOK 直播是网易云音乐旗下的直播平台。
- 新增千帆直播:千帆直播是搜狐旗下的直播平台。
2020.05.01:新增优酷的来疯直播。
2020.04.30:新增17直播。
2020.04.24:修复虎牙、哔哩哔哩、快手、爱奇艺。
2020.02.26:更新一直播。
2020.01.18:更新抖音直播。
2020.01.10:新增酷狗直播、龙珠直播、PPS奇秀直播、六间房。
2020.01.09:新增爱奇艺直播。
2020.01.07:新增抖音直播;删除一个直播平台。
2020.01.03:修复快手直播,请求移动网页版。
2019.12.31:修复快手直播。
2019.12.07:修复哔哩哔哩直播。
2019.12.04:更新斗鱼直播,新增一种获取方式。
2019.11.24:新增收米直播。
2019.11.18:新增西瓜直播;触手直播;NOW直播。
2019.11.18:新增一直播;快手直播;花椒直播;映客直播。
2019.11.17:新增火猫直播;新增企鹅电竞;新增YY直播。
2019.11.16:新增战旗tv直播源;新增网易CC直播。
2019.11.09:新增哔哩哔哩直播源。
2019.11.03:新增虎牙直播源。
2019.11.02:修复斗鱼预览地址获取的方法;新增未开播房间的判断。
## 鸣谢
感谢 [JetBrains](https://www.jetbrains.com/?from=real-url) 提供的 free JetBrains Open Source license
[](https://www.jetbrains.com/?from=real-url)
================================================
FILE: acfun.py
================================================
# AcFun直播:https://live.acfun.cn/
# 默认最高画质
import requests
import json
class AcFun:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
headers = {
'content-type': 'application/x-www-form-urlencoded',
'cookie': '_did=H5_',
'referer': 'https://m.acfun.cn/'
}
url = 'https://id.app.acfun.cn/rest/app/visitor/login'
data = 'sid=acfun.api.visitor'
with requests.Session() as s:
res = s.post(url, data=data, headers=headers).json()
userid = res['userId']
visitor_st = res['acfun.api.visitor_st']
url = 'https://api.kuaishouzt.com/rest/zt/live/web/startPlay'
params = {
'subBiz': 'mainApp',
'kpn': 'ACFUN_APP',
'kpf': 'PC_WEB',
'userId': userid,
'did': 'H5_',
'acfun.api.visitor_st': visitor_st
}
data = f'authorId={self.rid}&pullStreamType=FLV'
res = s.post(url, params=params, data=data, headers=headers).json()
if res['result'] == 1:
data = res['data']
videoplayres = json.loads(data['videoPlayRes'])
liveadaptivemanifest, = videoplayres['liveAdaptiveManifest']
adaptationset = liveadaptivemanifest['adaptationSet']
representation = adaptationset['representation'][-1]
real_url = representation['url']
return real_url
else:
raise Exception('直播已关闭')
def get_real_url(rid):
try:
acfun = AcFun(rid)
return acfun.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('请输入AcFun直播房间号:\n')
print(get_real_url(r))
================================================
FILE: bigo.py
================================================
# -*- coding: utf-8 -*-
# @Time: 2021/8/15 16:00
# @Project: my-spiders
# @Author: wbt5
# @Blog: https://wbt5.com
# BIGO LIVE:https://www.bigo.tv/cn/
import requests
class Bigo:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
with requests.Session() as s:
url = f'https://ta.bigo.tv/official_website/studio/getInternalStudioInfo'
res = s.post(url, data={'siteId': self.rid}).json()
hls_src = res['data']['hls_src']
play_url = hls_src if hls_src else '不存在或未开播'
return play_url
def get_real_url(rid):
try:
url = Bigo(rid)
return url.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('输入bigo直播房间号:\n')
print(get_real_url(r))
================================================
FILE: bilibili.py
================================================
# 获取哔哩哔哩直播的真实流媒体地址,默认获取直播间提供的最高画质
# qn=150高清
# qn=250超清
# qn=400蓝光
# qn=10000原画
import requests
class BiliBili:
def __init__(self, rid):
"""
有些地址无法在PotPlayer播放,建议换个播放器试试
Args:
rid:
"""
rid = rid
self.header = {
'User-Agent': 'Mozilla/5.0 (iPod; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, '
'like Gecko) CriOS/87.0.4280.163 Mobile/15E148 Safari/604.1',
}
# 先获取直播状态和真实房间号
r_url = 'https://api.live.bilibili.com/room/v1/Room/room_init'
param = {
'id': rid
}
with requests.Session() as self.s:
res = self.s.get(r_url, headers=self.header, params=param).json()
if res['msg'] == '直播间不存在':
raise Exception(f'bilibili {rid} {res["msg"]}')
live_status = res['data']['live_status']
if live_status != 1:
raise Exception(f'bilibili {rid} 未开播')
self.real_room_id = res['data']['room_id']
def get_real_url(self, current_qn: int = 10000) -> dict:
url = 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo'
param = {
'room_id': self.real_room_id,
'protocol': '0,1',
'format': '0,1,2',
'codec': '0,1',
'qn': current_qn,
'platform': 'h5',
'ptype': 8,
}
res = self.s.get(url, headers=self.header, params=param).json()
stream_info = res['data']['playurl_info']['playurl']['stream']
qn_max = 0
for data in stream_info:
accept_qn = data['format'][0]['codec'][0]['accept_qn']
for qn in accept_qn:
qn_max = qn if qn > qn_max else qn_max
if qn_max != current_qn:
param['qn'] = qn_max
res = self.s.get(url, headers=self.header, params=param).json()
stream_info = res['data']['playurl_info']['playurl']['stream']
stream_urls = {}
# flv流无法播放,暂修改成获取hls格式的流,
for data in stream_info:
format_name = data['format'][0]['format_name']
if format_name == 'ts':
base_url = data['format'][-1]['codec'][0]['base_url']
url_info = data['format'][-1]['codec'][0]['url_info']
for i, info in enumerate(url_info):
host = info['host']
extra = info['extra']
stream_urls[f'线路{i + 1}'] = f'{host}{base_url}{extra}'
break
return stream_urls
def get_real_url(rid):
try:
bilibili = BiliBili(rid)
return bilibili.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('请输入bilibili直播房间号:\n')
print(get_real_url(r))
================================================
FILE: cc.py
================================================
# 获取网易CC的真实流媒体地址。
# 默认为最高画质
import requests
class CC:
def __init__(self, rid):
self.rid = rid
def get_real_url(self):
room_url = f'https://api.cc.163.com/v1/activitylives/anchor/lives?anchor_ccid={self.rid}'
response = requests.get(url=room_url).json()
data = response.get('data', 0)
if data:
channel_id = data.get(f'{self.rid}').get('channel_id', 0)
if channel_id:
response = requests.get(f'https://cc.163.com/live/channel/?channelids={channel_id}').json()
real_url = response.get('data')[0].get('sharefile')
else:
raise Exception('直播间不存在')
else:
raise Exception('输入错误')
return real_url
def get_real_url(rid):
try:
cc = CC(rid)
return cc.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('请输入网易CC直播房间号:\n')
print(get_real_url(r))
================================================
FILE: changyou.py
================================================
# -*- coding: utf-8 -*-
# @Time: 2021/5/1 17:40
# @Project: real-url
# @Author: wbt5
# @Blog: https://wbt5.com
import json
import requests
class ChangYou:
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 '
}
url = 'http://cxg.changyou.com/landingpage/getstreamname.action?roomid={}'.format(self.rid)
with requests.Session() as s:
res = s.get(url, headers=headers).json()
try:
code = res['code']
if code == 'error':
return res['msg']
else:
stream = res['obj']['stream']
url = 'http://pull.wscdn.cxg.changyou.com/show/{}.flv'.format(stream)
return url
except json.decoder.JSONDecodeError:
return '输入错误'
def get_real_url(rid):
try:
cxg = ChangYou(rid)
return cxg.get_real_url()
except Exception as e:
print('Exception:', e)
return False
if __name__ == '__main__':
r = input('请输入畅秀阁roomid:\n')
print(get_real_url(r))
================================================
FILE: danmu/danmaku/__init__.py
================================================
import asyncio
import re
import aiohttp
from .yqs import YiQiShan
from .acfun import AcFun
from .bilibili import Bilibili
from .cc import CC
from .douyu import Douyu
from .egame import eGame
from .huajiao import HuaJiao
from .huomao import HuoMao
from .huya import Huya
from .inke import Inke
from .kuaishou import KuaiShou
from .kugou import KuGou
from .laifeng import LaiFeng
from .longzhu import LongZhu
from .look import Look
from .pps import QiXiu
from .qf import QF
from .zhanqi import ZhanQi
# from .yy import YY
__all__ = ['DanmakuClient']
class DanmakuClient:
def __init__(self, url, q):
self.__url = ''
self.__site = None
self.__hs = None
self.__ws = None
self.__stop = False
self.__dm_queue = q
self.__link_status = True
if 'http://' == url[:7] or 'https://' == url[:8]:
self.__url = url
else:
self.__url = 'http://' + url
for u, s in {'douyu.com': Douyu,
'live.bilibili.com': Bilibili,
'huya.com': Huya,
'huomao.com': HuoMao,
'kuaishou.com': KuaiShou,
'egame.qq.com': eGame,
'huajiao.com': HuaJiao,
'inke.cn': Inke,
'cc.163.com': CC,
'fanxing.kugou.com': KuGou,
'zhanqi.tv': ZhanQi,
'longzhu.com': LongZhu,
'pps.tv': QiXiu,
'qf.56.com': QF,
'laifeng.com': LaiFeng,
'look.163.com': Look,
'acfun.cn': AcFun,
'173.com': YiQiShan,
'yy.com': ''}.items():
if re.match(r'^(?:http[s]?://)?.*?%s/(.+?)$' % u, url):
self.__site = s
self.__u = u
break
if self.__site is None:
print('Invalid link!')
exit()
self.__hs = aiohttp.ClientSession()
async def init_ws(self):
ws_url, reg_datas = await self.__site.get_ws_info(self.__url)
self.__ws = await self.__hs.ws_connect(ws_url)
if reg_datas:
for reg_data in reg_datas:
if self.__u == 'qf.56.com' or self.__u == 'laifeng.com' or self.__u == 'look.163.com':
await self.__ws.send_str(reg_data)
else:
await self.__ws.send_bytes(reg_data)
async def heartbeats(self):
while not self.__stop and self.__site.heartbeat:
await asyncio.sleep(self.__site.heartbeatInterval)
try:
if self.__u == 'qf.56.com' or self.__u == 'laifeng.com' or self.__u == 'look.163.com':
await self.__ws.send_str(self.__site.heartbeat)
else:
await self.__ws.send_bytes(self.__site.heartbeat)
except:
pass
async def fetch_danmaku(self):
while not self.__stop:
async for msg in self.__ws:
self.__link_status = True
ms = self.__site.decode_msg(msg.data)
for m in ms:
await self.__dm_queue.put(m)
await asyncio.sleep(1)
await self.init_ws()
await asyncio.sleep(1)
async def init_ws_huajiao(self):
rid = re.search(r'\d+', self.__url).group(0)
s = self.__site(rid)
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
await self.__ws.send_bytes(s.sendHandshakePack())
count = 0
async for msg in self.__ws:
if count == 0:
await self.__ws.send_bytes(s.sendLoginPack(msg.data))
elif count == 1:
await self.__ws.send_bytes(s.sendJoinChatroomPack(msg.data))
elif count > 2:
ms = s.decode_msg(msg.data)
for m in ms:
await self.__dm_queue.put(m)
count += 1
async def init_ws_acfun(self):
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
await self.__ws.send_bytes(self.__s.encode_packet('register'))
async def ping_acfun(self):
while True:
await asyncio.sleep(1)
await self.__ws.send_bytes(self.__s.encode_packet('ping'))
async def keepalive_acfun(self):
while True:
await asyncio.sleep(50)
await self.__ws.send_bytes(self.__s.encode_packet('keepalive'))
async def heartbeat_acfun(self):
while True:
await asyncio.sleep(10)
await self.__ws.send_bytes(self.__s.encode_packet('ztlivecsheartbeat'))
async def fetch_danmaku_acfun(self):
count = 0
async for msg in self.__ws:
self.__link_status = True
ms = self.__s.decode_packet(msg.data)
if count == 0:
await self.__ws.send_bytes(self.__s.encode_packet('ztlivecsenterroom'))
count += 1
for m in ms:
await self.__dm_queue.put(m)
async def init_ws_173(self):
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
await self.__ws.send_bytes(self.__s.pack('startup'))
await asyncio.sleep(1)
await self.__ws.send_bytes(self.__s.pack('enterroomreq'))
async def tcphelloreq_173(self):
while True:
await asyncio.sleep(10)
await self.__ws.send_bytes(self.__s.pack('tcphelloreq'))
async def roomhelloreq_173(self):
while True:
await asyncio.sleep(5)
await self.__ws.send_bytes(self.__s.pack('roomhelloreq'))
async def fetch_danmaku_173(self):
async for msg in self.__ws:
self.__link_status = True
ms = self.__s.unpack(msg.data)
for m in ms:
await self.__dm_queue.put(m)
async def init_ws_yy(self):
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
await self.__ws.send_bytes(self.__s.LoginUDB())
async def heartbeat_yy(self):
while True:
await asyncio.sleep(10)
await self.__ws.send_bytes(self.__s.pingAp())
async def fetch_danmaku_yy(self):
count = 0
async for msg in self.__ws:
self.__link_status = True
ms = self.__s.onProto(msg.data)
if count == 0:
await self.__ws.send_bytes(self.__s.loginAp())
await self.__ws.send_bytes(self.__s.joinServiceBc())
count += 1
for m in ms:
await self.__dm_queue.put(m)
async def start(self):
if self.__u == 'huajiao.com':
await self.init_ws_huajiao()
elif self.__u == 'acfun.cn':
rid = re.search(r'\d+', self.__url).group(0)
self.__s = self.__site(rid)
await self.init_ws_acfun()
await asyncio.gather(
self.ping_acfun(),
self.fetch_danmaku_acfun(),
self.keepalive_acfun(),
self.heartbeat_acfun(),
)
elif self.__u == '173.com':
rid = self.__url.split('/')[-1]
self.__s = self.__site(rid)
await self.init_ws_173()
await asyncio.gather(
self.fetch_danmaku_173(),
self.tcphelloreq_173(),
self.roomhelloreq_173(),
)
elif self.__u == 'yy.com':
rid = self.__url.split('/')[-1]
self.__s = self.__site(int(rid))
await self.init_ws_yy()
await asyncio.gather(
self.fetch_danmaku_yy(),
self.heartbeat_yy()
)
else:
await self.init_ws()
await asyncio.gather(
self.heartbeats(),
self.fetch_danmaku(),
)
async def stop(self):
self.__stop = True
await self.__hs.close()
================================================
FILE: danmu/danmaku/acfun.proto
================================================
syntax = "proto2";
package AcFunPack;
message RegisterRequest {
optional AppInfo appInfo = 1;
optional DeviceInfo deviceInfo = 2;
optional EnvInfo envInfo = 3;
optional PresenceStatus presenceStatus = 4;
optional ActiveStatus appActiveStatus = 5;
optional bytes appCustomStatus = 6;
optional PushServiceToken pushServiceToken = 7;
optional int64 instanceId = 8;
repeated PushServiceToken pushServiceTokenList = 9;
optional int32 keepaliveIntervalSec = 10;
optional ZtCommonInfo ztCommonInfo = 11;
enum PresenceStatus {
kPresenceOffline = 0;
kPresenceOnline = 1;
}
enum ActiveStatus {
kInvalid = 0;
kAppInForeground = 1;
kAppInBackground = 2;
}
}
message RegisterResponse {
optional AccessPointsConfig accessPointsConfig = 1;
optional bytes sessKey = 2;
optional int64 instanceId = 3;
optional SdkOption sdkOption = 4;
optional AccessPointsConfig accessPointsConfigIpv6 = 5;
}
message AccessPointsConfig {
repeated AccessPoint optimalAps = 1;
repeated AccessPoint backupAps = 2;
repeated uint32 availablePorts = 3;
optional AccessPoint forceLastConnectedAp = 4;
}
message AccessPoint {
optional AddressType addressType = 1;
optional uint32 port = 2;
optional fixed32 ipV4 = 3;
optional bytes ipV6 = 4;
optional string domain = 5;
enum AddressType {
kIPV4 = 0;
kIPV6 = 1;
kDomain = 2;
}
}
message SdkOption {
optional int32 reportIntervalSeconds = 1;
optional string reportSecurity = 2;
optional int32 lz4CompressionThresholdBytes = 3;
repeated string netCheckServers = 4;
}
message ZtLiveCsEnterRoom {
optional bool isAuthor = 1;
optional uint32 reconnectCount = 2;
optional uint32 lastErrorCode = 3;
optional string enterRoomAttach = 4;
optional string clientLiveSdkVersion = 5;
}
message ZtLiveCsHeartbeat {
optional uint64 clientTimestampMs = 1;
optional bool sequence = 2;
}
message CsCmd {
optional string cmdType = 1;
optional bytes payload = 2;
optional string ticket = 3;
optional string liveId = 4;
}
message AppInfo {
optional string appName = 1;
optional string appVersion = 2;
optional string appChannel = 3;
optional string sdkVersion = 4;
map < string,
string > extensionInfo = 5;
}
message DeviceInfo {
optional PlatformType platformType = 1;
optional string osVersion = 2;
optional string deviceModel = 3;
optional bytes imeiMd5 = 4;
optional string deviceId = 5;
optional string softDid = 6;
optional string kwaiDid = 7;
optional string manufacturer = 8;
optional string deviceName = 9;
enum PlatformType {
kInvalid = 0;
kAndroid = 1;
kiOS = 2;
kWindows = 3;
WECHAT_ANDROID = 4;
WECHAT_IOS = 5;
H5 = 6;
H5_ANDROID = 7;
H5_IOS = 8;
H5_WINDOWS = 9;
H5_MAC = 10;
kPlatformNum = 11;
}
}
message EnvInfo {
optional NetworkType networkType = 1;
optional bytes apnName = 2;
enum NetworkType {
kInvalid = 0;
kWIFI = 1;
kCellular = 2;
}
}
message PushServiceToken {
optional PushType pushType = 1;
optional bytes token = 2;
optional bool isPassThrough = 3;
enum PushType {
kPushTypeInvalid = 0;
kPushTypeAPNS = 1;
kPushTypeXmPush = 2;
kPushTypeJgPush = 3;
kPushTypeGtPush = 4;
kPushTypeOpPush = 5;
kPushTypeVvPush = 6;
kPushTypeHwPush = 7;
kPushTypeFcm = 8;
}
}
message ZtCommonInfo {
optional string kpn = 1;
optional string kpf = 2;
optional int64 uid = 4;
optional string did = 5;
}
message PingResponse {
optional sfixed32 serverTimestamp = 1;
optional fixed32 clientIp = 2;
optional fixed32 redirectIp = 3;
optional uint32 redirectPort = 4;
}
message PingRequest {
optional PingType pingType = 1;
optional uint32 pingRound = 2;
enum PingType {
kInvalid = 0;
kPriorRegister = 1;
kPostRegister = 2;
}
}
message UpstreamPayload {
optional string command = 1;
optional int64 seqId = 2;
optional uint32 retryCount = 3;
optional bytes payloadData = 4;
optional UserInstance userInstance = 5;
optional int32 errorCode = 6;
optional SettingInfo settingInfo = 7;
optional RequsetBasicInfo requestBasicInfo = 8;
optional string subBiz = 9;
optional FrontendInfo frontendInfo = 10;
optional string kpn = 11;
optional bool anonymouseUser = 12;
}
message DownstreamPayload {
optional string command = 1;
optional int64 seqId = 2;
optional int32 errorCode = 3;
optional bytes payloadData = 4;
optional string errorMsg = 5;
optional bytes errorData = 6;
optional string subBiz = 7;
}
message UserInstance {
optional User user = 1;
optional int64 instanceId = 2;
}
message User {
optional int32 appId = 1;
optional int64 uid = 2;
}
message SettingInfo {
optional string locale = 1;
optional sint32 timezone = 2;
}
message RequsetBasicInfo {
optional DeviceInfo.PlatformType clientType = 1;
optional string deviceId = 2;
optional string clientIp = 3;
optional string appVersion = 4;
optional string channel = 5;
optional AppInfo appInfo = 6;
optional DeviceInfo deviceInfo = 7;
optional EnvInfo envInfo = 8;
optional int32 clientPort = 9;
optional string location = 10;
optional string kpf = 11;
}
message FrontendInfo {
optional string ip = 1;
optional int32 port = 2;
}
message PacketHeader {
optional int32 appId = 1;
optional int64 uid = 2;
optional int64 instanceId = 3;
optional uint32 flags = 4;
optional EncodingType encodingType = 6;
optional uint32 decodedPayloadLen = 7;
optional EncryptionMode encryptionMode = 8;
optional TokenInfo tokenInfo = 9;
optional int64 seqId = 10;
repeated Feature features = 11;
optional string kpn = 12;
enum Flags {
option allow_alias = true;
kDirUpstream = 0;
kDirDownstream = 1;
kDirMask = 1;
}
enum EncodingType {
kEncodingNone = 0;
kEncodingLz4 = 1;
}
enum EncryptionMode {
kEncryptionNone = 0;
kEncryptionServiceToken = 1;
kEncryptionSessionKey = 2;
}
enum Feature {
kReserve = 0;
kCompressLz4 = 1;
}
}
message TokenInfo {
optional TokenType tokenType = 1;
optional bytes token = 2;
enum TokenType {
kInvalid = 0;
kServiceToken = 1;
}
}
message KeepAliveRequest {
optional RegisterRequest.PresenceStatus presenceStatus = 1;
optional RegisterRequest.ActiveStatus appActiveStatus = 2;
optional PushServiceToken pushServiceToken = 3;
repeated PushServiceToken pushServiceTokenList = 4;
repeated int32 keepaliveIntervalSec = 5;
}
message ZtLiveScMessage {
optional string messageType = 1;
optional int32 compressionType = 2;
optional bytes payload = 3;
optional string liveId = 4;
optional string ticket = 5;
optional uint64 serverTimestampMs = 6;
}
message ZtLiveScNotifySignal {
repeated ZtLiveNotifySignalItem item = 1;
message ZtLiveNotifySignalItem {
optional string signalType = 1;
repeated bytes payload = 2;
}
}
message ZtLiveScActionSignal {
repeated ZtLiveActionSignalItem item = 1;
message ZtLiveActionSignalItem {
optional string signalType = 1;
repeated bytes payload = 2;
}
}
message ZtLiveScStateSignal {
repeated ZtLiveStateSignalItem item = 1;
message ZtLiveStateSignalItem {
optional string signalType = 1;
repeated bytes payload = 2;
}
}
message ZtLiveScStatusChanged {
optional int32 type = 1;
optional uint64 maxRandomDelayMs = 2;
optional BannedInfo bannedInfo = 3;
message BannedInfo {
optional string banReason = 1;
}
}
message CommonActionSignalComment {
optional string content = 1;
optional uint64 sendTimeMs = 2;
optional ZtLiveUserInfo userInfo = 3;
}
message CommonActionSignalLike {
optional ZtLiveUserInfo userInfo = 1;
optional uint64 sendTimeMs = 2;
}
message CommonActionSignalGift {
optional ZtLiveUserInfo userInfo = 1;
optional uint64 sendTimeMs = 2;
optional uint64 giftId = 3;
optional uint32 batchSize = 4;
optional uint32 comboCount = 5;
optional uint64 rank = 6;
optional string comboKey = 7;
optional uint64 slotDisplayDurationMs = 8;
optional uint64 expireDurationMs = 9;
}
message CommonStateSignalDisplayInfo {
optional string watchingCount = 1;
optional string likeCount = 2;
optional uint32 likeDelta = 3;
}
message CommonStateSignalTopUsers {
repeated TopUser topUser = 1;
message TopUser {
optional ZtLiveUserInfo userInfo = 1;
optional string customWatchingListData = 2;
optional string displaySendAmount = 3;
optional bool anonymousUser = 4;
}
}
message CommonActionSignalUserEnterRoom {
optional ZtLiveUserInfo userInfo = 1;
optional uint64 sendTimeMs = 2;
}
message CommonActionSignalUserFollowAuthor {
optional ZtLiveUserInfo userInfo = 1;
optional uint64 sendTimeMs = 2;
}
message CommonActionSignalRichText {
optional UserInfoSegment userInfo = 1;
optional PlainSegment plain = 2;
optional ImageSegment image = 3;
}
message UserInfoSegment {
optional ZtLiveUserInfo user = 1;
optional string color = 2;
}
message PlainSegment {
optional string text = 1;
optional string color = 2;
}
message ImageSegment {
optional ImageCdnNode cdnNode = 1;
optional string alternativeText = 2;
optional string alternativeColor = 3;
}
message CommonNotifySignalKickedOut {
optional string reason = 1;
}
message CommonNotifySignalViolationAlert {
optional string violationContent = 1;
}
message CommonStateSignalCurrentRedpackList {
}
message CommonStateSignalRecentComment {
optional CommonActionSignalComment comment = 1;
}
message CommonStateSignalChatReady {
optional string chatId = 1;
optional ZtLiveUserInfo guestUserInfo = 2;
optional int32 mediaType = 3;
}
message CommonStateSignalChatEnd {
optional string chatId = 1;
optional int32 endType = 2;
}
message AcfunActionSignalThrowBanana {
optional UserInfo visitor = 1;
optional int32 count = 2;
optional uint64 sendTimeMs = 3;
}
message AcfunStateSignalDisplayInfo {
optional string bananaCount = 1;
}
message AcfunActionSignalJoinClub {
optional UserInfo fansInfo = 1;
optional UserInfo uperInfo = 2;
optional uint64 joinTimeMs = 3;
}
message ZtLiveUserInfo {
optional uint64 userId = 1;
optional string nickname = 2;
optional ImageCdnNode avatar = 3;
}
message ImageCdnNode {
optional string cdn = 1;
optional string url = 2;
optional string urlPattern = 3;
}
message UserInfo {
optional uint64 userId = 1;
optional string name = 2;
}
================================================
FILE: danmu/danmaku/acfun.py
================================================
# AcFun直播现在属于快手旗下了,其JS源码中也可以看到很多名为'kuaishou'的变量,所以和快手直播弹幕的获取方法有点类似,都使用了protobuf压缩数据。
# 在mplayer-live.xxx.js中可以看到所有websocket过程。奇怪的是,其序列化和反序列化时代码并不统一,可能有啥"特殊意义"我没看懂。
# ws请求过程:Register--EnterRoom--Heartbeat,其中Register后返回的第一条数据里有sessionkey和instanceid。
# 在Chrome调试时发现客户端一直会向服务器发送:每1秒一次ping;每10秒一次keepalive,模拟实现时,不发送也正常。
import base64
import gzip
import struct
import time
import requests
from Crypto import Random
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from . import acfun_pb2 as pb
class AcFun:
ws_url = 'wss://link.xiatou.com/'
def __init__(self, rid):
self.encryptionmode = 0 # 加密模式,0不加密,1时key=ssecurity,2时key=sessionkey
self.seqId = 0 # 客户端发送请求时都会加1
self.payload_len = 0
self.sessionkey = b''
self.instanceid = 0 # 初始值0
self.gift = { # 有些直播间的礼物编号不一样,实际打开直播间页面会有一次XHR请求
1: '香蕉',
17: '快乐水',
9: '告白',
35: '氧气瓶',
4: '牛啤',
33: '情书',
8: '星蕉雨',
31: '金坷垃',
34: '狗粮',
2: '吃瓜',
12: '打Call',
32: '变身腰带',
15: 'AC机娘',
16: '猴岛',
10: '666',
11: '菜鸡',
30: '鸽鸽',
13: '立FLAG',
6: '魔法棒',
7: '好人卡',
14: '窜天猴',
21: '生日快乐',
5: '手柄',
29: '大触'
}
# 下面获取一些加入房间所需注册参数
headers = {
'content-type': 'application/x-www-form-urlencoded',
'cookie': '_did=H5_',
'referer': 'https://m.acfun.cn/'
}
url = 'https://id.app.acfun.cn/rest/app/visitor/login'
form_data = 'sid=acfun.api.visitor'
with requests.Session() as s:
res = s.post(url, data=form_data, headers=headers).json()
status, *d = res.values()
if status == 0:
# 未登陆访客获取的3个参数
acsecurity, self.uid, visitor_st = d
self.ssecurity = base64.b64decode(acsecurity)
self.token = visitor_st.encode()
else:
raise Exception('token 获取错误')
url = 'https://api.kuaishouzt.com/rest/zt/live/web/startPlay'
params = {
'subBiz': 'mainApp',
'kpn': 'ACFUN_APP',
'kpf': 'OUTSIDE_IOS_H5',
'userId': self.uid,
'did': 'H5_',
'acfun.api.visitor_st': visitor_st
}
data = 'authorId={}&pullStreamType=SINGLE_HLS'.format(rid)
res = s.post(url, params=params, data=data, headers=headers).json()
if res['result'] == 1:
data = res['data']
# 获取直播间的几个参数
self.availabletickets, *_ = data['availableTickets']
self.enterroomattach = data['enterRoomAttach']
self.liveid = data['liveId']
else:
raise Exception('直播已关闭')
@staticmethod
# aes加密,iv随机;key值取决去encryptionmode
def aes_encode(t, key):
t = pad(t, AES.block_size)
iv = Random.new().read(AES.block_size)
mode = AES.MODE_CBC
c = AES.new(key, mode, iv)
res = c.encrypt(t)
return iv + res # 把iv加到头部
@staticmethod
# 这里传入的待解密数据不用补全,一直都是16的整数倍。key值取决去encryptionmode。pkcs7模式去掉最后的填充padding。
def aes_decode(t, key):
iv = t[:16]
n = t[16:]
# n = pad(n, AES.block_size)
mode = AES.MODE_CBC
c = AES.new(key, mode, iv)
res = c.decrypt(n)
length = len(res)
padding = res[length - 1]
res = res[0:length - padding]
return res
def register(self):
# 注册
p = pb.RegisterRequest()
p.appActiveStatus = 1
p.appInfo.appName = 'link-sdk'
p.appInfo.sdkVersion = '1.2.1'
p.deviceInfo.deviceModel = 'h5'
p.deviceInfo.platformType = 6
p.instanceId = 0
p.presenceStatus = 1
p.ztCommonInfo.kpn = 'ACFUN_APP'
p.ztCommonInfo.kpf = 'OUTSIDE_IOS_H5'
p.ztCommonInfo.uid = self.uid
register_data = p.SerializeToString()
self.encryptionmode = 1
self.seqId = 1
return register_data
def keepalive(self):
# keepalive
p = pb.KeepAliveRequest()
p.appActiveStatus = 1
p.presenceStatus = 1
keepalive_data = p.SerializeToString()
self.encryptionmode = 2
self.seqId += 1
return keepalive_data
def ping(self):
# ping
p = pb.PingRequest()
# p.pingType = 2
ping_data = p.SerializeToString()
self.seqId += 1
self.encryptionmode = 2
return ping_data
def ztlivecsenterroom(self):
return self.cscmd('ZtLiveCsEnterRoom')
def ztlivecsheartbeat(self):
# 心跳数据
return self.cscmd('ZtLiveCsHeartbeat')
def cscmd(self, payload_type):
p = getattr(pb, payload_type)()
if payload_type == 'ZtLiveCsEnterRoom':
p.isAuthor = False
p.reconnectCount = 0
p.enterRoomAttach = self.enterroomattach
p.clientLiveSdkVersion = 'kwai-acfun-live-link'
elif payload_type == 'ZtLiveCsHeartbeat':
p.sequence = self.seqId
p.clientTimestampMs = int(time.time() * 1000)
payload = p.SerializeToString()
p = pb.CsCmd()
p.cmdType = payload_type
p.ticket = self.availabletickets
p.payload = payload
p.liveId = self.liveid
cscmd_data = p.SerializeToString()
self.seqId += 1
self.encryptionmode = 2
return cscmd_data
def encode_payload(self, payload_type):
# 要发送的原始数据都是先序列化再拼接
c = {
'keepalive': 'Basic.KeepAlive',
'register': 'Basic.Register',
'ping': 'Basic.Ping',
'ztlivecsenterroom': 'Global.ZtLiveInteractive.CsCmd',
'ztlivecsheartbeat': 'Global.ZtLiveInteractive.CsCmd'
}
p = pb.UpstreamPayload()
p.command = c[payload_type]
p.retryCount = 1
p.payloadData = getattr(self, payload_type)()
p.seqId = self.seqId
p.subBiz = 'mainApp'
e = p.SerializeToString()
key = self.ssecurity if self.encryptionmode == 1 else self.sessionkey
payload_data = AcFun.aes_encode(e, key) if self.encryptionmode != 0 else e
self.payload_len = len(e)
return payload_data
def encode_head(self):
# 头部数据,里面有原始数据长度
p = pb.PacketHeader()
p.appId = 13
p.decodedPayloadLen = self.payload_len
p.encryptionMode = self.encryptionmode
p.instanceId = self.instanceid
p.kpn = 'ACFUN_APP'
p.seqId = self.seqId
if self.encryptionmode == 1:
p.tokenInfo.tokenType = 1
p.tokenInfo.token = self.token
p.uid = self.uid
head = p.SerializeToString()
return head
def encode_packet(self, payload_type):
# 数据组成:固定数据 + 头部长度 + 原始数据长度 + 头部 + 原始数据
body = self.encode_payload(payload_type)
head = self.encode_head()
data = struct.pack('!HHII', 43981, 1, len(head), len(body))
data += head + body
return data
def decode_packet(self, data):
# 数据解包
msgs = [{'name': '', 'content': '', 'msg_type': 'other'}]
head_length, body_length = struct.unpack('!II', data[4:12])
if 12 + head_length + body_length != len(data):
raise Exception('downstream message size is not correct')
# 头部解包
e = data[12:head_length + 12]
c = pb.PacketHeader()
c.ParseFromString(e)
encryptionmode = c.encryptionMode # 根据加密模式确定解密的key
# body解包
h = data[head_length + 12:]
key = self.ssecurity if encryptionmode == 1 else self.sessionkey
n = AcFun.aes_decode(h, key) if encryptionmode != 0 else h
u = pb.DownstreamPayload()
u.ParseFromString(n)
# header = c
# body = u
payload = u.payloadData
command = u.command # 根据command确定返回数据类型
# print(command)
if command == 'Basic.Register':
# websocket第一次返回数据,确定sessKey和instanceId
p = pb.RegisterResponse()
p.ParseFromString(payload)
self.sessionkey = p.sessKey
self.instanceid = p.instanceId
elif command == 'Push.ZtLiveInteractive.Message': # 'Push.ZtLiveInteractive.Message'
a = pb.ZtLiveScMessage()
a.ParseFromString(payload)
o = a.messageType
s = a.payload
if a.compressionType == 2:
s = gzip.decompress(s)
if o == 'ZtLiveScTicketInvalid':
raise Exception('ZtLiveScTicketInvalid')
# o可为'ZtLiveScNotifySignal' 'ZtLiveScActionSignal' 等,弹幕礼物入场点赞等在ZtLiveScActionSignal中
elif o == 'ZtLiveScActionSignal':
p = getattr(pb, o)()
p.ParseFromString(s)
for i in p.item:
p = getattr(pb, i.signalType)()
# signalType:
# CommonActionSignalComment 评论
# CommonActionSignalGift 礼物
# CommonActionSignalUserEnterRoom 入场
# CommonActionSignalLike 点赞
# CommonActionSignalUserFollowAuthor 关注主播
# 等等等
u = {
'CommonActionSignalUserEnterRoom': '进入直播间',
'CommonActionSignalUserFollowAuthor': '关注了主播',
'CommonActionSignalComment': '',
'CommonActionSignalLike': '点赞了❤',
'CommonActionSignalGift': ''
}
for a_payload in i.payload: # i.payload 是 repeated 类型
p.ParseFromString(a_payload)
if i.signalType in u.keys():
user = p.userInfo.nickname
content = u[i.signalType]
if i.signalType == 'CommonActionSignalComment':
content = p.content
elif i.signalType == 'CommonActionSignalGift':
content = '送出 ' + self.gift.get(p.giftId, '')
msg = {'name': user, 'content': content, 'msg_type': 'danmaku'}
msgs.append(msg.copy())
return msgs
================================================
FILE: danmu/danmaku/acfun_pb2.py
================================================
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: acfun.proto
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor.FileDescriptor(
name='acfun.proto',
package='AcFunPack',
syntax='proto2',
serialized_options=None,
create_key=_descriptor._internal_create_key,
serialized_pb=b'\n\x0b\x61\x63\x66un.proto\x12\tAcFunPack\"\xfe\x04\n\x0fRegisterRequest\x12#\n\x07\x61ppInfo\x18\x01 \x01(\x0b\x32\x12.AcFunPack.AppInfo\x12)\n\ndeviceInfo\x18\x02 \x01(\x0b\x32\x15.AcFunPack.DeviceInfo\x12#\n\x07\x65nvInfo\x18\x03 \x01(\x0b\x32\x12.AcFunPack.EnvInfo\x12\x41\n\x0epresenceStatus\x18\x04 \x01(\x0e\x32).AcFunPack.RegisterRequest.PresenceStatus\x12@\n\x0f\x61ppActiveStatus\x18\x05 \x01(\x0e\x32\'.AcFunPack.RegisterRequest.ActiveStatus\x12\x17\n\x0f\x61ppCustomStatus\x18\x06 \x01(\x0c\x12\x35\n\x10pushServiceToken\x18\x07 \x01(\x0b\x32\x1b.AcFunPack.PushServiceToken\x12\x12\n\ninstanceId\x18\x08 \x01(\x03\x12\x39\n\x14pushServiceTokenList\x18\t \x03(\x0b\x32\x1b.AcFunPack.PushServiceToken\x12\x1c\n\x14keepaliveIntervalSec\x18\n \x01(\x05\x12-\n\x0cztCommonInfo\x18\x0b \x01(\x0b\x32\x17.AcFunPack.ZtCommonInfo\";\n\x0ePresenceStatus\x12\x14\n\x10kPresenceOffline\x10\x00\x12\x13\n\x0fkPresenceOnline\x10\x01\"H\n\x0c\x41\x63tiveStatus\x12\x0c\n\x08kInvalid\x10\x00\x12\x14\n\x10kAppInForeground\x10\x01\x12\x14\n\x10kAppInBackground\x10\x02\"\xda\x01\n\x10RegisterResponse\x12\x39\n\x12\x61\x63\x63\x65ssPointsConfig\x18\x01 \x01(\x0b\x32\x1d.AcFunPack.AccessPointsConfig\x12\x0f\n\x07sessKey\x18\x02 \x01(\x0c\x12\x12\n\ninstanceId\x18\x03 \x01(\x03\x12\'\n\tsdkOption\x18\x04 \x01(\x0b\x32\x14.AcFunPack.SdkOption\x12=\n\x16\x61\x63\x63\x65ssPointsConfigIpv6\x18\x05 \x01(\x0b\x32\x1d.AcFunPack.AccessPointsConfig\"\xb9\x01\n\x12\x41\x63\x63\x65ssPointsConfig\x12*\n\noptimalAps\x18\x01 \x03(\x0b\x32\x16.AcFunPack.AccessPoint\x12)\n\tbackupAps\x18\x02 \x03(\x0b\x32\x16.AcFunPack.AccessPoint\x12\x16\n\x0e\x61vailablePorts\x18\x03 \x03(\r\x12\x34\n\x14\x66orceLastConnectedAp\x18\x04 \x01(\x0b\x32\x16.AcFunPack.AccessPoint\"\xb2\x01\n\x0b\x41\x63\x63\x65ssPoint\x12\x37\n\x0b\x61\x64\x64ressType\x18\x01 \x01(\x0e\x32\".AcFunPack.AccessPoint.AddressType\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x0c\n\x04ipV4\x18\x03 \x01(\x07\x12\x0c\n\x04ipV6\x18\x04 \x01(\x0c\x12\x0e\n\x06\x64omain\x18\x05 \x01(\t\"0\n\x0b\x41\x64\x64ressType\x12\t\n\x05kIPV4\x10\x00\x12\t\n\x05kIPV6\x10\x01\x12\x0b\n\x07kDomain\x10\x02\"\x81\x01\n\tSdkOption\x12\x1d\n\x15reportIntervalSeconds\x18\x01 \x01(\x05\x12\x16\n\x0ereportSecurity\x18\x02 \x01(\t\x12$\n\x1clz4CompressionThresholdBytes\x18\x03 \x01(\x05\x12\x17\n\x0fnetCheckServers\x18\x04 \x03(\t\"\x8b\x01\n\x11ZtLiveCsEnterRoom\x12\x10\n\x08isAuthor\x18\x01 \x01(\x08\x12\x16\n\x0ereconnectCount\x18\x02 \x01(\r\x12\x15\n\rlastErrorCode\x18\x03 \x01(\r\x12\x17\n\x0f\x65nterRoomAttach\x18\x04 \x01(\t\x12\x1c\n\x14\x63lientLiveSdkVersion\x18\x05 \x01(\t\"@\n\x11ZtLiveCsHeartbeat\x12\x19\n\x11\x63lientTimestampMs\x18\x01 \x01(\x04\x12\x10\n\x08sequence\x18\x02 \x01(\x08\"I\n\x05\x43sCmd\x12\x0f\n\x07\x63mdType\x18\x01 \x01(\t\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x0e\n\x06ticket\x18\x03 \x01(\t\x12\x0e\n\x06liveId\x18\x04 \x01(\t\"\xca\x01\n\x07\x41ppInfo\x12\x0f\n\x07\x61ppName\x18\x01 \x01(\t\x12\x12\n\nappVersion\x18\x02 \x01(\t\x12\x12\n\nappChannel\x18\x03 \x01(\t\x12\x12\n\nsdkVersion\x18\x04 \x01(\t\x12<\n\rextensionInfo\x18\x05 \x03(\x0b\x32%.AcFunPack.AppInfo.ExtensionInfoEntry\x1a\x34\n\x12\x45xtensionInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x98\x03\n\nDeviceInfo\x12\x38\n\x0cplatformType\x18\x01 \x01(\x0e\x32\".AcFunPack.DeviceInfo.PlatformType\x12\x11\n\tosVersion\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65viceModel\x18\x03 \x01(\t\x12\x0f\n\x07imeiMd5\x18\x04 \x01(\x0c\x12\x10\n\x08\x64\x65viceId\x18\x05 \x01(\t\x12\x0f\n\x07softDid\x18\x06 \x01(\t\x12\x0f\n\x07kwaiDid\x18\x07 \x01(\t\x12\x14\n\x0cmanufacturer\x18\x08 \x01(\t\x12\x12\n\ndeviceName\x18\t \x01(\t\"\xb8\x01\n\x0cPlatformType\x12\x0c\n\x08kInvalid\x10\x00\x12\x0c\n\x08kAndroid\x10\x01\x12\x08\n\x04kiOS\x10\x02\x12\x0c\n\x08kWindows\x10\x03\x12\x12\n\x0eWECHAT_ANDROID\x10\x04\x12\x0e\n\nWECHAT_IOS\x10\x05\x12\x06\n\x02H5\x10\x06\x12\x0e\n\nH5_ANDROID\x10\x07\x12\n\n\x06H5_IOS\x10\x08\x12\x0e\n\nH5_WINDOWS\x10\t\x12\n\n\x06H5_MAC\x10\n\x12\x10\n\x0ckPlatformNum\x10\x0b\"\x86\x01\n\x07\x45nvInfo\x12\x33\n\x0bnetworkType\x18\x01 \x01(\x0e\x32\x1e.AcFunPack.EnvInfo.NetworkType\x12\x0f\n\x07\x61pnName\x18\x02 \x01(\x0c\"5\n\x0bNetworkType\x12\x0c\n\x08kInvalid\x10\x00\x12\t\n\x05kWIFI\x10\x01\x12\r\n\tkCellular\x10\x02\"\xb6\x02\n\x10PushServiceToken\x12\x36\n\x08pushType\x18\x01 \x01(\x0e\x32$.AcFunPack.PushServiceToken.PushType\x12\r\n\x05token\x18\x02 \x01(\x0c\x12\x15\n\risPassThrough\x18\x03 \x01(\x08\"\xc3\x01\n\x08PushType\x12\x14\n\x10kPushTypeInvalid\x10\x00\x12\x11\n\rkPushTypeAPNS\x10\x01\x12\x13\n\x0fkPushTypeXmPush\x10\x02\x12\x13\n\x0fkPushTypeJgPush\x10\x03\x12\x13\n\x0fkPushTypeGtPush\x10\x04\x12\x13\n\x0fkPushTypeOpPush\x10\x05\x12\x13\n\x0fkPushTypeVvPush\x10\x06\x12\x13\n\x0fkPushTypeHwPush\x10\x07\x12\x10\n\x0ckPushTypeFcm\x10\x08\"B\n\x0cZtCommonInfo\x12\x0b\n\x03kpn\x18\x01 \x01(\t\x12\x0b\n\x03kpf\x18\x02 \x01(\t\x12\x0b\n\x03uid\x18\x04 \x01(\x03\x12\x0b\n\x03\x64id\x18\x05 \x01(\t\"c\n\x0cPingResponse\x12\x17\n\x0fserverTimestamp\x18\x01 \x01(\x0f\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\x07\x12\x12\n\nredirectIp\x18\x03 \x01(\x07\x12\x14\n\x0credirectPort\x18\x04 \x01(\r\"\x94\x01\n\x0bPingRequest\x12\x31\n\x08pingType\x18\x01 \x01(\x0e\x32\x1f.AcFunPack.PingRequest.PingType\x12\x11\n\tpingRound\x18\x02 \x01(\r\"?\n\x08PingType\x12\x0c\n\x08kInvalid\x10\x00\x12\x12\n\x0ekPriorRegister\x10\x01\x12\x11\n\rkPostRegister\x10\x02\"\xe4\x02\n\x0fUpstreamPayload\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\x12\r\n\x05seqId\x18\x02 \x01(\x03\x12\x12\n\nretryCount\x18\x03 \x01(\r\x12\x13\n\x0bpayloadData\x18\x04 \x01(\x0c\x12-\n\x0cuserInstance\x18\x05 \x01(\x0b\x32\x17.AcFunPack.UserInstance\x12\x11\n\terrorCode\x18\x06 \x01(\x05\x12+\n\x0bsettingInfo\x18\x07 \x01(\x0b\x32\x16.AcFunPack.SettingInfo\x12\x35\n\x10requestBasicInfo\x18\x08 \x01(\x0b\x32\x1b.AcFunPack.RequsetBasicInfo\x12\x0e\n\x06subBiz\x18\t \x01(\t\x12-\n\x0c\x66rontendInfo\x18\n \x01(\x0b\x32\x17.AcFunPack.FrontendInfo\x12\x0b\n\x03kpn\x18\x0b \x01(\t\x12\x16\n\x0e\x61nonymouseUser\x18\x0c \x01(\x08\"\x90\x01\n\x11\x44ownstreamPayload\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\x12\r\n\x05seqId\x18\x02 \x01(\x03\x12\x11\n\terrorCode\x18\x03 \x01(\x05\x12\x13\n\x0bpayloadData\x18\x04 \x01(\x0c\x12\x10\n\x08\x65rrorMsg\x18\x05 \x01(\t\x12\x11\n\terrorData\x18\x06 \x01(\x0c\x12\x0e\n\x06subBiz\x18\x07 \x01(\t\"A\n\x0cUserInstance\x12\x1d\n\x04user\x18\x01 \x01(\x0b\x32\x0f.AcFunPack.User\x12\x12\n\ninstanceId\x18\x02 \x01(\x03\"\"\n\x04User\x12\r\n\x05\x61ppId\x18\x01 \x01(\x05\x12\x0b\n\x03uid\x18\x02 \x01(\x03\"/\n\x0bSettingInfo\x12\x0e\n\x06locale\x18\x01 \x01(\t\x12\x10\n\x08timezone\x18\x02 \x01(\x11\"\xbb\x02\n\x10RequsetBasicInfo\x12\x36\n\nclientType\x18\x01 \x01(\x0e\x32\".AcFunPack.DeviceInfo.PlatformType\x12\x10\n\x08\x64\x65viceId\x18\x02 \x01(\t\x12\x10\n\x08\x63lientIp\x18\x03 \x01(\t\x12\x12\n\nappVersion\x18\x04 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x05 \x01(\t\x12#\n\x07\x61ppInfo\x18\x06 \x01(\x0b\x32\x12.AcFunPack.AppInfo\x12)\n\ndeviceInfo\x18\x07 \x01(\x0b\x32\x15.AcFunPack.DeviceInfo\x12#\n\x07\x65nvInfo\x18\x08 \x01(\x0b\x32\x12.AcFunPack.EnvInfo\x12\x12\n\nclientPort\x18\t \x01(\x05\x12\x10\n\x08location\x18\n \x01(\t\x12\x0b\n\x03kpf\x18\x0b \x01(\t\"(\n\x0c\x46rontendInfo\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\"\xdc\x04\n\x0cPacketHeader\x12\r\n\x05\x61ppId\x18\x01 \x01(\x05\x12\x0b\n\x03uid\x18\x02 \x01(\x03\x12\x12\n\ninstanceId\x18\x03 \x01(\x03\x12\r\n\x05\x66lags\x18\x04 \x01(\r\x12:\n\x0c\x65ncodingType\x18\x06 \x01(\x0e\x32$.AcFunPack.PacketHeader.EncodingType\x12\x19\n\x11\x64\x65\x63odedPayloadLen\x18\x07 \x01(\r\x12>\n\x0e\x65ncryptionMode\x18\x08 \x01(\x0e\x32&.AcFunPack.PacketHeader.EncryptionMode\x12\'\n\ttokenInfo\x18\t \x01(\x0b\x32\x14.AcFunPack.TokenInfo\x12\r\n\x05seqId\x18\n \x01(\x03\x12\x31\n\x08\x66\x65\x61tures\x18\x0b \x03(\x0e\x32\x1f.AcFunPack.PacketHeader.Feature\x12\x0b\n\x03kpn\x18\x0c \x01(\t\"?\n\x05\x46lags\x12\x10\n\x0ckDirUpstream\x10\x00\x12\x12\n\x0ekDirDownstream\x10\x01\x12\x0c\n\x08kDirMask\x10\x01\x1a\x02\x10\x01\"3\n\x0c\x45ncodingType\x12\x11\n\rkEncodingNone\x10\x00\x12\x10\n\x0ckEncodingLz4\x10\x01\"]\n\x0e\x45ncryptionMode\x12\x13\n\x0fkEncryptionNone\x10\x00\x12\x1b\n\x17kEncryptionServiceToken\x10\x01\x12\x19\n\x15kEncryptionSessionKey\x10\x02\")\n\x07\x46\x65\x61ture\x12\x0c\n\x08kReserve\x10\x00\x12\x10\n\x0ckCompressLz4\x10\x01\"{\n\tTokenInfo\x12\x31\n\ttokenType\x18\x01 \x01(\x0e\x32\x1e.AcFunPack.TokenInfo.TokenType\x12\r\n\x05token\x18\x02 \x01(\x0c\",\n\tTokenType\x12\x0c\n\x08kInvalid\x10\x00\x12\x11\n\rkServiceToken\x10\x01\"\xa7\x02\n\x10KeepAliveRequest\x12\x41\n\x0epresenceStatus\x18\x01 \x01(\x0e\x32).AcFunPack.RegisterRequest.PresenceStatus\x12@\n\x0f\x61ppActiveStatus\x18\x02 \x01(\x0e\x32\'.AcFunPack.RegisterRequest.ActiveStatus\x12\x35\n\x10pushServiceToken\x18\x03 \x01(\x0b\x32\x1b.AcFunPack.PushServiceToken\x12\x39\n\x14pushServiceTokenList\x18\x04 \x03(\x0b\x32\x1b.AcFunPack.PushServiceToken\x12\x1c\n\x14keepaliveIntervalSec\x18\x05 \x03(\x05\"\x8b\x01\n\x0fZtLiveScMessage\x12\x13\n\x0bmessageType\x18\x01 \x01(\t\x12\x17\n\x0f\x63ompressionType\x18\x02 \x01(\x05\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\x12\x0e\n\x06liveId\x18\x04 \x01(\t\x12\x0e\n\x06ticket\x18\x05 \x01(\t\x12\x19\n\x11serverTimestampMs\x18\x06 \x01(\x04\"\x9b\x01\n\x14ZtLiveScNotifySignal\x12\x44\n\x04item\x18\x01 \x03(\x0b\x32\x36.AcFunPack.ZtLiveScNotifySignal.ZtLiveNotifySignalItem\x1a=\n\x16ZtLiveNotifySignalItem\x12\x12\n\nsignalType\x18\x01 \x01(\t\x12\x0f\n\x07payload\x18\x02 \x03(\x0c\"\x9b\x01\n\x14ZtLiveScActionSignal\x12\x44\n\x04item\x18\x01 \x03(\x0b\x32\x36.AcFunPack.ZtLiveScActionSignal.ZtLiveActionSignalItem\x1a=\n\x16ZtLiveActionSignalItem\x12\x12\n\nsignalType\x18\x01 \x01(\t\x12\x0f\n\x07payload\x18\x02 \x03(\x0c\"\x97\x01\n\x13ZtLiveScStateSignal\x12\x42\n\x04item\x18\x01 \x03(\x0b\x32\x34.AcFunPack.ZtLiveScStateSignal.ZtLiveStateSignalItem\x1a<\n\x15ZtLiveStateSignalItem\x12\x12\n\nsignalType\x18\x01 \x01(\t\x12\x0f\n\x07payload\x18\x02 \x03(\x0c\"\xa1\x01\n\x15ZtLiveScStatusChanged\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x18\n\x10maxRandomDelayMs\x18\x02 \x01(\x04\x12?\n\nbannedInfo\x18\x03 \x01(\x0b\x32+.AcFunPack.ZtLiveScStatusChanged.BannedInfo\x1a\x1f\n\nBannedInfo\x12\x11\n\tbanReason\x18\x01 \x01(\t\"m\n\x19\x43ommonActionSignalComment\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\x12\x12\n\nsendTimeMs\x18\x02 \x01(\x04\x12+\n\x08userInfo\x18\x03 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\"Y\n\x16\x43ommonActionSignalLike\x12+\n\x08userInfo\x18\x01 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\x12\n\nsendTimeMs\x18\x02 \x01(\x04\"\xe9\x01\n\x16\x43ommonActionSignalGift\x12+\n\x08userInfo\x18\x01 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\x12\n\nsendTimeMs\x18\x02 \x01(\x04\x12\x0e\n\x06giftId\x18\x03 \x01(\x04\x12\x11\n\tbatchSize\x18\x04 \x01(\r\x12\x12\n\ncomboCount\x18\x05 \x01(\r\x12\x0c\n\x04rank\x18\x06 \x01(\x04\x12\x10\n\x08\x63omboKey\x18\x07 \x01(\t\x12\x1d\n\x15slotDisplayDurationMs\x18\x08 \x01(\x04\x12\x18\n\x10\x65xpireDurationMs\x18\t \x01(\x04\"[\n\x1c\x43ommonStateSignalDisplayInfo\x12\x15\n\rwatchingCount\x18\x01 \x01(\t\x12\x11\n\tlikeCount\x18\x02 \x01(\t\x12\x11\n\tlikeDelta\x18\x03 \x01(\r\"\xe5\x01\n\x19\x43ommonStateSignalTopUsers\x12=\n\x07topUser\x18\x01 \x03(\x0b\x32,.AcFunPack.CommonStateSignalTopUsers.TopUser\x1a\x88\x01\n\x07TopUser\x12+\n\x08userInfo\x18\x01 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\x1e\n\x16\x63ustomWatchingListData\x18\x02 \x01(\t\x12\x19\n\x11\x64isplaySendAmount\x18\x03 \x01(\t\x12\x15\n\ranonymousUser\x18\x04 \x01(\x08\"b\n\x1f\x43ommonActionSignalUserEnterRoom\x12+\n\x08userInfo\x18\x01 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\x12\n\nsendTimeMs\x18\x02 \x01(\x04\"e\n\"CommonActionSignalUserFollowAuthor\x12+\n\x08userInfo\x18\x01 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\x12\n\nsendTimeMs\x18\x02 \x01(\x04\"\x9a\x01\n\x1a\x43ommonActionSignalRichText\x12,\n\x08userInfo\x18\x01 \x01(\x0b\x32\x1a.AcFunPack.UserInfoSegment\x12&\n\x05plain\x18\x02 \x01(\x0b\x32\x17.AcFunPack.PlainSegment\x12&\n\x05image\x18\x03 \x01(\x0b\x32\x17.AcFunPack.ImageSegment\"I\n\x0fUserInfoSegment\x12\'\n\x04user\x18\x01 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\r\n\x05\x63olor\x18\x02 \x01(\t\"+\n\x0cPlainSegment\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\r\n\x05\x63olor\x18\x02 \x01(\t\"k\n\x0cImageSegment\x12(\n\x07\x63\x64nNode\x18\x01 \x01(\x0b\x32\x17.AcFunPack.ImageCdnNode\x12\x17\n\x0f\x61lternativeText\x18\x02 \x01(\t\x12\x18\n\x10\x61lternativeColor\x18\x03 \x01(\t\"-\n\x1b\x43ommonNotifySignalKickedOut\x12\x0e\n\x06reason\x18\x01 \x01(\t\"<\n CommonNotifySignalViolationAlert\x12\x18\n\x10violationContent\x18\x01 \x01(\t\"%\n#CommonStateSignalCurrentRedpackList\"W\n\x1e\x43ommonStateSignalRecentComment\x12\x35\n\x07\x63omment\x18\x01 \x01(\x0b\x32$.AcFunPack.CommonActionSignalComment\"q\n\x1a\x43ommonStateSignalChatReady\x12\x0e\n\x06\x63hatId\x18\x01 \x01(\t\x12\x30\n\rguestUserInfo\x18\x02 \x01(\x0b\x32\x19.AcFunPack.ZtLiveUserInfo\x12\x11\n\tmediaType\x18\x03 \x01(\x05\";\n\x18\x43ommonStateSignalChatEnd\x12\x0e\n\x06\x63hatId\x18\x01 \x01(\t\x12\x0f\n\x07\x65ndType\x18\x02 \x01(\x05\"g\n\x1c\x41\x63\x66unActionSignalThrowBanana\x12$\n\x07visitor\x18\x01 \x01(\x0b\x32\x13.AcFunPack.UserInfo\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\x12\x12\n\nsendTimeMs\x18\x03 \x01(\x04\"2\n\x1b\x41\x63\x66unStateSignalDisplayInfo\x12\x13\n\x0b\x62\x61nanaCount\x18\x01 \x01(\t\"}\n\x19\x41\x63\x66unActionSignalJoinClub\x12%\n\x08\x66\x61nsInfo\x18\x01 \x01(\x0b\x32\x13.AcFunPack.UserInfo\x12%\n\x08uperInfo\x18\x02 \x01(\x0b\x32\x13.AcFunPack.UserInfo\x12\x12\n\njoinTimeMs\x18\x03 \x01(\x04\"[\n\x0eZtLiveUserInfo\x12\x0e\n\x06userId\x18\x01 \x01(\x04\x12\x10\n\x08nickname\x18\x02 \x01(\t\x12\'\n\x06\x61vatar\x18\x03 \x01(\x0b\x32\x17.AcFunPack.ImageCdnNode\"<\n\x0cImageCdnNode\x12\x0b\n\x03\x63\x64n\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x12\n\nurlPattern\x18\x03 \x01(\t\"(\n\x08UserInfo\x12\x0e\n\x06userId\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t'
)
_REGISTERREQUEST_PRESENCESTATUS = _descriptor.EnumDescriptor(
name='PresenceStatus',
full_name='AcFunPack.RegisterRequest.PresenceStatus',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kPresenceOffline', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPresenceOnline', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=532,
serialized_end=591,
)
_sym_db.RegisterEnumDescriptor(_REGISTERREQUEST_PRESENCESTATUS)
_REGISTERREQUEST_ACTIVESTATUS = _descriptor.EnumDescriptor(
name='ActiveStatus',
full_name='AcFunPack.RegisterRequest.ActiveStatus',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kInvalid', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kAppInForeground', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kAppInBackground', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=593,
serialized_end=665,
)
_sym_db.RegisterEnumDescriptor(_REGISTERREQUEST_ACTIVESTATUS)
_ACCESSPOINT_ADDRESSTYPE = _descriptor.EnumDescriptor(
name='AddressType',
full_name='AcFunPack.AccessPoint.AddressType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kIPV4', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kIPV6', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kDomain', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=1207,
serialized_end=1255,
)
_sym_db.RegisterEnumDescriptor(_ACCESSPOINT_ADDRESSTYPE)
_DEVICEINFO_PLATFORMTYPE = _descriptor.EnumDescriptor(
name='PlatformType',
full_name='AcFunPack.DeviceInfo.PlatformType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kInvalid', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kAndroid', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kiOS', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kWindows', index=3, number=3,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='WECHAT_ANDROID', index=4, number=4,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='WECHAT_IOS', index=5, number=5,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='H5', index=6, number=6,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='H5_ANDROID', index=7, number=7,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='H5_IOS', index=8, number=8,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='H5_WINDOWS', index=9, number=9,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='H5_MAC', index=10, number=10,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPlatformNum', index=11, number=11,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=2102,
serialized_end=2286,
)
_sym_db.RegisterEnumDescriptor(_DEVICEINFO_PLATFORMTYPE)
_ENVINFO_NETWORKTYPE = _descriptor.EnumDescriptor(
name='NetworkType',
full_name='AcFunPack.EnvInfo.NetworkType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kInvalid', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kWIFI', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kCellular', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=2370,
serialized_end=2423,
)
_sym_db.RegisterEnumDescriptor(_ENVINFO_NETWORKTYPE)
_PUSHSERVICETOKEN_PUSHTYPE = _descriptor.EnumDescriptor(
name='PushType',
full_name='AcFunPack.PushServiceToken.PushType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kPushTypeInvalid', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeAPNS', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeXmPush', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeJgPush', index=3, number=3,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeGtPush', index=4, number=4,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeOpPush', index=5, number=5,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeVvPush', index=6, number=6,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeHwPush', index=7, number=7,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPushTypeFcm', index=8, number=8,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=2541,
serialized_end=2736,
)
_sym_db.RegisterEnumDescriptor(_PUSHSERVICETOKEN_PUSHTYPE)
_PINGREQUEST_PINGTYPE = _descriptor.EnumDescriptor(
name='PingType',
full_name='AcFunPack.PingRequest.PingType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kInvalid', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPriorRegister', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kPostRegister', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=2993,
serialized_end=3056,
)
_sym_db.RegisterEnumDescriptor(_PINGREQUEST_PINGTYPE)
_PACKETHEADER_FLAGS = _descriptor.EnumDescriptor(
name='Flags',
full_name='AcFunPack.PacketHeader.Flags',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kDirUpstream', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kDirDownstream', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kDirMask', index=2, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=b'\020\001',
serialized_start=4427,
serialized_end=4490,
)
_sym_db.RegisterEnumDescriptor(_PACKETHEADER_FLAGS)
_PACKETHEADER_ENCODINGTYPE = _descriptor.EnumDescriptor(
name='EncodingType',
full_name='AcFunPack.PacketHeader.EncodingType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kEncodingNone', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kEncodingLz4', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=4492,
serialized_end=4543,
)
_sym_db.RegisterEnumDescriptor(_PACKETHEADER_ENCODINGTYPE)
_PACKETHEADER_ENCRYPTIONMODE = _descriptor.EnumDescriptor(
name='EncryptionMode',
full_name='AcFunPack.PacketHeader.EncryptionMode',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kEncryptionNone', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kEncryptionServiceToken', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kEncryptionSessionKey', index=2, number=2,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=4545,
serialized_end=4638,
)
_sym_db.RegisterEnumDescriptor(_PACKETHEADER_ENCRYPTIONMODE)
_PACKETHEADER_FEATURE = _descriptor.EnumDescriptor(
name='Feature',
full_name='AcFunPack.PacketHeader.Feature',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kReserve', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kCompressLz4', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=4640,
serialized_end=4681,
)
_sym_db.RegisterEnumDescriptor(_PACKETHEADER_FEATURE)
_TOKENINFO_TOKENTYPE = _descriptor.EnumDescriptor(
name='TokenType',
full_name='AcFunPack.TokenInfo.TokenType',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='kInvalid', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='kServiceToken', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=4762,
serialized_end=4806,
)
_sym_db.RegisterEnumDescriptor(_TOKENINFO_TOKENTYPE)
_REGISTERREQUEST = _descriptor.Descriptor(
name='RegisterRequest',
full_name='AcFunPack.RegisterRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='appInfo', full_name='AcFunPack.RegisterRequest.appInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deviceInfo', full_name='AcFunPack.RegisterRequest.deviceInfo', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='envInfo', full_name='AcFunPack.RegisterRequest.envInfo', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='presenceStatus', full_name='AcFunPack.RegisterRequest.presenceStatus', index=3,
number=4, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appActiveStatus', full_name='AcFunPack.RegisterRequest.appActiveStatus', index=4,
number=5, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appCustomStatus', full_name='AcFunPack.RegisterRequest.appCustomStatus', index=5,
number=6, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pushServiceToken', full_name='AcFunPack.RegisterRequest.pushServiceToken', index=6,
number=7, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='instanceId', full_name='AcFunPack.RegisterRequest.instanceId', index=7,
number=8, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pushServiceTokenList', full_name='AcFunPack.RegisterRequest.pushServiceTokenList', index=8,
number=9, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='keepaliveIntervalSec', full_name='AcFunPack.RegisterRequest.keepaliveIntervalSec', index=9,
number=10, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ztCommonInfo', full_name='AcFunPack.RegisterRequest.ztCommonInfo', index=10,
number=11, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_REGISTERREQUEST_PRESENCESTATUS,
_REGISTERREQUEST_ACTIVESTATUS,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=27,
serialized_end=665,
)
_REGISTERRESPONSE = _descriptor.Descriptor(
name='RegisterResponse',
full_name='AcFunPack.RegisterResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='accessPointsConfig', full_name='AcFunPack.RegisterResponse.accessPointsConfig', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sessKey', full_name='AcFunPack.RegisterResponse.sessKey', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='instanceId', full_name='AcFunPack.RegisterResponse.instanceId', index=2,
number=3, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sdkOption', full_name='AcFunPack.RegisterResponse.sdkOption', index=3,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='accessPointsConfigIpv6', full_name='AcFunPack.RegisterResponse.accessPointsConfigIpv6', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=668,
serialized_end=886,
)
_ACCESSPOINTSCONFIG = _descriptor.Descriptor(
name='AccessPointsConfig',
full_name='AcFunPack.AccessPointsConfig',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='optimalAps', full_name='AcFunPack.AccessPointsConfig.optimalAps', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='backupAps', full_name='AcFunPack.AccessPointsConfig.backupAps', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='availablePorts', full_name='AcFunPack.AccessPointsConfig.availablePorts', index=2,
number=3, type=13, cpp_type=3, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='forceLastConnectedAp', full_name='AcFunPack.AccessPointsConfig.forceLastConnectedAp', index=3,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=889,
serialized_end=1074,
)
_ACCESSPOINT = _descriptor.Descriptor(
name='AccessPoint',
full_name='AcFunPack.AccessPoint',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='addressType', full_name='AcFunPack.AccessPoint.addressType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='port', full_name='AcFunPack.AccessPoint.port', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ipV4', full_name='AcFunPack.AccessPoint.ipV4', index=2,
number=3, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ipV6', full_name='AcFunPack.AccessPoint.ipV6', index=3,
number=4, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='domain', full_name='AcFunPack.AccessPoint.domain', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_ACCESSPOINT_ADDRESSTYPE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1077,
serialized_end=1255,
)
_SDKOPTION = _descriptor.Descriptor(
name='SdkOption',
full_name='AcFunPack.SdkOption',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='reportIntervalSeconds', full_name='AcFunPack.SdkOption.reportIntervalSeconds', index=0,
number=1, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='reportSecurity', full_name='AcFunPack.SdkOption.reportSecurity', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='lz4CompressionThresholdBytes', full_name='AcFunPack.SdkOption.lz4CompressionThresholdBytes', index=2,
number=3, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='netCheckServers', full_name='AcFunPack.SdkOption.netCheckServers', index=3,
number=4, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1258,
serialized_end=1387,
)
_ZTLIVECSENTERROOM = _descriptor.Descriptor(
name='ZtLiveCsEnterRoom',
full_name='AcFunPack.ZtLiveCsEnterRoom',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='isAuthor', full_name='AcFunPack.ZtLiveCsEnterRoom.isAuthor', index=0,
number=1, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='reconnectCount', full_name='AcFunPack.ZtLiveCsEnterRoom.reconnectCount', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='lastErrorCode', full_name='AcFunPack.ZtLiveCsEnterRoom.lastErrorCode', index=2,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='enterRoomAttach', full_name='AcFunPack.ZtLiveCsEnterRoom.enterRoomAttach', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='clientLiveSdkVersion', full_name='AcFunPack.ZtLiveCsEnterRoom.clientLiveSdkVersion', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1390,
serialized_end=1529,
)
_ZTLIVECSHEARTBEAT = _descriptor.Descriptor(
name='ZtLiveCsHeartbeat',
full_name='AcFunPack.ZtLiveCsHeartbeat',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='clientTimestampMs', full_name='AcFunPack.ZtLiveCsHeartbeat.clientTimestampMs', index=0,
number=1, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sequence', full_name='AcFunPack.ZtLiveCsHeartbeat.sequence', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1531,
serialized_end=1595,
)
_CSCMD = _descriptor.Descriptor(
name='CsCmd',
full_name='AcFunPack.CsCmd',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='cmdType', full_name='AcFunPack.CsCmd.cmdType', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payload', full_name='AcFunPack.CsCmd.payload', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ticket', full_name='AcFunPack.CsCmd.ticket', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='liveId', full_name='AcFunPack.CsCmd.liveId', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1597,
serialized_end=1670,
)
_APPINFO_EXTENSIONINFOENTRY = _descriptor.Descriptor(
name='ExtensionInfoEntry',
full_name='AcFunPack.AppInfo.ExtensionInfoEntry',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='key', full_name='AcFunPack.AppInfo.ExtensionInfoEntry.key', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='value', full_name='AcFunPack.AppInfo.ExtensionInfoEntry.value', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=b'8\001',
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1823,
serialized_end=1875,
)
_APPINFO = _descriptor.Descriptor(
name='AppInfo',
full_name='AcFunPack.AppInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='appName', full_name='AcFunPack.AppInfo.appName', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appVersion', full_name='AcFunPack.AppInfo.appVersion', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appChannel', full_name='AcFunPack.AppInfo.appChannel', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sdkVersion', full_name='AcFunPack.AppInfo.sdkVersion', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='extensionInfo', full_name='AcFunPack.AppInfo.extensionInfo', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[_APPINFO_EXTENSIONINFOENTRY, ],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1673,
serialized_end=1875,
)
_DEVICEINFO = _descriptor.Descriptor(
name='DeviceInfo',
full_name='AcFunPack.DeviceInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='platformType', full_name='AcFunPack.DeviceInfo.platformType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='osVersion', full_name='AcFunPack.DeviceInfo.osVersion', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deviceModel', full_name='AcFunPack.DeviceInfo.deviceModel', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='imeiMd5', full_name='AcFunPack.DeviceInfo.imeiMd5', index=3,
number=4, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deviceId', full_name='AcFunPack.DeviceInfo.deviceId', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='softDid', full_name='AcFunPack.DeviceInfo.softDid', index=5,
number=6, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kwaiDid', full_name='AcFunPack.DeviceInfo.kwaiDid', index=6,
number=7, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='manufacturer', full_name='AcFunPack.DeviceInfo.manufacturer', index=7,
number=8, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deviceName', full_name='AcFunPack.DeviceInfo.deviceName', index=8,
number=9, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_DEVICEINFO_PLATFORMTYPE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=1878,
serialized_end=2286,
)
_ENVINFO = _descriptor.Descriptor(
name='EnvInfo',
full_name='AcFunPack.EnvInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='networkType', full_name='AcFunPack.EnvInfo.networkType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='apnName', full_name='AcFunPack.EnvInfo.apnName', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_ENVINFO_NETWORKTYPE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=2289,
serialized_end=2423,
)
_PUSHSERVICETOKEN = _descriptor.Descriptor(
name='PushServiceToken',
full_name='AcFunPack.PushServiceToken',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='pushType', full_name='AcFunPack.PushServiceToken.pushType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='token', full_name='AcFunPack.PushServiceToken.token', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='isPassThrough', full_name='AcFunPack.PushServiceToken.isPassThrough', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_PUSHSERVICETOKEN_PUSHTYPE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=2426,
serialized_end=2736,
)
_ZTCOMMONINFO = _descriptor.Descriptor(
name='ZtCommonInfo',
full_name='AcFunPack.ZtCommonInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='kpn', full_name='AcFunPack.ZtCommonInfo.kpn', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kpf', full_name='AcFunPack.ZtCommonInfo.kpf', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='uid', full_name='AcFunPack.ZtCommonInfo.uid', index=2,
number=4, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='did', full_name='AcFunPack.ZtCommonInfo.did', index=3,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=2738,
serialized_end=2804,
)
_PINGRESPONSE = _descriptor.Descriptor(
name='PingResponse',
full_name='AcFunPack.PingResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='serverTimestamp', full_name='AcFunPack.PingResponse.serverTimestamp', index=0,
number=1, type=15, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='clientIp', full_name='AcFunPack.PingResponse.clientIp', index=1,
number=2, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='redirectIp', full_name='AcFunPack.PingResponse.redirectIp', index=2,
number=3, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='redirectPort', full_name='AcFunPack.PingResponse.redirectPort', index=3,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=2806,
serialized_end=2905,
)
_PINGREQUEST = _descriptor.Descriptor(
name='PingRequest',
full_name='AcFunPack.PingRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='pingType', full_name='AcFunPack.PingRequest.pingType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pingRound', full_name='AcFunPack.PingRequest.pingRound', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_PINGREQUEST_PINGTYPE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=2908,
serialized_end=3056,
)
_UPSTREAMPAYLOAD = _descriptor.Descriptor(
name='UpstreamPayload',
full_name='AcFunPack.UpstreamPayload',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='command', full_name='AcFunPack.UpstreamPayload.command', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='seqId', full_name='AcFunPack.UpstreamPayload.seqId', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='retryCount', full_name='AcFunPack.UpstreamPayload.retryCount', index=2,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payloadData', full_name='AcFunPack.UpstreamPayload.payloadData', index=3,
number=4, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='userInstance', full_name='AcFunPack.UpstreamPayload.userInstance', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='errorCode', full_name='AcFunPack.UpstreamPayload.errorCode', index=5,
number=6, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='settingInfo', full_name='AcFunPack.UpstreamPayload.settingInfo', index=6,
number=7, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='requestBasicInfo', full_name='AcFunPack.UpstreamPayload.requestBasicInfo', index=7,
number=8, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='subBiz', full_name='AcFunPack.UpstreamPayload.subBiz', index=8,
number=9, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='frontendInfo', full_name='AcFunPack.UpstreamPayload.frontendInfo', index=9,
number=10, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kpn', full_name='AcFunPack.UpstreamPayload.kpn', index=10,
number=11, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='anonymouseUser', full_name='AcFunPack.UpstreamPayload.anonymouseUser', index=11,
number=12, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=3059,
serialized_end=3415,
)
_DOWNSTREAMPAYLOAD = _descriptor.Descriptor(
name='DownstreamPayload',
full_name='AcFunPack.DownstreamPayload',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='command', full_name='AcFunPack.DownstreamPayload.command', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='seqId', full_name='AcFunPack.DownstreamPayload.seqId', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='errorCode', full_name='AcFunPack.DownstreamPayload.errorCode', index=2,
number=3, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payloadData', full_name='AcFunPack.DownstreamPayload.payloadData', index=3,
number=4, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='errorMsg', full_name='AcFunPack.DownstreamPayload.errorMsg', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='errorData', full_name='AcFunPack.DownstreamPayload.errorData', index=5,
number=6, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='subBiz', full_name='AcFunPack.DownstreamPayload.subBiz', index=6,
number=7, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=3418,
serialized_end=3562,
)
_USERINSTANCE = _descriptor.Descriptor(
name='UserInstance',
full_name='AcFunPack.UserInstance',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user', full_name='AcFunPack.UserInstance.user', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='instanceId', full_name='AcFunPack.UserInstance.instanceId', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=3564,
serialized_end=3629,
)
_USER = _descriptor.Descriptor(
name='User',
full_name='AcFunPack.User',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='appId', full_name='AcFunPack.User.appId', index=0,
number=1, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='uid', full_name='AcFunPack.User.uid', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=3631,
serialized_end=3665,
)
_SETTINGINFO = _descriptor.Descriptor(
name='SettingInfo',
full_name='AcFunPack.SettingInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='locale', full_name='AcFunPack.SettingInfo.locale', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='timezone', full_name='AcFunPack.SettingInfo.timezone', index=1,
number=2, type=17, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=3667,
serialized_end=3714,
)
_REQUSETBASICINFO = _descriptor.Descriptor(
name='RequsetBasicInfo',
full_name='AcFunPack.RequsetBasicInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='clientType', full_name='AcFunPack.RequsetBasicInfo.clientType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deviceId', full_name='AcFunPack.RequsetBasicInfo.deviceId', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='clientIp', full_name='AcFunPack.RequsetBasicInfo.clientIp', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appVersion', full_name='AcFunPack.RequsetBasicInfo.appVersion', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='channel', full_name='AcFunPack.RequsetBasicInfo.channel', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appInfo', full_name='AcFunPack.RequsetBasicInfo.appInfo', index=5,
number=6, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deviceInfo', full_name='AcFunPack.RequsetBasicInfo.deviceInfo', index=6,
number=7, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='envInfo', full_name='AcFunPack.RequsetBasicInfo.envInfo', index=7,
number=8, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='clientPort', full_name='AcFunPack.RequsetBasicInfo.clientPort', index=8,
number=9, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='location', full_name='AcFunPack.RequsetBasicInfo.location', index=9,
number=10, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kpf', full_name='AcFunPack.RequsetBasicInfo.kpf', index=10,
number=11, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=3717,
serialized_end=4032,
)
_FRONTENDINFO = _descriptor.Descriptor(
name='FrontendInfo',
full_name='AcFunPack.FrontendInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='ip', full_name='AcFunPack.FrontendInfo.ip', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='port', full_name='AcFunPack.FrontendInfo.port', index=1,
number=2, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=4034,
serialized_end=4074,
)
_PACKETHEADER = _descriptor.Descriptor(
name='PacketHeader',
full_name='AcFunPack.PacketHeader',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='appId', full_name='AcFunPack.PacketHeader.appId', index=0,
number=1, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='uid', full_name='AcFunPack.PacketHeader.uid', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='instanceId', full_name='AcFunPack.PacketHeader.instanceId', index=2,
number=3, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='flags', full_name='AcFunPack.PacketHeader.flags', index=3,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='encodingType', full_name='AcFunPack.PacketHeader.encodingType', index=4,
number=6, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='decodedPayloadLen', full_name='AcFunPack.PacketHeader.decodedPayloadLen', index=5,
number=7, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='encryptionMode', full_name='AcFunPack.PacketHeader.encryptionMode', index=6,
number=8, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='tokenInfo', full_name='AcFunPack.PacketHeader.tokenInfo', index=7,
number=9, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='seqId', full_name='AcFunPack.PacketHeader.seqId', index=8,
number=10, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='features', full_name='AcFunPack.PacketHeader.features', index=9,
number=11, type=14, cpp_type=8, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kpn', full_name='AcFunPack.PacketHeader.kpn', index=10,
number=12, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_PACKETHEADER_FLAGS,
_PACKETHEADER_ENCODINGTYPE,
_PACKETHEADER_ENCRYPTIONMODE,
_PACKETHEADER_FEATURE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=4077,
serialized_end=4681,
)
_TOKENINFO = _descriptor.Descriptor(
name='TokenInfo',
full_name='AcFunPack.TokenInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='tokenType', full_name='AcFunPack.TokenInfo.tokenType', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='token', full_name='AcFunPack.TokenInfo.token', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
_TOKENINFO_TOKENTYPE,
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=4683,
serialized_end=4806,
)
_KEEPALIVEREQUEST = _descriptor.Descriptor(
name='KeepAliveRequest',
full_name='AcFunPack.KeepAliveRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='presenceStatus', full_name='AcFunPack.KeepAliveRequest.presenceStatus', index=0,
number=1, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='appActiveStatus', full_name='AcFunPack.KeepAliveRequest.appActiveStatus', index=1,
number=2, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pushServiceToken', full_name='AcFunPack.KeepAliveRequest.pushServiceToken', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pushServiceTokenList', full_name='AcFunPack.KeepAliveRequest.pushServiceTokenList', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='keepaliveIntervalSec', full_name='AcFunPack.KeepAliveRequest.keepaliveIntervalSec', index=4,
number=5, type=5, cpp_type=1, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=4809,
serialized_end=5104,
)
_ZTLIVESCMESSAGE = _descriptor.Descriptor(
name='ZtLiveScMessage',
full_name='AcFunPack.ZtLiveScMessage',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='messageType', full_name='AcFunPack.ZtLiveScMessage.messageType', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='compressionType', full_name='AcFunPack.ZtLiveScMessage.compressionType', index=1,
number=2, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payload', full_name='AcFunPack.ZtLiveScMessage.payload', index=2,
number=3, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='liveId', full_name='AcFunPack.ZtLiveScMessage.liveId', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ticket', full_name='AcFunPack.ZtLiveScMessage.ticket', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='serverTimestampMs', full_name='AcFunPack.ZtLiveScMessage.serverTimestampMs', index=5,
number=6, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5107,
serialized_end=5246,
)
_ZTLIVESCNOTIFYSIGNAL_ZTLIVENOTIFYSIGNALITEM = _descriptor.Descriptor(
name='ZtLiveNotifySignalItem',
full_name='AcFunPack.ZtLiveScNotifySignal.ZtLiveNotifySignalItem',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='signalType', full_name='AcFunPack.ZtLiveScNotifySignal.ZtLiveNotifySignalItem.signalType', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payload', full_name='AcFunPack.ZtLiveScNotifySignal.ZtLiveNotifySignalItem.payload', index=1,
number=2, type=12, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5343,
serialized_end=5404,
)
_ZTLIVESCNOTIFYSIGNAL = _descriptor.Descriptor(
name='ZtLiveScNotifySignal',
full_name='AcFunPack.ZtLiveScNotifySignal',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='item', full_name='AcFunPack.ZtLiveScNotifySignal.item', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[_ZTLIVESCNOTIFYSIGNAL_ZTLIVENOTIFYSIGNALITEM, ],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5249,
serialized_end=5404,
)
_ZTLIVESCACTIONSIGNAL_ZTLIVEACTIONSIGNALITEM = _descriptor.Descriptor(
name='ZtLiveActionSignalItem',
full_name='AcFunPack.ZtLiveScActionSignal.ZtLiveActionSignalItem',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='signalType', full_name='AcFunPack.ZtLiveScActionSignal.ZtLiveActionSignalItem.signalType', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payload', full_name='AcFunPack.ZtLiveScActionSignal.ZtLiveActionSignalItem.payload', index=1,
number=2, type=12, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5501,
serialized_end=5562,
)
_ZTLIVESCACTIONSIGNAL = _descriptor.Descriptor(
name='ZtLiveScActionSignal',
full_name='AcFunPack.ZtLiveScActionSignal',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='item', full_name='AcFunPack.ZtLiveScActionSignal.item', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[_ZTLIVESCACTIONSIGNAL_ZTLIVEACTIONSIGNALITEM, ],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5407,
serialized_end=5562,
)
_ZTLIVESCSTATESIGNAL_ZTLIVESTATESIGNALITEM = _descriptor.Descriptor(
name='ZtLiveStateSignalItem',
full_name='AcFunPack.ZtLiveScStateSignal.ZtLiveStateSignalItem',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='signalType', full_name='AcFunPack.ZtLiveScStateSignal.ZtLiveStateSignalItem.signalType', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='payload', full_name='AcFunPack.ZtLiveScStateSignal.ZtLiveStateSignalItem.payload', index=1,
number=2, type=12, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5656,
serialized_end=5716,
)
_ZTLIVESCSTATESIGNAL = _descriptor.Descriptor(
name='ZtLiveScStateSignal',
full_name='AcFunPack.ZtLiveScStateSignal',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='item', full_name='AcFunPack.ZtLiveScStateSignal.item', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[_ZTLIVESCSTATESIGNAL_ZTLIVESTATESIGNALITEM, ],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5565,
serialized_end=5716,
)
_ZTLIVESCSTATUSCHANGED_BANNEDINFO = _descriptor.Descriptor(
name='BannedInfo',
full_name='AcFunPack.ZtLiveScStatusChanged.BannedInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='banReason', full_name='AcFunPack.ZtLiveScStatusChanged.BannedInfo.banReason', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5849,
serialized_end=5880,
)
_ZTLIVESCSTATUSCHANGED = _descriptor.Descriptor(
name='ZtLiveScStatusChanged',
full_name='AcFunPack.ZtLiveScStatusChanged',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='type', full_name='AcFunPack.ZtLiveScStatusChanged.type', index=0,
number=1, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='maxRandomDelayMs', full_name='AcFunPack.ZtLiveScStatusChanged.maxRandomDelayMs', index=1,
number=2, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='bannedInfo', full_name='AcFunPack.ZtLiveScStatusChanged.bannedInfo', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[_ZTLIVESCSTATUSCHANGED_BANNEDINFO, ],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5719,
serialized_end=5880,
)
_COMMONACTIONSIGNALCOMMENT = _descriptor.Descriptor(
name='CommonActionSignalComment',
full_name='AcFunPack.CommonActionSignalComment',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='content', full_name='AcFunPack.CommonActionSignalComment.content', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sendTimeMs', full_name='AcFunPack.CommonActionSignalComment.sendTimeMs', index=1,
number=2, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonActionSignalComment.userInfo', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5882,
serialized_end=5991,
)
_COMMONACTIONSIGNALLIKE = _descriptor.Descriptor(
name='CommonActionSignalLike',
full_name='AcFunPack.CommonActionSignalLike',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonActionSignalLike.userInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sendTimeMs', full_name='AcFunPack.CommonActionSignalLike.sendTimeMs', index=1,
number=2, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=5993,
serialized_end=6082,
)
_COMMONACTIONSIGNALGIFT = _descriptor.Descriptor(
name='CommonActionSignalGift',
full_name='AcFunPack.CommonActionSignalGift',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonActionSignalGift.userInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sendTimeMs', full_name='AcFunPack.CommonActionSignalGift.sendTimeMs', index=1,
number=2, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='giftId', full_name='AcFunPack.CommonActionSignalGift.giftId', index=2,
number=3, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='batchSize', full_name='AcFunPack.CommonActionSignalGift.batchSize', index=3,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comboCount', full_name='AcFunPack.CommonActionSignalGift.comboCount', index=4,
number=5, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='rank', full_name='AcFunPack.CommonActionSignalGift.rank', index=5,
number=6, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comboKey', full_name='AcFunPack.CommonActionSignalGift.comboKey', index=6,
number=7, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='slotDisplayDurationMs', full_name='AcFunPack.CommonActionSignalGift.slotDisplayDurationMs', index=7,
number=8, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='expireDurationMs', full_name='AcFunPack.CommonActionSignalGift.expireDurationMs', index=8,
number=9, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6085,
serialized_end=6318,
)
_COMMONSTATESIGNALDISPLAYINFO = _descriptor.Descriptor(
name='CommonStateSignalDisplayInfo',
full_name='AcFunPack.CommonStateSignalDisplayInfo',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='watchingCount', full_name='AcFunPack.CommonStateSignalDisplayInfo.watchingCount', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='likeCount', full_name='AcFunPack.CommonStateSignalDisplayInfo.likeCount', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='likeDelta', full_name='AcFunPack.CommonStateSignalDisplayInfo.likeDelta', index=2,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6320,
serialized_end=6411,
)
_COMMONSTATESIGNALTOPUSERS_TOPUSER = _descriptor.Descriptor(
name='TopUser',
full_name='AcFunPack.CommonStateSignalTopUsers.TopUser',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonStateSignalTopUsers.TopUser.userInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='customWatchingListData', full_name='AcFunPack.CommonStateSignalTopUsers.TopUser.customWatchingListData', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='displaySendAmount', full_name='AcFunPack.CommonStateSignalTopUsers.TopUser.displaySendAmount', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='anonymousUser', full_name='AcFunPack.CommonStateSignalTopUsers.TopUser.anonymousUser', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6507,
serialized_end=6643,
)
_COMMONSTATESIGNALTOPUSERS = _descriptor.Descriptor(
name='CommonStateSignalTopUsers',
full_name='AcFunPack.CommonStateSignalTopUsers',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='topUser', full_name='AcFunPack.CommonStateSignalTopUsers.topUser', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[_COMMONSTATESIGNALTOPUSERS_TOPUSER, ],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6414,
serialized_end=6643,
)
_COMMONACTIONSIGNALUSERENTERROOM = _descriptor.Descriptor(
name='CommonActionSignalUserEnterRoom',
full_name='AcFunPack.CommonActionSignalUserEnterRoom',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonActionSignalUserEnterRoom.userInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sendTimeMs', full_name='AcFunPack.CommonActionSignalUserEnterRoom.sendTimeMs', index=1,
number=2, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6645,
serialized_end=6743,
)
_COMMONACTIONSIGNALUSERFOLLOWAUTHOR = _descriptor.Descriptor(
name='CommonActionSignalUserFollowAuthor',
full_name='AcFunPack.CommonActionSignalUserFollowAuthor',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonActionSignalUserFollowAuthor.userInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sendTimeMs', full_name='AcFunPack.CommonActionSignalUserFollowAuthor.sendTimeMs', index=1,
number=2, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6745,
serialized_end=6846,
)
_COMMONACTIONSIGNALRICHTEXT = _descriptor.Descriptor(
name='CommonActionSignalRichText',
full_name='AcFunPack.CommonActionSignalRichText',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='userInfo', full_name='AcFunPack.CommonActionSignalRichText.userInfo', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='plain', full_name='AcFunPack.CommonActionSignalRichText.plain', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='image', full_name='AcFunPack.CommonActionSignalRichText.image', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=6849,
serialized_end=7003,
)
_USERINFOSEGMENT = _descriptor.Descriptor(
name='UserInfoSegment',
full_name='AcFunPack.UserInfoSegment',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user', full_name='AcFunPack.UserInfoSegment.user', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='color', full_name='AcFunPack.UserInfoSegment.color', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7005,
serialized_end=7078,
)
_PLAINSEGMENT = _descriptor.Descriptor(
name='PlainSegment',
full_name='AcFunPack.PlainSegment',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='text', full_name='AcFunPack.PlainSegment.text', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='color', full_name='AcFunPack.PlainSegment.color', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7080,
serialized_end=7123,
)
_IMAGESEGMENT = _descriptor.Descriptor(
name='ImageSegment',
full_name='AcFunPack.ImageSegment',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='cdnNode', full_name='AcFunPack.ImageSegment.cdnNode', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='alternativeText', full_name='AcFunPack.ImageSegment.alternativeText', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='alternativeColor', full_name='AcFunPack.ImageSegment.alternativeColor', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7125,
serialized_end=7232,
)
_COMMONNOTIFYSIGNALKICKEDOUT = _descriptor.Descriptor(
name='CommonNotifySignalKickedOut',
full_name='AcFunPack.CommonNotifySignalKickedOut',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='reason', full_name='AcFunPack.CommonNotifySignalKickedOut.reason', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7234,
serialized_end=7279,
)
_COMMONNOTIFYSIGNALVIOLATIONALERT = _descriptor.Descriptor(
name='CommonNotifySignalViolationAlert',
full_name='AcFunPack.CommonNotifySignalViolationAlert',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='violationContent', full_name='AcFunPack.CommonNotifySignalViolationAlert.violationContent', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7281,
serialized_end=7341,
)
_COMMONSTATESIGNALCURRENTREDPACKLIST = _descriptor.Descriptor(
name='CommonStateSignalCurrentRedpackList',
full_name='AcFunPack.CommonStateSignalCurrentRedpackList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7343,
serialized_end=7380,
)
_COMMONSTATESIGNALRECENTCOMMENT = _descriptor.Descriptor(
name='CommonStateSignalRecentComment',
full_name='AcFunPack.CommonStateSignalRecentComment',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='comment', full_name='AcFunPack.CommonStateSignalRecentComment.comment', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto2',
extension_ranges=[],
oneofs=[
],
serialized_start=7382,
serialized_end=7469,
)
_COMMONSTATESIGNALCHATREADY = _desc
gitextract_z4z_ib8x/ ├── .gitattributes ├── .gitignore ├── 173.py ├── 17live.py ├── 2cq.py ├── 51lm.py ├── 95xiu.py ├── 9xiu.py ├── LICENSE ├── README.md ├── acfun.py ├── bigo.py ├── bilibili.py ├── cc.py ├── changyou.py ├── danmu/ │ ├── danmaku/ │ │ ├── __init__.py │ │ ├── acfun.proto │ │ ├── acfun.py │ │ ├── acfun_pb2.py │ │ ├── bilibili.py │ │ ├── cc.py │ │ ├── douyu.py │ │ ├── egame.py │ │ ├── huajiao.proto │ │ ├── huajiao.py │ │ ├── huajiao_pb2.py │ │ ├── huomao.py │ │ ├── huya.py │ │ ├── inke.py │ │ ├── kuaishou.proto │ │ ├── kuaishou.py │ │ ├── kuaishou_pb2.py │ │ ├── kugou.proto │ │ ├── kugou.py │ │ ├── kugou_pb2.py │ │ ├── laifeng.py │ │ ├── longzhu.py │ │ ├── look.py │ │ ├── pps.py │ │ ├── qf.py │ │ ├── tars/ │ │ │ ├── EndpointF.py │ │ │ ├── QueryF.py │ │ │ ├── __TimeoutQueue.py │ │ │ ├── __adapterproxy.py │ │ │ ├── __async.py │ │ │ ├── __init__.py │ │ │ ├── __logger.py │ │ │ ├── __packet.py │ │ │ ├── __rpc.py │ │ │ ├── __servantproxy.py │ │ │ ├── __tars.py │ │ │ ├── __trans.py │ │ │ ├── __tup.py │ │ │ ├── __util.py │ │ │ ├── core.py │ │ │ ├── exception.py │ │ │ └── tars/ │ │ │ ├── EndpointF.tars │ │ │ ├── QueryF.tars │ │ │ └── __init__.py │ │ ├── yqs.proto │ │ ├── yqs.py │ │ ├── yqs_pb2.py │ │ └── zhanqi.py │ └── main.py ├── douyin.py ├── douyu.py ├── egame.py ├── fengbolive.py ├── hongle.py ├── huajiao.py ├── huomao.py ├── huya.py ├── imifun.py ├── immomo.py ├── inke.py ├── iqiyi.js ├── iqiyi.py ├── ixigua.py ├── jd.py ├── kbs.py ├── kk.py ├── kuaishou.py ├── kugou.py ├── kuwo.py ├── laifeng.py ├── lehai.py ├── liveu.py ├── longzhu.py ├── look.py ├── maoer.py ├── migu.py ├── now.py ├── pps.py ├── ppsport.py ├── qf.py ├── qie.py ├── renren.py ├── requirements.txt ├── showself.py ├── sports_iqiyi.py ├── tiktok.py ├── tuho.py ├── twitch.py ├── v6cn.py ├── wali.py ├── woxiu.py ├── xunlei.py ├── yangshipin.py ├── yizhibo.py ├── youku.py ├── yuanbobo.py ├── yy.py ├── zhanqi.py └── zhibotv.py
SYMBOL INDEX (768 symbols across 95 files)
FILE: 173.py
class YQS (line 6) | class YQS:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: 17live.py
class Live17 (line 7) | class Live17:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 22) | def get_real_url(self):
function get_real_url (line 34) | def get_real_url(rid):
FILE: 2cq.py
class MHT (line 6) | class MHT:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: 51lm.py
class LM (line 9) | class LM:
method __init__ (line 11) | def __init__(self, rid):
method get_real_url (line 15) | def get_real_url(self):
function get_real_url (line 48) | def get_real_url(rid):
FILE: 95xiu.py
class JWXiu (line 7) | class JWXiu:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 27) | def get_real_url(rid):
FILE: 9xiu.py
class JXiu (line 6) | class JXiu:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 30) | def get_real_url(rid):
FILE: acfun.py
class AcFun (line 8) | class AcFun:
method __init__ (line 10) | def __init__(self, rid):
method get_real_url (line 13) | def get_real_url(self):
function get_real_url (line 49) | def get_real_url(rid):
FILE: bigo.py
class Bigo (line 11) | class Bigo:
method __init__ (line 13) | def __init__(self, rid):
method get_real_url (line 16) | def get_real_url(self):
function get_real_url (line 25) | def get_real_url(rid):
FILE: bilibili.py
class BiliBili (line 9) | class BiliBili:
method __init__ (line 11) | def __init__(self, rid):
method get_real_url (line 36) | def get_real_url(self, current_qn: int = 10000) -> dict:
function get_real_url (line 75) | def get_real_url(rid):
FILE: cc.py
class CC (line 7) | class CC:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 28) | def get_real_url(rid):
FILE: changyou.py
class ChangYou (line 12) | class ChangYou:
method __init__ (line 14) | def __init__(self, rid):
method get_real_url (line 17) | def get_real_url(self):
function get_real_url (line 37) | def get_real_url(rid):
FILE: danmu/danmaku/__init__.py
class DanmakuClient (line 29) | class DanmakuClient:
method __init__ (line 30) | def __init__(self, url, q):
method init_ws (line 70) | async def init_ws(self):
method heartbeats (line 80) | async def heartbeats(self):
method fetch_danmaku (line 91) | async def fetch_danmaku(self):
method init_ws_huajiao (line 102) | async def init_ws_huajiao(self):
method init_ws_acfun (line 119) | async def init_ws_acfun(self):
method ping_acfun (line 123) | async def ping_acfun(self):
method keepalive_acfun (line 128) | async def keepalive_acfun(self):
method heartbeat_acfun (line 133) | async def heartbeat_acfun(self):
method fetch_danmaku_acfun (line 138) | async def fetch_danmaku_acfun(self):
method init_ws_173 (line 149) | async def init_ws_173(self):
method tcphelloreq_173 (line 155) | async def tcphelloreq_173(self):
method roomhelloreq_173 (line 160) | async def roomhelloreq_173(self):
method fetch_danmaku_173 (line 165) | async def fetch_danmaku_173(self):
method init_ws_yy (line 172) | async def init_ws_yy(self):
method heartbeat_yy (line 176) | async def heartbeat_yy(self):
method fetch_danmaku_yy (line 181) | async def fetch_danmaku_yy(self):
method start (line 193) | async def start(self):
method stop (line 230) | async def stop(self):
FILE: danmu/danmaku/acfun.py
class AcFun (line 18) | class AcFun:
method __init__ (line 21) | def __init__(self, rid):
method aes_encode (line 93) | def aes_encode(t, key):
method aes_decode (line 103) | def aes_decode(t, key):
method register (line 115) | def register(self):
method keepalive (line 133) | def keepalive(self):
method ping (line 143) | def ping(self):
method ztlivecsenterroom (line 152) | def ztlivecsenterroom(self):
method ztlivecsheartbeat (line 155) | def ztlivecsheartbeat(self):
method cscmd (line 159) | def cscmd(self, payload_type):
method encode_payload (line 183) | def encode_payload(self, payload_type):
method encode_head (line 204) | def encode_head(self):
method encode_packet (line 220) | def encode_packet(self, payload_type):
method decode_packet (line 228) | def decode_packet(self, data):
FILE: danmu/danmaku/bilibili.py
class Bilibili (line 8) | class Bilibili:
method get_ws_info (line 15) | async def get_ws_info(url):
method decode_msg (line 34) | def decode_msg(data):
FILE: danmu/danmaku/cc.py
class CC_Init (line 11) | class CC_Init:
method __init__ (line 12) | def __init__(self):
method get_reg (line 15) | def get_reg(self):
method get_beat (line 42) | def get_beat(self):
method get_join (line 49) | def get_join(self, data_cid, data_gametype, data_roomId):
method encode_str (line 60) | def encode_str(self, r):
method encode_num (line 71) | def encode_num(self, e):
method encode_dict (line 133) | def encode_dict(self, d):
method p (line 147) | def p(self, fmt):
method i (line 155) | def i(self, t):
method o (line 158) | def o(self, t, e):
method f (line 161) | def f(self, t, e):
method n (line 164) | def n(self, e):
method de_init (line 219) | def de_init(self, t):
method de_str (line 225) | def de_str(self, t, e):
method de_list (line 230) | def de_list(self, t, e):
method de_dict (line 237) | def de_dict(self, t, e):
class CC (line 248) | class CC:
method get_ws_info (line 255) | async def get_ws_info(url):
method decode_msg (line 273) | def decode_msg(e):
FILE: danmu/danmaku/douyu.py
class Douyu (line 7) | class Douyu:
method get_ws_info (line 14) | async def get_ws_info(url):
method decode_msg (line 34) | def decode_msg(data):
FILE: danmu/danmaku/egame.py
class eGame (line 7) | class eGame:
method get_ws_info (line 12) | async def get_ws_info(url):
method decode_msg (line 43) | def decode_msg(data):
class MessageDecode (line 69) | class MessageDecode:
method __init__ (line 74) | def __init__(self, data):
method v (line 109) | def v(self):
method w (line 125) | def w(self, operation, startPosition, endPosition, data):
method x (line 131) | def x(self, startPosition, endPosition, data):
method ye (line 142) | def ye(self, e):
method afterChange (line 150) | def afterChange(self, e, t, i, n, o):
method T (line 172) | def T(self, e):
method S (line 191) | def S(self, e, t=0):
method m (line 208) | def m(self, e, t):
method f0 (line 248) | def f0(self, e, t):
method f1 (line 256) | def f1(self, e, t):
method f2 (line 264) | def f2(self, e, t):
method f3 (line 272) | def f3(self, e, t):
method f4 (line 280) | def f4(self, e, t):
method f5 (line 288) | def f5(self, e, t):
method f6 (line 296) | def f6(self, e, t):
method f7 (line 303) | def f7(self, e, t):
method f8 (line 310) | def f8(self, e, t):
method f9 (line 324) | def f9(self, e, t):
method f10 (line 336) | def f10(self, e, t):
method f11 (line 345) | def f11(self, e, t):
method f12 (line 348) | def f12(self, e, t):
method f13 (line 351) | def f13(self, e, t):
FILE: danmu/danmaku/huajiao.py
class HuaJiao (line 10) | class HuaJiao:
method __init__ (line 15) | def __init__(self, rid=None):
method init_p (line 26) | def init_p(self):
method random_ (line 34) | def random_(num, var):
method md5 (line 44) | def md5(data):
method rc4 (line 48) | def rc4(data, key):
method sendHandshakePack (line 66) | def sendHandshakePack(self):
method processHandShakePack (line 79) | def processHandShakePack(self, message):
method sendLoginPack (line 95) | def sendLoginPack(self, message):
method processLoginPack (line 119) | def processLoginPack(self, message):
method sendJoinChatroomPack (line 135) | def sendJoinChatroomPack(self, message):
method processMessagePack (line 160) | def processMessagePack(self, message):
method processService_RespMessage (line 176) | def processService_RespMessage(self, p):
method processNewMessageNotifyMessage (line 191) | def processNewMessageNotifyMessage(self, p):
method decode_msg (line 210) | def decode_msg(self, message):
FILE: danmu/danmaku/huomao.py
class HuoMao (line 6) | class HuoMao:
method get_ws_info (line 12) | async def get_ws_info(url):
method decode_msg (line 31) | def decode_msg(data):
FILE: danmu/danmaku/huya.py
class Huya (line 6) | class Huya:
method get_ws_info (line 16) | async def get_ws_info(url):
method decode_msg (line 50) | def decode_msg(data):
FILE: danmu/danmaku/inke.py
class Inke (line 7) | class Inke:
method get_ws_info (line 11) | async def get_ws_info(url):
method decode_msg (line 23) | def decode_msg(data):
FILE: danmu/danmaku/kuaishou.py
class KuaiShou (line 9) | class KuaiShou:
method get_ws_info (line 13) | async def get_ws_info(url):
method get_page_id (line 59) | def get_page_id():
method decode_msg (line 69) | def decode_msg(message):
FILE: danmu/danmaku/kugou.py
class InitKugou (line 6) | class InitKugou:
method __init__ (line 8) | def __init__(self):
method reg (line 58) | def reg(self, rid):
method g (line 96) | def g(self, *e):
method encode_ (line 112) | def encode_(self, e, t):
method v (line 135) | def v(self, e, t):
method decode_ (line 160) | def decode_(self, message):
class KuGou (line 214) | class KuGou:
method get_ws_info (line 221) | async def get_ws_info(url):
method decode_msg (line 227) | def decode_msg(data):
FILE: danmu/danmaku/laifeng.py
class LaiFeng (line 6) | class LaiFeng:
method get_ws_info (line 11) | async def get_ws_info(url):
method decode_msg (line 31) | def decode_msg(message):
FILE: danmu/danmaku/longzhu.py
class LongZhu (line 6) | class LongZhu:
method get_ws_info (line 10) | async def get_ws_info(url):
method decode_msg (line 22) | def decode_msg(message):
FILE: danmu/danmaku/look.py
class Look (line 8) | class Look:
method aes_ (line 13) | def aes_(t, key):
method get_ws_info (line 24) | async def get_ws_info(url):
method decode_msg (line 85) | def decode_msg(message):
FILE: danmu/danmaku/pps.py
class QiXiu (line 6) | class QiXiu:
method get_ws_info (line 10) | async def get_ws_info(url):
method decode_msg (line 35) | def decode_msg(data):
FILE: danmu/danmaku/qf.py
class QF (line 6) | class QF:
method get_ws_info (line 11) | async def get_ws_info(url):
method decode_msg (line 40) | def decode_msg(message):
FILE: danmu/danmaku/tars/EndpointF.py
class EndpointF (line 19) | class EndpointF(tarscore.struct):
method __init__ (line 22) | def __init__(self):
method writeTo (line 37) | def writeTo(oos, value):
method readFrom (line 52) | def readFrom(ios):
FILE: danmu/danmaku/tars/QueryF.py
class QueryFProxy (line 30) | class QueryFProxy(ServantProxy):
method findObjectById (line 31) | def findObjectById(self, id, context=ServantProxy.mapcls_context()):
method async_findObjectById (line 43) | def async_findObjectById(self, callback, id, context=ServantProxy.mapc...
method findObjectById4Any (line 50) | def findObjectById4Any(self, id, context=ServantProxy.mapcls_context()):
method async_findObjectById4Any (line 64) | def async_findObjectById4Any(self, callback, id, context=ServantProxy....
method findObjectById4All (line 71) | def findObjectById4All(self, id, context=ServantProxy.mapcls_context()):
method async_findObjectById4All (line 85) | def async_findObjectById4All(self, callback, id, context=ServantProxy....
method findObjectByIdInSameGroup (line 92) | def findObjectByIdInSameGroup(self, id, context=ServantProxy.mapcls_co...
method async_findObjectByIdInSameGroup (line 106) | def async_findObjectByIdInSameGroup(self, callback, id, context=Servan...
method findObjectByIdInSameStation (line 113) | def findObjectByIdInSameStation(self, id, sStation, context=ServantPro...
method async_findObjectByIdInSameStation (line 128) | def async_findObjectByIdInSameStation(self, callback, id, sStation, co...
method findObjectByIdInSameSet (line 136) | def findObjectByIdInSameSet(self, id, setId, context=ServantProxy.mapc...
method async_findObjectByIdInSameSet (line 151) | def async_findObjectByIdInSameSet(self, callback, id, setId, context=S...
class QueryFPrxCallback (line 163) | class QueryFPrxCallback(ServantProxyCallback):
method __init__ (line 164) | def __init__(self):
method callback_findObjectById (line 175) | def callback_findObjectById(self, ret):
method callback_findObjectById_exception (line 178) | def callback_findObjectById_exception(self, ret):
method callback_findObjectById4Any (line 181) | def callback_findObjectById4Any(self, ret, activeEp, inactiveEp):
method callback_findObjectById4Any_exception (line 184) | def callback_findObjectById4Any_exception(self, ret):
method callback_findObjectById4All (line 187) | def callback_findObjectById4All(self, ret, activeEp, inactiveEp):
method callback_findObjectById4All_exception (line 190) | def callback_findObjectById4All_exception(self, ret):
method callback_findObjectByIdInSameGroup (line 193) | def callback_findObjectByIdInSameGroup(self, ret, activeEp, inactiveEp):
method callback_findObjectByIdInSameGroup_exception (line 196) | def callback_findObjectByIdInSameGroup_exception(self, ret):
method callback_findObjectByIdInSameStation (line 199) | def callback_findObjectByIdInSameStation(self, ret, activeEp, inactive...
method callback_findObjectByIdInSameStation_exception (line 202) | def callback_findObjectByIdInSameStation_exception(self, ret):
method callback_findObjectByIdInSameSet (line 205) | def callback_findObjectByIdInSameSet(self, ret, activeEp, inactiveEp):
method callback_findObjectByIdInSameSet_exception (line 208) | def callback_findObjectByIdInSameSet_exception(self, ret):
method __invoke_findObjectById (line 211) | def __invoke_findObjectById(self, reqmsg):
method __invoke_findObjectById4Any (line 220) | def __invoke_findObjectById4Any(self, reqmsg):
method __invoke_findObjectById4All (line 231) | def __invoke_findObjectById4All(self, reqmsg):
method __invoke_findObjectByIdInSameGroup (line 242) | def __invoke_findObjectByIdInSameGroup(self, reqmsg):
method __invoke_findObjectByIdInSameStation (line 253) | def __invoke_findObjectByIdInSameStation(self, reqmsg):
method __invoke_findObjectByIdInSameSet (line 264) | def __invoke_findObjectByIdInSameSet(self, reqmsg):
method onDispatch (line 275) | def onDispatch(self, reqmsg):
FILE: danmu/danmaku/tars/__TimeoutQueue.py
class ReqMessage (line 37) | class ReqMessage:
method __init__ (line 45) | def __init__(self):
method packReq (line 59) | def packReq(self):
method unpackRspList (line 75) | def unpackRspList(buf):
class TimeoutQueue (line 108) | class TimeoutQueue:
method __init__ (line 115) | def __init__(self, timeout=3):
method getTimeout (line 123) | def getTimeout(self):
method setTimeout (line 131) | def setTimeout(self, timeout):
method size (line 141) | def size(self):
method generateId (line 153) | def generateId(self):
method pop (line 169) | def pop(self, uniqId=0, erase=True):
method push (line 197) | def push(self, item, uniqId):
method peek (line 218) | def peek(self, uniqId):
method timeout (line 235) | def timeout(self):
class QueueTimeout (line 260) | class QueueTimeout(threading.Thread):
method __init__ (line 265) | def __init__(self, timeout=0.1):
method terminate (line 274) | def terminate(self):
method setHandler (line 281) | def setHandler(self, handler):
method run (line 284) | def run(self):
FILE: danmu/danmaku/tars/__adapterproxy.py
class AdapterProxy (line 47) | class AdapterProxy:
method __init__ (line 52) | def __init__(self):
method activatestateinreg (line 63) | def activatestateinreg(self):
method activatestateinreg (line 67) | def activatestateinreg(self, value):
method __del__ (line 70) | def __del__(self):
method initialize (line 73) | def initialize(self, endPointInfo, objectProxy, reactor, asyncProc):
method terminate (line 91) | def terminate(self):
method trans (line 98) | def trans(self):
method invoke (line 106) | def invoke(self, reqmsg):
method finished (line 129) | def finished(self, rsp):
method checkActive (line 157) | def checkActive(self, forceConnect=False):
method doReconnect (line 177) | def doReconnect(self):
method sendRequest (line 193) | def sendRequest(self):
method finishConnect (line 220) | def finishConnect(self):
method finishInvoke (line 255) | def finishInvoke(self, isTimeout):
method popRequest (line 259) | def popRequest(self):
method shouldCloseTrans (line 262) | def shouldCloseTrans(self):
method setCloseTrans (line 270) | def setCloseTrans(self, closeTrans):
class QueryRegisterCallback (line 281) | class QueryRegisterCallback(QueryFPrxCallback):
method __init__ (line 282) | def __init__(self, adpManager):
method callback_findObjectById4All (line 287) | def callback_findObjectById4All(self, ret, activeEp, inactiveEp):
method callback_findObjectById4All_exception (line 294) | def callback_findObjectById4All_exception(self, ret):
class EndpointWeightType (line 298) | class EndpointWeightType(Enum):
class AdapterProxyManager (line 303) | class AdapterProxyManager:
method __init__ (line 308) | def __init__(self):
method initialize (line 327) | def initialize(self, comm, objectProxy, eplist):
method terminate (line 342) | def terminate(self):
method refreshEndpoints (line 354) | def refreshEndpoints(self):
method getEndpoints (line 392) | def getEndpoints(self):
method setEndpoints (line 406) | def setEndpoints(self, eplist, ieplist):
method __notifyEndpoints (line 463) | def __notifyEndpoints(self, actives, inactives):
method __getNextValidProxy (line 471) | def __getNextValidProxy(self):
method __getHashProxy (line 503) | def __getHashProxy(self, reqmsg):
method __getHashProxyForNormal (line 515) | def __getHashProxyForNormal(self, hashCode):
method __getConHashProxyForNormal (line 553) | def __getConHashProxyForNormal(self, hashCode):
method __getHashProxyForWeight (line 591) | def __getHashProxyForWeight(self, hashCode):
method __getConHashProxyForWeight (line 595) | def __getConHashProxyForWeight(self, hashCode):
method __checkConHashChange (line 599) | def __checkConHashChange(self, lastConHashPrxList):
method __updateConHashProxyWeighted (line 612) | def __updateConHashProxyWeighted(self):
method __getWeightedProxy (line 641) | def __getWeightedProxy(self):
method selectAdapterProxy (line 686) | def selectAdapterProxy(self, reqmsg):
FILE: danmu/danmaku/tars/__async.py
class AsyncProcThread (line 32) | class AsyncProcThread:
method __init__ (line 37) | def __init__(self):
method __del__ (line 45) | def __del__(self):
method initialize (line 48) | def initialize(self, nrunner=3):
method terminate (line 63) | def terminate(self):
method put (line 78) | def put(self, reqmsg):
method pop (line 97) | def pop(self):
method start (line 111) | def start(self):
class AsyncProcThreadRunner (line 125) | class AsyncProcThreadRunner(threading.Thread):
method __init__ (line 130) | def __init__(self):
method __del__ (line 138) | def __del__(self):
method initialize (line 141) | def initialize(self, queue):
method terminate (line 152) | def terminate(self):
method run (line 161) | def run(self):
class ServantProxyCallback (line 185) | class ServantProxyCallback(object):
method __init__ (line 190) | def __init__(self):
method onDispatch (line 193) | def onDispatch(reqmsg):
FILE: danmu/danmaku/tars/__init__.py
class tarscore (line 28) | class tarscore:
class TarsInputStream (line 29) | class TarsInputStream(TarsInputStream):
class TarsOutputStream (line 32) | class TarsOutputStream(TarsOutputStream):
class TarsUniPacket (line 35) | class TarsUniPacket(TarsUniPacket):
class boolean (line 38) | class boolean(util.boolean):
class int8 (line 41) | class int8(util.int8):
class uint8 (line 44) | class uint8(util.uint8):
class int16 (line 47) | class int16(util.int16):
class uint16 (line 50) | class uint16(util.uint16):
class int32 (line 53) | class int32(util.int32):
class uint32 (line 56) | class uint32(util.uint32):
class int64 (line 59) | class int64(util.int64):
class float (line 62) | class float(util.float):
class double (line 65) | class double(util.double):
class bytes (line 68) | class bytes(util.bytes):
class string (line 71) | class string(util.string):
class struct (line 74) | class struct(util.struct):
method mapclass (line 78) | def mapclass(ktype, vtype): return util.mapclass(ktype, vtype)
method vctclass (line 81) | def vctclass(vtype): return util.vectorclass(vtype)
method printHex (line 84) | def printHex(buff): util.printHex(buff)
FILE: danmu/danmaku/tars/__logger.py
function createLogFile (line 56) | def createLogFile(filename):
function initLog (line 84) | def initLog(logpath, logsize, lognum, loglevel):
FILE: danmu/danmaku/tars/__packet.py
class RequestPacket (line 20) | class RequestPacket(util.struct):
method __init__ (line 24) | def __init__(self):
method writeTo (line 37) | def writeTo(oos, value):
method readFrom (line 50) | def readFrom(ios):
class ResponsePacket (line 71) | class ResponsePacket(util.struct):
method __init__ (line 75) | def __init__(self):
method writeTo (line 85) | def writeTo(oos, value):
method readFrom (line 95) | def readFrom(ios):
FILE: danmu/danmaku/tars/__rpc.py
class Communicator (line 41) | class Communicator:
method __init__ (line 58) | def __init__(self, config={}):
method __del__ (line 71) | def __del__(self):
method initialize (line 74) | def initialize(self):
method terminate (line 102) | def terminate(self):
method parseConnAddr (line 126) | def parseConnAddr(self, connAddr):
method getReactor (line 176) | def getReactor(self):
method getAsyncProc (line 182) | def getAsyncProc(self):
method getProperty (line 188) | def getProperty(self, name, dt_type=str):
method setProperty (line 206) | def setProperty(self, name, value):
method setPropertys (line 222) | def setPropertys(self, propertys):
method updateConfig (line 232) | def updateConfig(self):
method stringToProxy (line 237) | def stringToProxy(self, servantProxy, connAddr):
method handleTimeout (line 265) | def handleTimeout(self):
class ObjectProxy (line 276) | class ObjectProxy:
method __init__ (line 283) | def __init__(self):
method __del__ (line 294) | def __del__(self):
method initialize (line 297) | def initialize(self, comm, connInfo):
method terminate (line 332) | def terminate(self):
method name (line 343) | def name(self):
method timeout (line 362) | def timeout(self):
method getTimeoutQueue (line 370) | def getTimeoutQueue(self):
method handleQueueTimeout (line 378) | def handleQueueTimeout(self):
method invoke (line 387) | def invoke(self, reqmsg):
method popRequest (line 410) | def popRequest(self):
FILE: danmu/danmaku/tars/__servantproxy.py
class ServantProxy (line 37) | class ServantProxy(object):
method __init__ (line 72) | def __init__(self):
method __del__ (line 78) | def __del__(self):
method _initialize (line 81) | def _initialize(self, reactor, obj):
method _terminate (line 98) | def _terminate(self):
method tars_name (line 109) | def tars_name(self):
method tars_timeout (line 117) | def tars_timeout(self):
method tars_ping (line 126) | def tars_ping(self):
method tars_invoke (line 135) | def tars_invoke(self, cPacketType, sFuncName, sBuffer, context, status):
method tars_invoke_async (line 190) | def tars_invoke_async(self, cPacketType, sFuncName, sBuffer,
method __timeout (line 240) | def __timeout(self):
method __invoke (line 248) | def __invoke(self, reqmsg):
method _finished (line 299) | def _finished(self, reqmsg):
method tarsRaiseException (line 315) | def tarsRaiseException(self, errno, desc):
FILE: danmu/danmaku/tars/__tars.py
class BinBuffer (line 21) | class BinBuffer:
method __init__ (line 22) | def __init__(self, buff=bytes()):
method writeBuf (line 26) | def writeBuf(self, buff):
method getBuffer (line 29) | def getBuffer(self):
method length (line 32) | def length(self):
class DataHead (line 36) | class DataHead:
method writeTo (line 53) | def writeTo(buff, tag, vtype):
class TarsOutputStream (line 62) | class TarsOutputStream(object):
method __init__ (line 63) | def __init__(self):
method __writeBoolean (line 66) | def __writeBoolean(self, tag, value):
method __writeInt8 (line 69) | def __writeInt8(self, tag, value):
method __writeInt16 (line 76) | def __writeInt16(self, tag, value):
method __writeInt32 (line 83) | def __writeInt32(self, tag, value):
method __writeInt64 (line 90) | def __writeInt64(self, tag, value):
method __writeFloat (line 97) | def __writeFloat(self, tag, value):
method __writeDouble (line 101) | def __writeDouble(self, tag, value):
method __writeString (line 105) | def __writeString(self, tag, value):
method __writeBytes (line 116) | def __writeBytes(self, tag, value):
method __writeMap (line 124) | def __writeMap(self, coder, tag, value):
method __writeVector (line 131) | def __writeVector(self, coder, tag, value):
method __writeStruct (line 138) | def __writeStruct(self, coder, tag, value):
method write (line 143) | def write(self, coder, tag, value):
method getBuffer (line 172) | def getBuffer(self):
method printHex (line 175) | def printHex(self):
class TarsInputStream (line 179) | class TarsInputStream(object):
method __init__ (line 180) | def __init__(self, buff):
method __peekFrom (line 183) | def __peekFrom(self):
method __readFrom (line 195) | def __readFrom(self):
method __skipToStructEnd (line 200) | def __skipToStructEnd(self):
method __skipField (line 206) | def __skipField(self, p):
method __skipToTag (line 256) | def __skipToTag(self, tag):
method __readBoolean (line 267) | def __readBoolean(self, tag, require, default=None):
method __readInt8 (line 274) | def __readInt8(self, tag, require, default=None):
method __readInt16 (line 292) | def __readInt16(self, tag, require, default=None):
method __readInt32 (line 315) | def __readInt32(self, tag, require, default=None):
method __readInt64 (line 343) | def __readInt64(self, tag, require, default=None):
method __readString (line 376) | def __readString(self, tag, require, default=None):
method __readBytes (line 403) | def __readBytes(self, tag, require, default=None):
method __readFloat (line 424) | def __readFloat(self, tag, require, default=None):
method __readDouble (line 442) | def __readDouble(self, tag, require, default=None):
method __readStruct (line 465) | def __readStruct(self, coder, tag, require, default=None):
method __readMap (line 479) | def __readMap(self, coder, tag, require, default=None):
method __readVector (line 498) | def __readVector(self, coder, tag, require, default=None):
method read (line 516) | def read(self, coder, tag, require, default=None):
method printHex (line 545) | def printHex(self):
FILE: danmu/danmaku/tars/__trans.py
class EndPointInfo (line 35) | class EndPointInfo:
method __init__ (line 42) | def __init__(self,
method getIp (line 56) | def getIp(self):
method getPort (line 59) | def getPort(self):
method getConnType (line 62) | def getConnType(self):
method getWeightType (line 69) | def getWeightType(self):
method getWeight (line 72) | def getWeight(self):
method __str__ (line 75) | def __str__(self):
class Transceiver (line 79) | class Transceiver:
method __init__ (line 87) | def __init__(self, endPointInfo):
method __del__ (line 97) | def __del__(self):
method getSock (line 101) | def getSock(self):
method getFd (line 108) | def getFd(self):
method getEndPointInfo (line 119) | def getEndPointInfo(self):
method isValid (line 126) | def isValid(self):
method hasConnected (line 133) | def hasConnected(self):
method isConnFailed (line 140) | def isConnFailed(self):
method isConnecting (line 147) | def isConnecting(self):
method setConnFailed (line 154) | def setConnFailed(self):
method setConnected (line 163) | def setConnected(self):
method close (line 172) | def close(self):
method writeToSendBuf (line 190) | def writeToSendBuf(self, msg):
method recv (line 201) | def recv(self, bufsize, flag=0):
method send (line 204) | def send(self, buf, flag=0):
method doResponse (line 207) | def doResponse(self):
method doRequest (line 210) | def doRequest(self):
method reInit (line 235) | def reInit(self):
class TcpTransceiver (line 264) | class TcpTransceiver(Transceiver):
method send (line 269) | def send(self, buf, flag=0):
method recv (line 296) | def recv(self, bufsize, flag=0):
method doResponse (line 328) | def doResponse(self):
class FDReactor (line 364) | class FDReactor(threading.Thread):
method __init__ (line 369) | def __init__(self):
method __del__ (line 379) | def __del__(self):
method initialize (line 386) | def initialize(self):
method terminate (line 400) | def terminate(self):
method handle (line 411) | def handle(self, adapter, events):
method handleExcept (line 454) | def handleExcept(self):
method handleInput (line 457) | def handleInput(self, adapter):
method handleOutput (line 476) | def handleOutput(self, adapter):
method notify (line 490) | def notify(self, adapter):
method registerAdapter (line 504) | def registerAdapter(self, adapter, events):
method unregisterAdapter (line 523) | def unregisterAdapter(self, adapter):
method run (line 535) | def run(self):
FILE: danmu/danmaku/tars/__tup.py
class TarsUniPacket (line 24) | class TarsUniPacket(object):
method __init__ (line 25) | def __init__(self):
method servant (line 40) | def servant(self):
method servant (line 44) | def servant(self, value):
method func (line 48) | def func(self):
method func (line 52) | def func(self, value):
method requestid (line 56) | def requestid(self):
method requestid (line 60) | def requestid(self, value):
method result_code (line 64) | def result_code(self):
method result_desc (line 71) | def result_desc(self):
method put (line 77) | def put(self, vtype, name, value):
method get (line 82) | def get(self, vtype, name):
method encode (line 95) | def encode(self):
method decode (line 107) | def decode(self, buf):
method clear (line 114) | def clear(self):
method haskey (line 117) | def haskey(self, name):
FILE: danmu/danmaku/tars/__util.py
class util (line 27) | class util:
method printHex (line 29) | def printHex(buff):
method mapclass (line 40) | def mapclass(ktype, vtype):
method vectorclass (line 51) | def vectorclass(vtype):
class boolean (line 59) | class boolean:
class int8 (line 63) | class int8:
class uint8 (line 67) | class uint8:
class int16 (line 71) | class int16:
class uint16 (line 75) | class uint16:
class int32 (line 79) | class int32:
class uint32 (line 83) | class uint32:
class int64 (line 87) | class int64:
class float (line 91) | class float:
class double (line 95) | class double:
class bytes (line 99) | class bytes:
class string (line 103) | class string:
class struct (line 107) | class struct:
function xml2dict (line 111) | def xml2dict(node, dic={}):
function configParse (line 128) | def configParse(filename):
class NewLock (line 140) | class NewLock(object):
method __init__ (line 141) | def __init__(self):
method newAcquire (line 147) | def newAcquire(self):
method newRelease (line 155) | def newRelease(self):
class LockGuard (line 163) | class LockGuard(object):
method __init__ (line 164) | def __init__(self, newLock):
method __del__ (line 168) | def __del__(self):
class ConsistentHashNew (line 172) | class ConsistentHashNew(object):
method __init__ (line 173) | def __init__(self, nodes=None, nodeNumber=3):
method nodes (line 188) | def nodes(self):
method nodes (line 192) | def nodes(self, value):
method addNode (line 195) | def addNode(self, node):
method removeNode (line 210) | def removeNode(self, node):
method getNode (line 222) | def getNode(self, key):
method __genKey (line 245) | def __genKey(self, keyStr):
FILE: danmu/danmaku/tars/core.py
class tarscore (line 28) | class tarscore:
class TarsInputStream (line 29) | class TarsInputStream(TarsInputStream):
class TarsOutputStream (line 32) | class TarsOutputStream(TarsOutputStream):
class TarsUniPacket (line 35) | class TarsUniPacket(TarsUniPacket):
class boolean (line 38) | class boolean(util.boolean):
class int8 (line 41) | class int8(util.int8):
class uint8 (line 44) | class uint8(util.uint8):
class int16 (line 47) | class int16(util.int16):
class uint16 (line 50) | class uint16(util.uint16):
class int32 (line 53) | class int32(util.int32):
class uint32 (line 56) | class uint32(util.uint32):
class int64 (line 59) | class int64(util.int64):
class float (line 62) | class float(util.float):
class double (line 65) | class double(util.double):
class bytes (line 68) | class bytes(util.bytes):
class string (line 71) | class string(util.string):
class struct (line 74) | class struct(util.struct):
method mapclass (line 78) | def mapclass(ktype, vtype): return util.mapclass(ktype, vtype)
method vctclass (line 81) | def vctclass(vtype): return util.vectorclass(vtype)
method printHex (line 84) | def printHex(buff): util.printHex(buff)
FILE: danmu/danmaku/tars/exception.py
class TarsException (line 16) | class TarsException(Exception): pass
class TarsTarsDecodeRequireNotExist (line 18) | class TarsTarsDecodeRequireNotExist(TarsException): pass
class TarsTarsDecodeMismatch (line 19) | class TarsTarsDecodeMismatch(TarsException): pass
class TarsTarsDecodeInvalidValue (line 20) | class TarsTarsDecodeInvalidValue(TarsException): pass
class TarsTarsUnsupportType (line 21) | class TarsTarsUnsupportType(TarsException): pass
class TarsNetConnectException (line 23) | class TarsNetConnectException(TarsException): pass
class TarsNetConnectLostException (line 24) | class TarsNetConnectLostException(TarsException): pass
class TarsNetSocketException (line 25) | class TarsNetSocketException(TarsException): pass
class TarsProxyDecodeException (line 26) | class TarsProxyDecodeException(TarsException): pass
class TarsProxyEncodeException (line 27) | class TarsProxyEncodeException(TarsException): pass
class TarsServerEncodeException (line 28) | class TarsServerEncodeException(TarsException): pass
class TarsServerDecodeException (line 29) | class TarsServerDecodeException(TarsException): pass
class TarsServerNoFuncException (line 30) | class TarsServerNoFuncException(TarsException): pass
class TarsServerNoServantException (line 31) | class TarsServerNoServantException(TarsException): pass
class TarsServerQueueTimeoutException (line 32) | class TarsServerQueueTimeoutException(TarsException): pass
class TarsServerUnknownException (line 33) | class TarsServerUnknownException(TarsException): pass
class TarsSyncCallTimeoutException (line 34) | class TarsSyncCallTimeoutException(TarsException): pass
class TarsRegistryException (line 35) | class TarsRegistryException(TarsException): pass
class TarsServerResetGridException (line 36) | class TarsServerResetGridException(TarsException): pass
FILE: danmu/danmaku/yqs.py
class YiQiShan (line 11) | class YiQiShan:
method __init__ (line 14) | def __init__(self, rid):
method des_encode (line 30) | def des_encode(t, key):
method des_decode (line 37) | def des_decode(t, key):
method startup (line 45) | def startup(self):
method tcphelloreq (line 50) | def tcphelloreq(self):
method enterroomreq (line 55) | def enterroomreq(self):
method roomhelloreq (line 61) | def roomhelloreq(self):
method pack (line 67) | def pack(self, paylod_type):
method unpack (line 98) | def unpack(self, data):
FILE: danmu/danmaku/zhanqi.py
class ZhanQi (line 6) | class ZhanQi:
method get_ws_info (line 12) | async def get_ws_info(url):
method decode_msg (line 45) | def decode_msg(message):
FILE: danmu/main.py
function printer (line 9) | async def printer(q):
function main (line 16) | async def main(url):
FILE: douyu.py
class DouYu (line 11) | class DouYu:
method __init__ (line 23) | def __init__(self, rid):
method md5 (line 43) | def md5(data):
method get_pre (line 46) | def get_pre(self):
method get_js (line 67) | def get_js(self):
method get_pc_js (line 90) | def get_pc_js(self, cdn='ws-h5', rate=0):
method get_real_url (line 119) | def get_real_url(self):
FILE: egame.py
class EGame (line 8) | class EGame:
method __init__ (line 10) | def __init__(self, rid):
method get_real_url (line 13) | def get_real_url(self):
function get_real_url (line 44) | def get_real_url(rid):
FILE: fengbolive.py
class FengBo (line 11) | class FengBo:
method __init__ (line 13) | def __init__(self, rid):
method get_real_url (line 16) | def get_real_url(self):
function get_real_url (line 43) | def get_real_url(rid):
FILE: hongle.py
class HongLe (line 13) | class HongLe:
method __init__ (line 15) | def __init__(self, rid):
method get_real_url (line 18) | def get_real_url(self):
function get_real_url (line 78) | def get_real_url(rid):
FILE: huajiao.py
class HuaJiao (line 7) | class HuaJiao:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 15) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: huomao.py
class HuoMao (line 12) | class HuoMao:
method __init__ (line 14) | def __init__(self, rid):
method get_videoids (line 23) | def get_videoids(rid):
method get_token (line 33) | def get_token(videoids):
method get_real_url (line 38) | def get_real_url(self):
function get_real_url (line 64) | def get_real_url(rid):
FILE: huya.py
function live (line 11) | def live(e):
function get_real_url (line 31) | def get_real_url(room_id):
FILE: imifun.py
class IMFun (line 7) | class IMFun:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 27) | def get_real_url(rid):
FILE: immomo.py
class ImMoMo (line 4) | class ImMoMo:
method __init__ (line 5) | def __init__(self, rid):
method get_real_url (line 8) | def get_real_url(self):
function get_real_url (line 31) | def get_real_url(rid):
FILE: inke.py
class InKe (line 6) | class InKe:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: iqiyi.js
function cmd5x (line 1) | function cmd5x(ba) {
function cmd5xt (line 6219) | function cmd5xt(au, aw, ap) {
FILE: iqiyi.py
class IQiYi (line 13) | class IQiYi:
method __init__ (line 25) | def __init__(self, rid):
method get_real_url (line 29) | def get_real_url(self):
function get_real_url (line 75) | def get_real_url(rid):
FILE: ixigua.py
class IXiGua (line 7) | class IXiGua:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: jd.py
class JD (line 7) | class JD:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 35) | def get_real_url(rid):
FILE: kbs.py
class KBS (line 14) | class KBS:
method __init__ (line 22) | def __init__(self, rid):
method get_real_url (line 31) | def get_real_url(self):
function get_real_url (line 74) | def get_real_url(rid):
FILE: kk.py
class KK (line 5) | class KK:
method __init__ (line 7) | def __init__(self, rid):
method get_real_url (line 16) | def get_real_url(self):
function get_real_url (line 34) | def get_real_url(rid):
FILE: kuaishou.py
class KuaiShou (line 10) | class KuaiShou:
method __init__ (line 12) | def __init__(self, rid):
method get_real_url (line 15) | def get_real_url(self):
function get_real_url (line 33) | def get_real_url(rid):
FILE: kugou.py
class KuGou (line 6) | class KuGou:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 18) | def get_real_url(self):
function get_real_url (line 58) | def get_real_url(rid):
FILE: kuwo.py
class KuWo (line 7) | class KuWo:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 14) | def get_real_url(self):
function get_real_url (line 44) | def get_real_url(rid):
FILE: laifeng.py
class LaiFeng (line 9) | class LaiFeng:
method __init__ (line 11) | def __init__(self, rid):
method get_real_url (line 20) | def get_real_url(self):
function get_real_url (line 35) | def get_real_url(rid):
FILE: lehai.py
class LeHai (line 10) | class LeHai:
method __init__ (line 12) | def __init__(self, rid):
method get_real_url (line 15) | def get_real_url(self):
function get_real_url (line 43) | def get_real_url(rid):
FILE: liveu.py
class liveU (line 10) | class liveU:
method __init__ (line 12) | def __init__(self, rid):
method get_real_url (line 15) | def get_real_url(self):
function get_real_url (line 23) | def get_real_url(rid):
FILE: longzhu.py
class LongZhu (line 7) | class LongZhu:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 18) | def get_real_url(self):
function get_real_url (line 30) | def get_real_url(rid):
FILE: look.py
function aes_encrypt (line 27) | def aes_encrypt(text, seckey):
function create_secret_key (line 51) | def create_secret_key(size):
function rsa_encrypt (line 61) | def rsa_encrypt(text, pub_key, mod):
function encrypted_request (line 68) | def encrypted_request(text):
class Look (line 79) | class Look:
method __init__ (line 81) | def __init__(self, rid):
method get_real_url (line 84) | def get_real_url(self):
function get_real_url (line 94) | def get_real_url(rid):
FILE: maoer.py
class MAOER (line 12) | class MAOER:
method __init__ (line 14) | def __init__(self, rid):
method get_real_url (line 17) | def get_real_url(self):
function get_real_url (line 36) | def get_real_url(rid):
FILE: migu.py
class MiGu (line 11) | class MiGu:
method __init__ (line 19) | def __init__(self, rid, rate=3):
method get_real_url (line 28) | def get_real_url(self):
method calcu (line 64) | def calcu(pre_url):
function get_real_url (line 104) | def get_real_url(rid):
FILE: now.py
class Now (line 6) | class Now:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: pps.py
class PPS (line 8) | class PPS:
method __init__ (line 10) | def __init__(self, rid):
method get_real_url (line 15) | def get_real_url(self):
function get_real_url (line 46) | def get_real_url(rid):
FILE: ppsport.py
function des_encrypt (line 18) | def des_encrypt(text, key, iv):
function rsa_encrypt (line 32) | def rsa_encrypt(text):
function encrypt (line 50) | def encrypt(params):
function aes_decrypt (line 69) | def aes_decrypt(text, key):
class PPSport (line 86) | class PPSport:
method __init__ (line 97) | def __init__(self, rid):
method get_real_url (line 125) | def get_real_url(self):
function get_real_url (line 198) | def get_real_url(rid):
FILE: qf.py
class QF (line 8) | class QF:
method __init__ (line 10) | def __init__(self, rid):
method get_real_url (line 19) | def get_real_url(self):
function get_real_url (line 33) | def get_real_url(rid):
FILE: qie.py
class ESport (line 7) | class ESport:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: renren.py
class RenRen (line 7) | class RenRen:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 19) | def get_real_url(self):
function get_real_url (line 29) | def get_real_url(rid):
FILE: showself.py
class ShowSelf (line 9) | class ShowSelf:
method __init__ (line 11) | def __init__(self, rid):
method get_real_url (line 19) | def get_real_url(self):
function get_real_url (line 57) | def get_real_url(rid):
FILE: sports_iqiyi.py
class sIQiYi (line 19) | class sIQiYi:
method __init__ (line 21) | def __init__(self, rid):
method decodeurl (line 31) | def decodeurl(self):
method get_real_url (line 66) | def get_real_url(self):
function get_real_url (line 130) | def get_real_url(rid):
FILE: tiktok.py
class TikTok (line 12) | class TikTok:
method __init__ (line 14) | def __init__(self, rid):
method get_real_url (line 17) | def get_real_url(self):
function get_real_url (line 31) | def get_real_url(rid):
FILE: tuho.py
class TuHo (line 7) | class TuHo:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 27) | def get_real_url(rid):
FILE: twitch.py
class Twitch (line 15) | class Twitch:
method __init__ (line 17) | def __init__(self, rid):
method get_client_id (line 23) | def get_client_id(self):
method get_sig_token (line 31) | def get_sig_token(self):
method get_real_url (line 63) | def get_real_url(self):
function get_real_url (line 82) | def get_real_url(rid):
FILE: v6cn.py
class V6CN (line 7) | class V6CN:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 12) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: wali.py
class WaLi (line 6) | class WaLi:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 23) | def get_real_url(rid):
FILE: woxiu.py
class WoXiu (line 6) | class WoXiu:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 31) | def get_real_url(rid):
FILE: xunlei.py
class XunLei (line 9) | class XunLei:
method __init__ (line 11) | def __init__(self, rid):
method get_real_url (line 14) | def get_real_url(self):
function get_real_url (line 45) | def get_real_url(rid):
FILE: yangshipin.py
function aes_encrypt (line 22) | def aes_encrypt(text):
class YangShiPin (line 36) | class YangShiPin:
method __init__ (line 38) | def __init__(self, rid):
method get_real_url (line 91) | def get_real_url(self):
function get_real_url (line 106) | def get_real_url(rid):
FILE: yizhibo.py
class YiZhiBo (line 7) | class YiZhiBo:
method __init__ (line 9) | def __init__(self, rid):
method get_real_url (line 18) | def get_real_url(self):
function get_real_url (line 30) | def get_real_url(rid):
FILE: youku.py
class YouKu (line 13) | class YouKu:
method __init__ (line 15) | def __init__(self, rid):
method get_real_url (line 24) | def get_real_url(self):
function get_real_url (line 46) | def get_real_url(rid):
FILE: yuanbobo.py
class YuanBoBo (line 6) | class YuanBoBo:
method __init__ (line 8) | def __init__(self, rid):
method get_real_url (line 11) | def get_real_url(self):
function get_real_url (line 26) | def get_real_url(rid):
FILE: yy.py
class YY (line 9) | class YY:
method __init__ (line 11) | def __init__(self, rid):
method get_real_url (line 14) | def get_real_url(self):
function get_real_url (line 39) | def get_real_url(rid):
FILE: zhanqi.py
class ZhanQi (line 10) | class ZhanQi:
method __init__ (line 12) | def __init__(self, rid):
method get_real_url (line 23) | def get_real_url(self):
function get_real_url (line 63) | def get_real_url(rid):
FILE: zhibotv.py
class ZhiBotv (line 10) | class ZhiBotv:
method __init__ (line 12) | def __init__(self, rid):
method get_real_url (line 34) | def get_real_url(self):
function get_real_url (line 52) | def get_real_url(rid):
Condensed preview — 114 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,081K chars).
[
{
"path": ".gitattributes",
"chars": 30,
"preview": "*.js linguist-language=python\n"
},
{
"path": ".gitignore",
"chars": 1702,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n.idea/*\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution /"
},
{
"path": "173.py",
"chars": 838,
"preview": "# 艺气山直播:http://www.173.com/room/category?categoryId=11\n\nimport requests\n\n\nclass YQS:\n\n def __init__(self, rid):\n "
},
{
"path": "17live.py",
"chars": 1223,
"preview": "# 获取17直播的真实流媒体地址,可能需要挂国外代理才行。\n# 17直播间链接形式:https://17.live/live/276480\n\nimport requests\n\n\nclass Live17:\n\n def __init__"
},
{
"path": "2cq.py",
"chars": 858,
"preview": "# 棉花糖直播:https://www.2cq.com/rank\n\nimport requests\n\n\nclass MHT:\n\n def __init__(self, rid):\n self.rid = rid\n\n "
},
{
"path": "51lm.py",
"chars": 1582,
"preview": "# 羚萌直播:https://live.51lm.tv/programs/Hot\n\nfrom urllib.parse import urlencode\nimport requests\nimport time\nimport hashlib\n"
},
{
"path": "95xiu.py",
"chars": 888,
"preview": "# 95秀:http://www.95.cn/\n\nimport requests\nimport re\n\n\nclass JWXiu:\n\n def __init__(self, rid):\n self.rid = rid\n\n"
},
{
"path": "9xiu.py",
"chars": 1143,
"preview": "# 九秀直播:https://www.9xiu.com/other/classify?tag=all&index=all\n\nimport requests\n\n\nclass JXiu:\n\n def __init__(self, rid)"
},
{
"path": "LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "README.md",
"chars": 3400,
"preview": "# Real-Url\n\n## 说明\n\n没想到还有这么多朋友发 issue 和邮件咨询问题,感谢大家的支持🎈!因为有时很忙,回复和提交代码的周期会有点长,抱歉哦😋\n\n这个仓库存放的是:获取一些直播平台真实流媒体地址(直播源)和弹幕的 Pyth"
},
{
"path": "acfun.py",
"chars": 1773,
"preview": "# AcFun直播:https://live.acfun.cn/\n# 默认最高画质\n\nimport requests\nimport json\n\n\nclass AcFun:\n\n def __init__(self, rid):\n "
},
{
"path": "bigo.py",
"chars": 840,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/8/15 16:00\n# @Project: my-spiders\n# @Author: wbt5\n# @Blog: https://wbt5.com\n# BIGO"
},
{
"path": "bilibili.py",
"chars": 2852,
"preview": "# 获取哔哩哔哩直播的真实流媒体地址,默认获取直播间提供的最高画质\n# qn=150高清\n# qn=250超清\n# qn=400蓝光\n# qn=10000原画\nimport requests\n\n\nclass BiliBili:\n\n d"
},
{
"path": "cc.py",
"chars": 1009,
"preview": "# 获取网易CC的真实流媒体地址。\n# 默认为最高画质\n\nimport requests\n\n\nclass CC:\n\n def __init__(self, rid):\n self.rid = rid\n\n def g"
},
{
"path": "changyou.py",
"chars": 1282,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/1 17:40\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport j"
},
{
"path": "danmu/danmaku/__init__.py",
"chars": 8000,
"preview": "import asyncio\nimport re\n\nimport aiohttp\n\nfrom .yqs import YiQiShan\nfrom .acfun import AcFun\nfrom .bilibili import Bilib"
},
{
"path": "danmu/danmaku/acfun.proto",
"chars": 11052,
"preview": "syntax = \"proto2\";\npackage AcFunPack;\n\nmessage RegisterRequest {\n optional AppInfo appInfo = 1;\n optional DeviceIn"
},
{
"path": "danmu/danmaku/acfun.py",
"chars": 10441,
"preview": "# AcFun直播现在属于快手旗下了,其JS源码中也可以看到很多名为'kuaishou'的变量,所以和快手直播弹幕的获取方法有点类似,都使用了protobuf压缩数据。\n# 在mplayer-live.xxx.js中可以看到所有websoc"
},
{
"path": "danmu/danmaku/acfun_pb2.py",
"chars": 171028,
"preview": "# -*- coding: utf-8 -*-\n# Generated by the protocol buffer compiler. DO NOT EDIT!\n# source: acfun.proto\n\nfrom google.pr"
},
{
"path": "danmu/danmaku/bilibili.py",
"chars": 4260,
"preview": "import json\nimport random\nfrom struct import pack, unpack\nimport aiohttp\nimport zlib\n\n\nclass Bilibili:\n wss_url = 'ws"
},
{
"path": "danmu/danmaku/cc.py",
"chars": 9052,
"preview": "import aiohttp\nimport time\nimport uuid\nimport struct\nimport math\nimport zlib\nimport json\nimport re\n\n\nclass CC_Init:\n "
},
{
"path": "danmu/danmaku/douyu.py",
"chars": 1838,
"preview": "import re\nimport json\nimport aiohttp\nfrom struct import pack\n\n\nclass Douyu:\n wss_url = 'wss://danmuproxy.douyu.com:85"
},
{
"path": "danmu/danmaku/egame.py",
"chars": 10084,
"preview": "import aiohttp\nimport struct\nimport json\nimport re\n\n\nclass eGame:\n heartbeat = b'\\x00\\x00\\x00\\x12\\x00\\x12\\x00\\x01\\x00"
},
{
"path": "danmu/danmaku/huajiao.proto",
"chars": 4508,
"preview": "syntax = \"proto2\";\npackage HuaJiaoPack;\n\nmessage Message {\n required uint32 msgid = 1;\n required uint64 sn = 2;\n "
},
{
"path": "danmu/danmaku/huajiao.py",
"chars": 7340,
"preview": "from . import huajiao_pb2 as pb\nimport struct\nimport hashlib\nimport random\nimport string\nimport json\nimport time\n\n\nclass"
},
{
"path": "danmu/danmaku/huajiao_pb2.py",
"chars": 73582,
"preview": "# -*- coding: utf-8 -*-\n# Generated by the protocol buffer compiler. DO NOT EDIT!\n# source: huajiao.proto\n\nfrom google."
},
{
"path": "danmu/danmaku/huomao.py",
"chars": 2090,
"preview": "import struct\nimport aiohttp\nimport json\n\n\nclass HuoMao:\n heartbeat = b'\\x00\\x00\\x00\\x10\\x00\\x10\\x00\\x01\\x00\\x00\\x00\\"
},
{
"path": "danmu/danmaku/huya.py",
"chars": 3197,
"preview": "import re\r\nimport aiohttp\r\nfrom .tars import tarscore\r\n\r\n\r\nclass Huya:\r\n wss_url = 'wss://cdnws.api.huya.com/'\r\n h"
},
{
"path": "danmu/danmaku/inke.py",
"chars": 1302,
"preview": "import aiohttp\nimport re\nimport time\nimport json\n\n\nclass Inke:\n heartbeat = None\n\n @staticmethod\n async def get"
},
{
"path": "danmu/danmaku/kuaishou.proto",
"chars": 5342,
"preview": "syntax = \"proto2\";\npackage KuaiShouPack;\n\nmessage CSWebHeartbeat {\n\toptional uint64 timestamp = 1;\n}\n\nmessage SocketMess"
},
{
"path": "danmu/danmaku/kuaishou.py",
"chars": 5006,
"preview": "from . import kuaishou_pb2 as pb\nimport aiohttp\nimport re\nimport json\nimport time\nimport random\n\n\nclass KuaiShou:\n he"
},
{
"path": "danmu/danmaku/kuaishou_pb2.py",
"chars": 67617,
"preview": "# -*- coding: utf-8 -*-\n# Generated by the protocol buffer compiler. DO NOT EDIT!\n# source: kuaishou.proto\n\nfrom google"
},
{
"path": "danmu/danmaku/kugou.proto",
"chars": 5947,
"preview": "syntax = \"proto2\";\npackage KuGouPack;\n\nmessage LoginRequest {\n optional int32 cmd = 1;\n optional int32 roomid = 2;"
},
{
"path": "danmu/danmaku/kugou.py",
"chars": 5900,
"preview": "from . import kugou_pb2 as pb\nimport struct\nimport requests\n\n\nclass InitKugou:\n\n def __init__(self):\n self.MAG"
},
{
"path": "danmu/danmaku/kugou_pb2.py",
"chars": 97101,
"preview": "# -*- coding: utf-8 -*-\n# Generated by the protocol buffer compiler. DO NOT EDIT!\n# source: kugou.proto\n\nfrom google.pr"
},
{
"path": "danmu/danmaku/laifeng.py",
"chars": 1868,
"preview": "import aiohttp\nimport json\nimport time\n\n\nclass LaiFeng:\n heartbeat = '2::'\n heartbeatInterval = 30\n\n @staticmet"
},
{
"path": "danmu/danmaku/longzhu.py",
"chars": 1329,
"preview": "import json\nimport aiohttp\nimport re\n\n\nclass LongZhu:\n heartbeat = None\n\n @staticmethod\n async def get_ws_info("
},
{
"path": "danmu/danmaku/look.py",
"chars": 4134,
"preview": "from Crypto.Cipher import AES\nfrom Crypto.Util.Padding import pad\nimport aiohttp\nimport json\nimport base64\n\n\nclass Look:"
},
{
"path": "danmu/danmaku/pps.py",
"chars": 2485,
"preview": "import hashlib\nimport urllib.parse\nimport json\n\n\nclass QiXiu:\n heartbeat = None\n\n @staticmethod\n async def get_"
},
{
"path": "danmu/danmaku/qf.py",
"chars": 2352,
"preview": "import aiohttp\nimport json\nimport time\n\n\nclass QF:\n heartbeat = '2::'\n heartbeatInterval = 30\n\n @staticmethod\n "
},
{
"path": "danmu/danmaku/tars/EndpointF.py",
"chars": 2795,
"preview": "# Tencent is pleased to support the open source community by making Tars available.\n#\n# Copyright (C) 2016THL A29 Limite"
},
{
"path": "danmu/danmaku/tars/QueryF.py",
"chars": 11800,
"preview": "# Tencent is pleased to support the open source community by making Tars available.\n#\n# Copyright (C) 2016THL A29 Limite"
},
{
"path": "danmu/danmaku/tars/__TimeoutQueue.py",
"chars": 7713,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# filename: __timeQueue.py\n\n# Tencent is pleased to support the open sourc"
},
{
"path": "danmu/danmaku/tars/__adapterproxy.py",
"chars": 24619,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# filename: __adapterproxymanager.py_compiler\n\n# Tencent is pleased to sup"
},
{
"path": "danmu/danmaku/tars/__async.py",
"chars": 5475,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# filename: __rpc.py\n\n# Tencent is pleased to support the open source comm"
},
{
"path": "danmu/danmaku/tars/__init__.py",
"chars": 1887,
"preview": "#! /usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\n# Tencent is pleased to support the open source community by making Tar"
},
{
"path": "danmu/danmaku/tars/__logger.py",
"chars": 3524,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n# filename: __logger.py\n\n# Tencent is pleased to support the open source "
},
{
"path": "danmu/danmaku/tars/__packet.py",
"chars": 4124,
"preview": "# Tencent is pleased to support the open source community by making Tars available.\n#\n# Copyright (C) 2016THL A29 Limite"
},
{
"path": "danmu/danmaku/tars/__rpc.py",
"chars": 12801,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# filename: __rpc.py\n\n# Tencent is pleased to support the open source comm"
},
{
"path": "danmu/danmaku/tars/__servantproxy.py",
"chars": 11571,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# filename: __servantproxy.py\n\n# Tencent is pleased to support the open so"
},
{
"path": "danmu/danmaku/tars/__tars.py",
"chars": 21128,
"preview": "# Tencent is pleased to support the open source community by making Tars available.\n#\n# Copyright (C) 2016THL A29 Limite"
},
{
"path": "danmu/danmaku/tars/__trans.py",
"chars": 16011,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# filename: __trans.py\n\n# Tencent is pleased to support the open source co"
},
{
"path": "danmu/danmaku/tars/__tup.py",
"chars": 3529,
"preview": "# Tencent is pleased to support the open source community by making Tars available.\n#\n# Copyright (C) 2016THL A29 Limite"
},
{
"path": "danmu/danmaku/tars/__util.py",
"chars": 6753,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n# Tencent is pleased to support the open source community by making Tars "
},
{
"path": "danmu/danmaku/tars/core.py",
"chars": 2010,
"preview": "#! /usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\n# Tencent is pleased to support the open source community by making Tar"
},
{
"path": "danmu/danmaku/tars/exception.py",
"chars": 1808,
"preview": "# Tencent is pleased to support the open source community by making Tars available.\n#\n# Copyright (C) 2016THL A29 Limite"
},
{
"path": "danmu/danmaku/tars/tars/EndpointF.tars",
"chars": 543,
"preview": "\nmodule register\n{\n /**\n * ˿Ϣ\n */\n struct EndpointF\n {\n 0 require string host;\n 1 require"
},
{
"path": "danmu/danmaku/tars/tars/QueryF.tars",
"chars": 1937,
"preview": "#include \"EndpointF.tars\"\n\nmodule register\n{\n /** \n * ȡendpointqueryӿ\n */\n\n interface QueryF\n {\n "
},
{
"path": "danmu/danmaku/tars/tars/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "danmu/danmaku/yqs.proto",
"chars": 3566,
"preview": "syntax = \"proto2\";\npackage YiQishanPack;\n\nmessage CSHead {\n optional uint32 command = 1;\n optional uint32 subcmd ="
},
{
"path": "danmu/danmaku/yqs.py",
"chars": 4176,
"preview": "import binascii\nimport struct\n\nimport requests\nfrom Crypto.Cipher import DES\nfrom Crypto.Util.Padding import pad\n\nfrom ."
},
{
"path": "danmu/danmaku/yqs_pb2.py",
"chars": 54310,
"preview": "# -*- coding: utf-8 -*-\n# Generated by the protocol buffer compiler. DO NOT EDIT!\n# source: yqs.proto\n\nfrom google.prot"
},
{
"path": "danmu/danmaku/zhanqi.py",
"chars": 2126,
"preview": "import json\nimport struct\nimport aiohttp\n\n\nclass ZhanQi:\n heartbeat = b'\\xbb\\xcc\\x00\\x00\\x00\\x00\\x15\\x00\\x00\\x00\\x10\\"
},
{
"path": "danmu/main.py",
"chars": 1216,
"preview": "# 部分弹幕功能代码来自项目:https://github.com/IsoaSFlus/danmaku,感谢大佬\n# 快手弹幕代码来源及思路:https://github.com/py-wuhao/ks_barrage,感谢大佬\n# 仅抓取"
},
{
"path": "douyin.py",
"chars": 1459,
"preview": "import re\nimport sys\n\nimport requests\n\nDEBUG = False\n\nheaders = {\n 'authority': 'v.douyin.com',\n 'user-agent': 'Mo"
},
{
"path": "douyu.py",
"chars": 4447,
"preview": "# 获取斗鱼直播间的真实流媒体地址,默认最高画质\n# 使用 https://github.com/wbt5/real-url/issues/185 中两位大佬@wjxgzz @4bbu6j5885o3gpv6ss8找到的的CDN,在此感谢!"
},
{
"path": "egame.py",
"chars": 1692,
"preview": "# 获取企鹅电竞的真实流媒体地址。\n# 默认画质为超清\n\nimport requests\nimport re\n\n\nclass EGame:\n\n def __init__(self, rid):\n self.rid = r"
},
{
"path": "fengbolive.py",
"chars": 1460,
"preview": "# 新浪疯播直播:http://www.fengbolive.com/list?type=hot\n# 链接样式:http://www.fengbolive.com/live/88057518\n\nfrom Crypto.Cipher impo"
},
{
"path": "hongle.py",
"chars": 2758,
"preview": "# 红人直播:https://www.hongle.tv/\n# 该平台需登陆,下面代码中已集成一个账号的登陆方式;\n# 如登陆信息过期,可用自己的账号登陆后,查找浏览器Local Storage中的hrtk字段,替换代码中的accessto"
},
{
"path": "huajiao.py",
"chars": 908,
"preview": "# 获取花椒直播的真实流媒体地址。\n\nimport requests\nimport time\n\n\nclass HuaJiao:\n\n def __init__(self, rid):\n self.rid = rid\n "
},
{
"path": "huomao.py",
"chars": 2446,
"preview": "# 获取火猫直播的真实流媒体地址,默认为最高画质.\n# 获取的流媒体地址如:http://live-lx-hdl.huomaotv.cn/live/qvCESZ?t=1573928152&r=377789475848&stream=qvCE"
},
{
"path": "huya.py",
"chars": 1743,
"preview": "# 获取虎牙直播的真实流媒体地址。\n\nimport requests\nimport re\nimport base64\nimport urllib.parse\nimport hashlib\nimport time\n\n\ndef live(e):"
},
{
"path": "imifun.py",
"chars": 941,
"preview": "# 艾米直播:https://www.imifun.com/\n\nimport requests\nimport re\n\n\nclass IMFun:\n\n def __init__(self, rid):\n self.rid "
},
{
"path": "immomo.py",
"chars": 960,
"preview": "import requests\n\n\nclass ImMoMo:\n def __init__(self, rid):\n self.rid = rid\n\n def get_real_url(self):\n "
},
{
"path": "inke.py",
"chars": 899,
"preview": "# 获取映客直播的真实流媒体地址。\n\nimport requests\n\n\nclass InKe:\n\n def __init__(self, rid):\n self.rid = rid\n\n def get_real_"
},
{
"path": "iqiyi.js",
"chars": 192430,
"preview": "function cmd5x(ba) {\n if (typeof (ArrayBuffer) == \"undefined\" || typeof (Float64Array) == \"undefined\" || typeof (Uint"
},
{
"path": "iqiyi.py",
"chars": 2267,
"preview": "# 获取爱奇艺直播的真实流媒体地址。\n# iqiyi.js是cmd5x加密函数\n\nimport json\nimport re\nimport time\nimport urllib.parse\n\nimport execjs\nimport req"
},
{
"path": "ixigua.py",
"chars": 918,
"preview": "# 获取西瓜直播的真实流媒体地址。\n\nimport requests\nimport re\n\n\nclass IXiGua:\n\n def __init__(self, rid):\n self.rid = rid\n\n d"
},
{
"path": "jd.py",
"chars": 1190,
"preview": "# 京东直播:https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=1807004&position=0\n\nimport requests\nimport json"
},
{
"path": "kbs.py",
"chars": 2469,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/22 8:02\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport h"
},
{
"path": "kk.py",
"chars": 1229,
"preview": "# KK直播:http://www.kktv5.com/\nimport requests\n\n\nclass KK:\n\n def __init__(self, rid):\n \"\"\"\n KK直播\n "
},
{
"path": "kuaishou.py",
"chars": 1337,
"preview": "# 获取快手直播的真实流媒体地址,默认输出最高画质\n# https://live.kuaishou.com/u/KPL704668133\n# 如获取失败,尝试修改 cookie 中的 did\n\nimport json\nimport re\ni"
},
{
"path": "kugou.py",
"chars": 2181,
"preview": "# 获取酷狗繁星直播的真实流媒体地址,默认最高码率。\n\nimport requests\n\n\nclass KuGou:\n\n def __init__(self, rid):\n \"\"\"\n 酷狗繁星直播\n "
},
{
"path": "kuwo.py",
"chars": 1436,
"preview": "# 酷我聚星直播:http://jx.kuwo.cn/\n\nimport requests\nimport re\n\n\nclass KuWo:\n\n def __init__(self, rid):\n self.rid = ri"
},
{
"path": "laifeng.py",
"chars": 1293,
"preview": "# 获取来疯直播的真实流媒体地址。\n# 来疯直播就是优酷直播的个人主播频道,不同于优酷直播下的轮播台和体育直播。\n# 来疯直播间链接形式:https://v.laifeng.com/8032155\n\nimport requests\nimpo"
},
{
"path": "lehai.py",
"chars": 1571,
"preview": "# 乐嗨直播:https://www.lehaitv.com/\n\nfrom urllib.parse import urlencode\nfrom urllib.parse import unquote\nimport requests\nimp"
},
{
"path": "liveu.py",
"chars": 775,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/8/15 14:09\n# @Project: my-spiders\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimpor"
},
{
"path": "longzhu.py",
"chars": 1025,
"preview": "# 获取龙珠直播的真实流媒体地址,默认最高码率。\n\nimport requests\nimport re\n\n\nclass LongZhu:\n\n def __init__(self, rid):\n \"\"\"\n 龙"
},
{
"path": "look.py",
"chars": 3068,
"preview": "# 获取网易云音乐旗下look直播的真实流媒体地址。\n# look直播间链接形式:https://look.163.com/live?id=73694082\n\n# 以下核心加密解密算法来自:https://github.com/Qinjia"
},
{
"path": "maoer.py",
"chars": 1168,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/1 13:03\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport j"
},
{
"path": "migu.py",
"chars": 3233,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/11/6 10:51\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport "
},
{
"path": "now.py",
"chars": 931,
"preview": "# 获取NOW直播的真实流媒体地址。\n\nimport requests\n\n\nclass Now:\n\n def __init__(self, rid):\n self.rid = rid\n\n def get_real_"
},
{
"path": "pps.py",
"chars": 1688,
"preview": "# 获取PPS奇秀直播的真实流媒体地址。\n\nimport requests\nimport re\nimport time\n\n\nclass PPS:\n\n def __init__(self, rid):\n self.rid "
},
{
"path": "ppsport.py",
"chars": 6601,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/4 15:11\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport b"
},
{
"path": "qf.py",
"chars": 969,
"preview": "# 获取56千帆直播的真实流媒体地址。\n# 千帆直播直播间链接形式:https://qf.56.com/520686\n\nimport requests\nimport re\n\n\nclass QF:\n\n def __init__(self"
},
{
"path": "qie.py",
"chars": 886,
"preview": "# 企鹅体育:https://live.qq.com/directory/all\n\nimport requests\nimport re\n\n\nclass ESport:\n\n def __init__(self, rid):\n "
},
{
"path": "renren.py",
"chars": 885,
"preview": "# 人人直播:http://zhibo.renren.com/\n\nimport requests\nimport re\n\n\nclass RenRen:\n\n def __init__(self, rid):\n \"\"\"\n "
},
{
"path": "requirements.txt",
"chars": 249,
"preview": "aiohttp==3.7.4\nasync-timeout==3.0.1\nattrs==20.2.0\ncertifi==2020.6.20\nchardet==3.0.4\nidna==2.10\nmultidict==4.7.6\nprotobuf"
},
{
"path": "showself.py",
"chars": 2164,
"preview": "# 秀色直播:https://www.showself.com/\n\nfrom urllib.parse import urlencode\nimport requests\nimport time\nimport hashlib\n\n\nclass "
},
{
"path": "sports_iqiyi.py",
"chars": 3775,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/6/19 20:39\n# @Project: my-spiders\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\n\nimpo"
},
{
"path": "tiktok.py",
"chars": 988,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/2 23:23\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport r"
},
{
"path": "tuho.py",
"chars": 901,
"preview": "# 星光直播:https://www.tuho.tv/28545037\n\nimport requests\nimport re\n\n\nclass TuHo:\n\n def __init__(self, rid):\n self."
},
{
"path": "twitch.py",
"chars": 3148,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/2 16:20\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport j"
},
{
"path": "v6cn.py",
"chars": 998,
"preview": "# 获取六间房直播的真实流媒体地址。\n\nimport requests\nimport re\n\n\nclass V6CN:\n\n def __init__(self, rid):\n self.rid = rid\n\n de"
},
{
"path": "wali.py",
"chars": 789,
"preview": "# 小米直播:https://live.wali.com/fe\n\nimport requests\n\n\nclass WaLi:\n\n def __init__(self, rid):\n self.rid = rid\n\n "
},
{
"path": "woxiu.py",
"chars": 1086,
"preview": "# 我秀直播:https://www.woxiu.com/\n\nimport requests\n\n\nclass WoXiu:\n\n def __init__(self, rid):\n self.rid = rid\n\n "
},
{
"path": "xunlei.py",
"chars": 1448,
"preview": "# 迅雷直播:https://live.xunlei.com/global/index.html?id=0\n\nimport requests\nimport hashlib\nimport time\nfrom urllib.parse impo"
},
{
"path": "yangshipin.py",
"chars": 3201,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/3 12:28\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\n# CCTV-1"
},
{
"path": "yizhibo.py",
"chars": 863,
"preview": "# 获取一直播的真实流媒体地址。\n\nimport requests\nimport re\n\n\nclass YiZhiBo:\n\n def __init__(self, rid):\n \"\"\"\n 一直播需要传入直播"
},
{
"path": "youku.py",
"chars": 1807,
"preview": "# 获取@优酷轮播台@的真实流媒体地址。\n# 优酷轮播台是优酷直播live.youku.com下的一个子栏目,轮播一些经典电影电视剧,个人感觉要比其他直播平台影视区的画质要好,\n# 而且没有平台水印和主播自己贴的乱七八糟的字幕遮挡。\n# l"
},
{
"path": "yuanbobo.py",
"chars": 940,
"preview": "# 热猫直播:https://zhibo.yuanbobo.com/\nimport requests\nimport re\n\n\nclass YuanBoBo:\n\n def __init__(self, rid):\n sel"
},
{
"path": "yy.py",
"chars": 1485,
"preview": "# 获取YY直播的真实流媒体地址。https://www.yy.com/1349606469\n# 默认获取最高画质\n\nimport requests\nimport re\nimport json\n\n\nclass YY:\n\n def __"
},
{
"path": "zhanqi.py",
"chars": 2321,
"preview": "# 获取战旗直播(战旗TV)的真实流媒体地址。https://www.zhanqi.tv/lives\n# 默认最高画质\n\nimport json\nimport re\n\nimport requests\n\n\nclass ZhanQi:\n\n "
},
{
"path": "zhibotv.py",
"chars": 1694,
"preview": "# -*- coding: utf-8 -*-\n# @Time: 2021/5/13 20:27\n# @Project: real-url\n# @Author: wbt5\n# @Blog: https://wbt5.com\n\nimport "
}
]
About this extraction
This page contains the full source code of the wbt5/real-url GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 114 files (1012.6 KB), approximately 285.7k tokens, and a symbol index with 768 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.