VideoLAN的libdvdcss的Python包装器。
pydvdcss的Python项目详细描述
pydvdcss是VideoLAN的libdvdcss的python包装器
from pydvdcss.dvdcss import DvdCss
# ...
# choose device
dev = "/dev/sr0"
# use `with` to auto dispose once you leave the tree
# of course you can also just do `dvdcss = DvdCss()`
with DvdCss() as dvdcss:
# open device
dvdcss.open(dev)
# check if dvd is scrambled
if dvdcss.is_scrambled():
print("The DVD is scrambled!")
# read volume id from the ISO 9660 Volume Descriptor Set
dvdcss.seek(16) # seek to sector 16, the first 15 sectors are unused by ISO 9660
dvdcss.read(1) # read one sector amount of data
data = dvdcss.buffer # access the latest read data
volume_label = data[40:72].strip().decode()
print(f"{dev}: {volume_label}")
# >> eg. `'/dev/sr0: THE_IT_CROWD_DISC_1'`
# make sure you dispose when your done if you didn't
# use `with`, otherwise stuff will get stuck in memory.
# usage of `with` on DvdCss automatically handles disposing.
# dvdcss.dispose()
libdvdcss
是一个简单的库,可以像块设备一样访问DVD,而不必担心解密。pydvdcss
将这个库公开为一个处理其余部分的类。在
特点
可移植性
支持任何可以运行上面显示的受支持的python版本的内容。在
简单性
DVD播放器可以围绕libdvdcss
API构建,只需使用4到5个库调用。在
Freedom
libdvdcss
和这个包装器pydvdcss
是在通用公共许可证下发布的,确保它将保持免费,并且只用于自由软件产品。在
更好
与大多数类似的项目不同,libdvdcss
不需要设置驱动器的区域。在
安装
^{pr2}$或者
git clone https://github.com/rlaPHOENiX/pydvdcss.git
cd pydvdcss
python -m pip install --user .
注意:使用第二种方法,您需要通过重新克隆和重新安装来处理更新。
待办事项
- [x] 实现dvdcss_open
- [x] 关闭DVDU
- [x] 实现dvdcss_seek
- [x] 实现dvdcss_read
- [x] 实现dvdcss_错误
- [x] 实现dvdcss_被加扰
- [x] 实现
__enter__
和__exit__
以正确处理 - [x] 为失败的find_库调用添加处理程序
- [十] 为失败的cdll调用添加处理程序
- [x] 添加安装libdvdcss的说明
- [x] 添加和测试Windows支持
- [x] 添加和测试对Mac OS的支持
- [x] 添加和测试Linux支持
- [x] 添加设置DVDCSS_VERBOSE的函数
- [x] 添加设置DVDCSS_方法的函数
- []实现dvdcss_readv,不确定如何使用或实现
功能
在DvdCss.open版(psz_目标=[字符串])
打开一个DVD设备或目录并返回dvdcss实例。在
初始化libdvdcss库并打开请求的DVD设备或目录。 libdvdcss检查是否可以在光盘上执行ioctl,如果可能, 将检索光盘密钥。在
open()返回用于所有后续libdvdcss调用的句柄。如果 发生错误,返回NULL。在
- psz_target:目标名称,例如“/dev/hdc”或“e:”。在
在DvdCss.close()
关闭DVD并清理库。在
关闭DVD设备并释放libdvdcss分配的所有内存。 返回时,dvdcss_t句柄无效,不能再次使用。在
在DvdCss.seek(i_blocks=[int],i\u flags=[int;NOFLAGS])
在光盘中搜索并根据需要更改当前键。在
此函数在逻辑块中查找请求的位置。 以块为单位返回新位置,如果出现错误,则返回负值 发生了。在
小贴士:
Use SEEK_MPEG flag when seeking throughout VOB data sectors. It isn't needed on the first sector.
Use SEEK_KEY flag the first time you enter a TITLE. You can always call it in VOB data sectors, however it will be unnecessary and cause slowdowns.
- i_块:要查找的绝对块偏移量。在
- i_flags:默认情况下没有标志,也可以指定SEEK_KEY或SEEK_MPEG标志。在
在DvdCss.read(i_blocks=[int],i\u flags=[int;NOFLAGS])
从光盘中读取数据,并在需要时解密数据。在
此函数从DVD读取逻辑块。 返回读取的块数,或在发生错误时返回负值。在
小贴士:
Get the read contents from the buffer variable of DvdCss instance.
- i_块:要查找的绝对块偏移量。在
- i_flags:默认情况下没有标志,或者您可以指定READ_DECRYPT标志。在
在DvdCss.error.错误()
返回一个字符串,该字符串包含给定libdvdcss中发生的最新错误 实例。在
此函数返回包含最近发生的错误的常量字符串 在libdvdcss中。它可以用于在您方便的时候格式化错误消息 应用程序。在
返回一个以null结尾的字符串,其中包含最新的错误消息。在
在DvdCss.is_加扰()
检查DVD是否加扰。在
如果被置乱,则返回True。在
在
PHOENiX
LICENSE (GPLv3)
CONTRIBUTORS
在- 项目
标签: