Welcome to bilibibili-voice's documentation!¶
Install & Usage - 安装和使用说明¶
安装 & 使用¶
安装¶
依赖¶
以下为为必要依赖,需要单独安装。
1. mpv
Mac OS
$ brew install mpv
Ubuntu/Debian
$ (sudo)apt-get install mpv
注解
提示
请自行判定是否要加上``sudo``命令
2. youtube-dl
Mac OS下安装mpv会自动安装youtube-dl
Ubuntu/Debain
$ (sudo)apt-get install youtube-dl
或者
$ (sudo)pip3 install youtube-dl
选项1 通过pip安装¶
$ (sudo)pip3 install bilibili-voice
选项2 通过Git Clone安装¶
$ git clone https://github.com/gogoforit/bilibili-voice
$ cd bilibili-voice
$ python3 setup.py install
注解
注意
如果mpv和youtube-dl安装完毕,还是出现解析错误的话,可以尝试升级mpv和youtube-dl。可能仓库里的软件版本太低,不支持链接解析。
Developer references - 开发人员参考¶
相关模块类¶
bilibilivoice.api - B站数据请求api¶
-
class
bilibilivoice.api.
BiliBiliVoice
[源代码]¶ Bases:
object
解析BiliBili的接口类
各栏目请求的id号
栏目名 id 原创音乐 28 翻唱 31 VOCALOID·UTAU 30 演奏 59 三次元音乐 29 OP/ED/OST 54 音乐选集 130 宅舞 20 三次元舞蹈 154 舞蹈教程 156 单机游戏 17 电子竞技 171 手机游戏 172 网络游戏 65 桌游棋牌 173 GMV 121 音游 136 Mugen 19 趣味科普人文 124 野生技术协会 122 演讲• 公开课 39 星海 96 数码 95 机械 98 汽车 176 搞笑 138 日常 21 美食圈 76 动物圈 75 手工 161 绘画 162 ASMR 175 运动 163 其他 174 鬼畜调教 22 音MAD 26 人力VOCALOID 126 教程演示 127 美妆 157 服饰 158 健身 164 资讯 159 综艺 71 明星 137 Korea 131 影视杂谈 182 影视剪辑 183 短片 85 预告 资讯 184 特摄 86 人文历史 37 科学探索 178 热血军事 179 舌尖上的旅行 180 华语电影 147 欧美电影 145 日本电影 146 其他国家 83 国产剧 185 海外剧 187 歌曲信息的返回格式
{ 'up_name': '叫我BAT', 'aid': '11794042', 'tname': '搜索', 'title': '【神奇女侠】高潮部分【1080P超清片段】' }
-
get_play_total_time
(av_number)[源代码]¶ 获取播放的总时间
参数: av_number -- 播放id号 返回: 总共的播放时间 >>> bilibili = BiliBiliVoice()
>>> a = bilibili.get_play_total_time('17100583')
>>> 210
-
handle_mp3_url
(av_number)[源代码]¶ 处理出唧唧上的mp3的下载地址,其中有两次重定向,然后要通过ref中的一个加密字符串来解析出最终 的下载地址,通过直接执行js代码,来获取出最红mp3的下载地址
参数: av_number -- 想要下载的av号 返回: av_number对应的mp3下载地址
-
bilibilivoice.cache - 歌曲缓存¶
Class to cache songs into local storage.
bilibilivoice.const - 使用常量¶
-
class
bilibilivoice.const.
Constant
[源代码]¶ Bases:
object
常量使用地址
参数: - conf_dir -- 整个文件目录地址
- download_dir -- 缓存文件夹地址
- config_path -- 配置文件地址
- storage_path -- 播放信息等存储地址
- cookie_path -- cookie存储地址
- log_path -- 日志存储地址
-
conf_dir
= '/home/docs/.bilibili-voice'¶
-
config_path
= '/home/docs/.bilibili-voice/config.json'¶
-
download_dir
= '/home/docs/.bilibili-voice/cached'¶
-
log_path
= '/home/docs/.bilibili-voice/bilibili-voice.log'¶
-
storage_path
= '/home/docs/.bilibili-voice/database.json'¶
bilibilivoice.mpv - mpv播放器使用¶
-
class
bilibilivoice.mpv.
MPV
(*args, **kwargs)[源代码]¶ Bases:
bilibilivoice.mpv.MPVBase
Class for communication with the mpv media player via unix socket based JSON IPC. It adds a few usable methods and a callback API.
To automatically register methods as event callbacks, subclass this class and define specially named methods as follows:
- def on_file_loaded(self):
- # This is called for every 'file-loaded' event. ...
- def on_property_time_pos(self, position):
- # This is called whenever the 'time-pos' property is updated. ...
Please note that callbacks are executed inside a separate thread. The MPV class itself is completely thread-safe. Requests from different threads to the same MPV instance are synchronized.
-
register_property_callback
(name, callback)[源代码]¶ Register a function callback for the property-change event on property name.
-
class
bilibilivoice.mpv.
MPVBase
(window_id=None, debug=False)[源代码]¶ Bases:
object
Base class for communication with the mpv media player via unix socket based JSON IPC.
用于控制mpv的类,因为尝试通过管道控制mpv,但是好像mpv不支持管道...所有就 只能通过json来中间控制了
-
default_argv
= ['--idle', '--no-input-default-bindings', '--no-terminal', '--no-video']¶
-
executable
= None¶
-
-
exception
bilibilivoice.mpv.
MPVCommandError
[源代码]¶ Bases:
bilibilivoice.mpv.MPVError
-
exception
bilibilivoice.mpv.
MPVCommunicationError
[源代码]¶ Bases:
bilibilivoice.mpv.MPVError
-
exception
bilibilivoice.mpv.
MPVProcessError
[源代码]¶ Bases:
bilibilivoice.mpv.MPVError
-
exception
bilibilivoice.mpv.
MPVTimeoutError
[源代码]¶ Bases:
bilibilivoice.mpv.MPVError
bilibilivoice.player - 歌曲播放¶
-
class
bilibilivoice.player.
MyMPV
(path)[源代码]¶ Bases:
bilibilivoice.mpv.MPV
根据mpv基类,构造自己需要的mpv功能
例如获取当前的播放进度
def on_property_time_pos(self, position=None): if position is None: return self.process_location = int(position) return
例如构造播放功能
def play(self): self.set_property("pause", False)
bilibilivoice.scrollstring - 字符串滚动¶
-
bilibilivoice.scrollstring.
truelen
(string)[源代码]¶ It appears one Asian character takes two spots, but __len__ counts it as three, so this function counts the dispalyed length of the string.
将汉字的所占的长度进行重新地换算,因为单纯地用Python自带的长度计算方法有 错误
>>> truelen('abc') 3 >>> truelen('你好') 4 >>> truelen('1二3') 4 >>> truelen('') 0
bilibilivoice.singleton¶
members: | |
---|---|
undoc-members: | |
show-inheritance: | |
bilibilivoice.storage - 信息本地储存¶
Class to stores everything into a json file.
bilibilivoice.terminalsize - 终端信息¶
-
bilibilivoice.terminalsize.
get_terminal_size
()[源代码]¶ getTerminalSize() - get width and height of console - works on linux,os x,windows,cygwin(windows) originally retrieved from: http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python # NOQA
bilibilivoice.ui - UI¶
-
class
bilibilivoice.ui.
Ui
[源代码]¶ Bases:
object
构造UI的类
菜单栏UI构造,大部分的菜单选项都由该方法构造生成
参数: - datatype -- 菜单类型
- datalist -- 菜单列表
- offset -- 该页面起始位置
- step -- 该页面包括的菜单数
- index -- 光标所处位置
- title -- 进度菜单
BiliBili Voice > 栏目 > 音乐
参数: start -- 时间
-
build_process_bar
(now_playing, total_length, playing_flag, now_time, total_time, pause_flag, start, song_info=None)[源代码]¶ 生成音乐播放的进度条
参数: - now_playing -- 当前播放音乐的进度,单位:秒
- total_length -- 当前播放音乐的总时间,单位:秒
- playing_flag -- 是否正在播放的标记
- now_time -- 当前播放音乐的进度,字符串
- total_time -- 当前播放音乐的总时间,字符串
- pause_flag -- 播放是否暂停的标记
- start -- 时间
- song_info -- 当前播放的歌曲的信息