Python 3 library to import from and export to SongBeamer format.
Project description
icemac.songbeamer
Library to read and write SongBeamer files.
Supported SongBeamer versions
Currently only version Songbeamer version 2 is supported. (Internal version number in .sng files: #Version=3.)
I do not have access to other SongBeamer versions so I do not know the file structure there.
Supported Python version
At least Python 3.2 is required.
Running Tests
To run the tests call:
$ python3.2 setup.py test -q
or (with coverage analysis):
$ python3.2 setup.py nosetests
Hacking
Fork me on: https://bitbucket.org/icemac/icemac.songbeamer
Changes
0.2.0 (2012-10-31)
Added ability to parse bytes objects.
Sorting keys in export file to be compatible accross Python 3.2 and 3.3.
0.1.0 (2012-05-05)
Initial public release.
To do
Implementations
import/export of .col files (schedules)
Open Questions
Are Transpose and Speed actually int values?
Usage
Importing a .sng file
To import a .sng file use the parse class method. It expects a byte stream (io.BytesIO or open file) or a bytes object as argument to read from:
>>> from icemac.songbeamer import SNG >>> with open('example.sng', 'rb') as file: ... sng = SNG.parse(file)>>> with open('example.sng', 'rb') as file: ... sng = SNG.parse(file.read())
Accessing a file’s data
The parsed data is stored in the data attribute of the object:
>>> from pprint import pprint >>> pprint(sng.data) {'Author': 'me', 'Text': ['La la la', '---', 'Lei lei lei'], 'Version': 3}
To access the raw values imported from the .sng file get them using getattr:
>>> sng.Version b'3'
Exporting a .sng file
>>> from tempfile import TemporaryFile
To export to a .sng file use the export method. It expects a byte stream (io.BytesIO or open file) as argument to write into:
>>> with TemporaryFile() as file: ... sng.export(file) ... _ = file.seek(0) ... pprint(file.readlines()) [b'#Author=me\r\n', b'#Version=3\r\n', b'---\r\n', b'La la la\r\n', b'---\r\n', b'Lei lei lei']
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.