A modern simfile parsing & editing library for Python 3.
Full documentation can be found onRead the Docs.
- Supports both SM and SSC files
- Timing data support
- Beat ↔︎ song time conversion
- Handles BPM changes, stops, delays and warps
- Accepts "split timing" from SSC charts
- Note streams from charts
- Fully typed, documented, and tested API
simfileis available on PyPI:
pip3 install simfile
Load simfiles from disk usingsimfile.open
orsimfile.load
:
>>>importsimfile
>>>springtime=simfile.open('testdata/Springtime/Springtime.ssc')
>>>springtime
<SSCSimfile:Springtime>
>>>withopen('testdata/nekonabe/nekonabe.sm','r')asinfile:
...nekonabe=simfile.load(infile)
...
>>>nekonabe
<SMSimfile:Miêu nồi>
Use lowercase attributes to access most common properties:
>>>springtime.artist
'Kommisar'
>>>springtime.banner
'springbn.png'
>>>springtime.subtitle='(edited)'
>>>springtime
<SSCSimfile:Springtime(edited)>
Alternatively, use uppercase strings to access the underlying dictionary:
>>>springtime['ARTIST']
'Kommisar'
>>>springtime['ARTIST']isspringtime.artist
True
>>>list(springtime.keys())[:7]
['VERSION','TITLE','SUBTITLE','ARTIST','TITLETRANSLIT','SUBTITLETRANSLIT','ARTISTTRANSLIT']
Charts are stored in a list under the.charts
attribute and function similarly to simfile objects:
>>>len(springtime.charts)
9
>>>chart=springtime.charts[0]
>>>chart
<SSCChart:dance-singleChallenge12>
>>>list(chart.keys())[:7]
['CHARTNAME','STEPSTYPE','DESCRIPTION','CHARTSTYLE','DIFFICULTY','METER','RADARVALUES']
simfileuses Pipenv for dependency management. Activate the environment:
pipenv shell
To run the unit tests:
py -m unittest
To build the documentation:
docs/make html