跳转到主要内容

Python 3库,用于从SongBeamer格式导入和导出。

项目描述

icemac.songbeamer

https://travis-ci.cn/icemac/icemac.songbeamer.svg?branch=master https://coveralls.io/repos/github/icemac/icemac.songbeamer/badge.svg?branch=master

用于读取和写入SongBeamer文件的库。

本软件包使用MIT许可证,请参阅包内的LICENSE.TXT文件。

支持的SongBeamer版本

目前支持Songbeamer版本2到4。(.sng文件中的内部版本号:#Version=3。)

支持的Python版本

仅在Python 3.7上运行。不支持旧版本的Python。

运行测试

要运行测试,请调用

$ tox

(您可能需要先使用:pip install tox安装tox。)

黑客攻击

在:https://github.com:/icemac/icemac.songbeamer

更改

1.0 (2018-11-02)

向后不兼容的更改

  • icemac.songbeamer.SNG实例不再在data属性中存储数据,现在它表现得像一个dict,从而可以直接访问数据。

  • 现在无法再使用icemac.songbeamer.SNG实例的属性来读取和存储编码的字节数据。可以使用dict API从icemac.songbeamer.SNG实例读取/写入文本数据,或者使用parse函数(见下一条)导入数据,或使用.SNG.export()导出编码的数据。

  • 添加了一个函数icemac.songbeamer.parse(),将字节流转换为icemac.songbeamer.SNG实例。它取代了SNG实例上的类方法。如果数据无法解析,则返回None并记录错误消息。

  • 不再支持Python 3.5、3.6和PyPy3,因此现在只支持Python 3.7。

功能

  • 添加了一个函数icemac.songbeamer.open(),用于打开给定路径的文件并获取一个icemac.songbeamer.SNG实例。

  • 使.SNG.export()能够抵御歌曲中缺少文本的情况。

  • 添加了一个命令行脚本songbeamer-xls-export,它将包含SongBeamer文件的文件夹中的标题和歌集编号导出到XLS文件中。要使用它,必须以如下方式安装带有xls附加组件的icemac.songbeamer:

    $ pip install "icemac.songbeamer[xls]"
  • 支持以UTF-8编码的以UTF-8 BOM开始的SongBeamer文件。

  • 将许可证从ZPL更改为MIT。

0.3 (2018-10-07)

  • 添加对Python 3.5至3.7和PyPy3的支持。

  • 不再支持Python 3.2和3.3。

0.2.0 (2012-10-31)

  • 添加了解析字节数据的能力。

  • 将导出文件中的键排序,以兼容Python 3.2和3.3。

0.1.0 (2012-05-05)

  • 首次公开发布。

待办事项

实现

  • 导入/导出.col文件(日程表)

开放性问题

  • Transpose和Speed实际上是整数值吗?

使用

导入.sng文件

要导入.sng文件,请在icemac.songbeamer模块中使用open函数。它期望一个文件名和路径,并返回一个SNG实例

>>> import icemac.songbeamer
>>> import pkg_resources
>>> filename = pkg_resources.resource_filename(
...     'icemac.songbeamer.tests', 'example.sng')
>>> sng = icemac.songbeamer.open(filename)
>>> sng.__class__
<class 'icemac.songbeamer.sng.SNG'>

或者,在同一个模块中还有一个parse函数,可以将字节(例如从二进制文件中读取的)解析为一个SNG实例

>>> with open(filename, 'rb') as file:
...     sng = icemac.songbeamer.parse(file.read())
>>> sng.__class__
<class 'icemac.songbeamer.sng.SNG'>

访问文件数据

SNG实例扩展了dict,因此可以通过常规Python dict API访问日期

>>> from pprint import pprint
>>> pprint(sng)
{'Author': 'me',
 'Text': ['La la la', '---', 'Lei lei lei'],
 'Version': 3}
>>> sng['Title'] = 'Mÿ šôñg'

值存储为数字或字符串(文本)

>>> sng['Version']
3
>>> sng['Author']
'me'

导出.sng文件

>>> from tempfile import TemporaryFile

要导出到.sng文件,请使用export方法。它期望一个字节流(io.BytesIO或打开的二进制文件)作为参数写入

>>> with TemporaryFile() as file:
...     sng.export(file)
...     _ = file.seek(0)
...     pprint(file.readlines())
[b'#Author=me\r\n',
 b'#Title=M\xff \x9a\xf4\xf1g\r\n',
 b'#Version=3\r\n',
 b'---\r\n',
 b'La la la\r\n',
 b'---\r\n',
 b'Lei lei lei']

项目详情


下载文件

为您的平台下载文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分发

icemac.songbeamer-1.0.tar.gz (11.2 kB 查看散列)

上传时间

构建分发

icemac.songbeamer-1.0-py2.py3-none-any.whl (15.5 kB 查看散列)

上传时间 Python 2 Python 3