python oo接口到libcdio(cd输入和控制库)

pycdio的Python项目详细描述


简介

pycdio是指向libcdio的python接口,cd输入和 控制库http://www.gnu.org/software/libcdio

您可以在libcdio的同一个位置获取源: ftp://ftp.gnu.org:/pub/gnu/libcdio/

pycdiolibcdio库封装了cd-rom读取和 控制。希望忽略操作系统的python程序-和 CD-ROM的设备相关属性可以使用此库。

示例用法

获取CD-ROM驱动器信息

importsysimportcdio,pycdiotry:d=cdio.Device(driver_id=pycdio.DRIVER_UNKNOWN)drive_name=d.get_device()exceptIOError:print("Problem finding a CD-ROM")sys.exit(1)ok,vendor,model,release=d.get_hwinfo()print("drive: %s, vendor: %s, model: %s, release: %s" \
  %(drive_name,vendor,model,release))# Show CD-Text for an audio CDcdt=d.get_cdtext()i_tracks=d.get_num_tracks()i_first_track=pycdio.get_first_track_num(d.cd)fortinrange(i_first_track,i_tracks+i_first_track):foriinrange(pycdio.MIN_CDTEXT_FIELD,pycdio.MAX_CDTEXT_FIELDS):value=cdt.get(i,t)# value can be empty but exist, compared to NULL valuesifvalueisnotNone:print("\t%s: %s"%(pycdio.cdtext_field2str(i),value))passpasspassreturnd.close()

其他示例代码可以在发行版的example目录中找到。

要求

在debian上构建(例如ubuntu):

$ apt-get install python-dev
$ apt-get install libcdio-dev
$ apt-get install libiso9660-dev
$ apt-get install swig pkg-config
$ pip install -e .
$ make check

SWIG问题

我已经试着让它回到Python2.3左右。

不过,我注意到各种各样的问题。

如果您在运行进行检查时看到这样的消息:

File "/home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py", line 207, in library_dir_option
 return "-L" + dir
TypeError: Can't convert 'bytes' object to str implicitly

在最近的ditutilsunixcompiler.py中复制,如下所示:

$ cp admin-tools/unixccompiler.py /home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py

distutils发行版表示,它试图与2.3版的所有python版本兼容。这个 管理工具中的unixcompiler.py来自python 3.7.4发行版。

完整性

libcdio相当大,但仍可能增长一点。

pycdio中的内容是不完整的;随着时间的推移,它可能会增长到完成 取决于各种因素:例如兴趣,是否有人帮助 出去。

当前缺少的libcdio部分是(scsi)mmc 命令和cdparanoia库。在音频控制中,我加入了 那些不需要思考的东西。ISO 9660库是 非常完整,除了文件stat()之外,目前的信息是 非常小。

也就是说,里面的东西很有用。它可能包含更多 比大多数不使用的媒体播放器的访问能力 libcdio有。

swig的封装分为两部分。低级Python 接口名为pycdio,由swig生成。

更面向对象的模块是cdio;它是一个python类 使用pycdio。尽管pycdio本身是完全可用的,但它是 希望cdio是大多数人会用到的。作为pycdio更多 紧密地模拟c接口,可以想象(如果不可能的话) 非常熟悉该界面的死硬libcdio c用户 可能更喜欢。

可能可以通过这样的方式来改变开关量 这些碎片。但是也有问题。首先,我没有那么多 一个游泳专家。第二,它看起来好像产生了swig代码 会更复杂。第三,分离使翻译 直截了当地理解和维护:首先获取c中的内容 作为一对一的翻译。然后我们实施一些 从那抽象出来。抽象可以在没有 必须重做基础的翻译。(但反过来是 通常不正确:通常更改为c-to-python转换, pycdio,确实会导致对 抽象层cdio.)

有很多事情要做-你想帮忙,请这样做!

虽然许多方法都缺少独立的文档, 类和函数有一些文档字符串。另请参见 示例目录中的程序。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我想访问同一类的不同函数中的函数变量   创建字段/值哈希映射的java反射   java Velocity工具向后兼容性?   cmd JAVA运行时错误:发生JNI错误   java spring引导示例hateoas不工作   java为什么Android Studio和gradle可以使用不同的类路径进行单元测试?   java Selenium Firefox驱动程序初始化   java如何在jar中重新定位gradle依赖项的包   java为什么我的单线程hello world应用程序使用22个OS线程?   正则表达式替换Java字符串中的特殊字符   在任何派生类的构造函数之后运行方法的java   java从输入字符串中找出日期   带有libGdx(Java)音乐的安卓studio可以在Android模拟器上工作,但不能在桌面上工作   java我在getconnection的参数方面有错误吗?   java使用JFileChooser访问选定文件   java如何将Json解析为另一个活动   java使用Resources for html和rest server   java更新列表,列表内容来自循环中的方法   java如何在GLSL中读取完整范围的32位整数纹理