Lib for reading and writing 3a format
Project description
py3a
This library provides a structural representation of 3a ascii animations format and methods for reading and writing it.
This lib on pypi
Usage
Install
$ pip install py3a
Here's a simple example that parsing a string in 3a format and displaying a header:
import py3a
COLORTABLE_EXAMPLE = """
width 32
height 19
loop false
colors full
title colortable demo
author Moth
in ' ab ' ffffffffffffffffffffffffffffffff00000000000000000000000000000000
a-foreground, b-background ffffffffffffffffffffffffffffffff00000000000000000000000000000000
ffffffffffffffffffffffffffffffff00000000000000000000000000000000
00 01 02 03 04 05 06 07 0000000000000000000000000000000000001111222233334444555566667777
10 11 12 13 14 15 16 17 1111111111111111111111111111111100001111222233334444555566667777
20 21 22 23 24 25 26 27 2222222222222222222222222222222200001111222233334444555566667777
30 31 32 33 34 35 36 37 3333333333333333333333333333333300001111222233334444555566667777
40 41 42 43 44 45 46 47 4444444444444444444444444444444400001111222233334444555566667777
50 51 52 53 54 55 56 57 5555555555555555555555555555555500001111222233334444555566667777
60 61 62 63 64 65 66 67 6666666666666666666666666666666600001111222233334444555566667777
70 71 72 73 74 75 76 77 7777777777777777777777777777777700001111222233334444555566667777
80 81 82 83 84 85 86 87 8888888888888888888888888888888800001111222233334444555566667777
90 91 92 93 94 95 96 97 9999999999999999999999999999999900001111222233334444555566667777
a0 a1 a2 a3 a4 a5 a6 a7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00001111222233334444555566667777
b0 b1 b2 b3 b4 b5 b6 b7 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00001111222233334444555566667777
c0 c1 c2 c3 c4 c5 c6 c7 cccccccccccccccccccccccccccccccc00001111222233334444555566667777
d0 d1 d2 d3 d4 d5 d6 d7 dddddddddddddddddddddddddddddddd00001111222233334444555566667777
e0 e1 e2 e3 e4 e5 e6 e7 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00001111222233334444555566667777
f0 f1 f2 f3 f4 f5 f6 f7 ffffffffffffffffffffffffffffffff00001111222233334444555566667777"""
if __name__ == "__main__":
art = py3a.Art.load(COLORTABLE_EXAMPLE)
print(art.header)
Short API description
Structs
The core of the library is the Art class, which implements the 3a structure:
class Art:
def __init__ (self, header: Header, body: Body):
self.header = header
self.body = body
Header type contains information about the header of 3a file:
class Header:
def __init__ (self, width: int, height: int, delay: int, loop_enable: bool, color_mod: ColorMod,
utf8: bool, datacols: int, preview: int, audio: str, title: str, author: str):
self.width = width
self.height = height
self.delay = delay
self.loop_enable = loop_enable
self.color_mod = color_mod
self.utf8 = utf8
self.datacols = datacols
self.preview = preview
self.audio = audio
self.title = title
self.author = author
Body class contains a list of frames, where each frame is a list of rows, and each row is a list of row fragments:
Row = typing.List[RowFragment]
Frame = typing.List[Row]
class Body:
def __init__ (self, frames: typing.List[Frame] ):
self.frames = frames
Each RowFragment is a set of consecutive symbols with the same values of foreground and background colors:
class RowFragment:
def __init__ (self, text: str, fg_color: Color, bg_color: Color):
self.text = text
self.fg_color = fg_color
self.bg_color = bg_color
Methods
Art.load and art.save methods allow you to convert strings to Art and back.
Art.load_file and art.save_file methods allow you to read 3a files to Art and write Art to 3a files.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py3a-1.0.0.tar.gz.
File metadata
- Download URL: py3a-1.0.0.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.8 CPython/3.9.6 Linux/5.10.69
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
418b30dc2f9784d1011244f2b9abdb82402550eda44353b4b98eb4a77acce863
|
|
| MD5 |
5aa41f8b1668cae77f0e69b575a6aae5
|
|
| BLAKE2b-256 |
7605c2e9eda0ca77e0ad0965986e0de8e7fe2505da790394e8fb7cc6fa83a6ac
|
File details
Details for the file py3a-1.0.0-py3-none-any.whl.
File metadata
- Download URL: py3a-1.0.0-py3-none-any.whl
- Upload date:
- Size: 36.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.8 CPython/3.9.6 Linux/5.10.69
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc7710738588feaa1a9931716c210225db40da2cc2d805f30081f960dd740b1b
|
|
| MD5 |
5ae80c6e6f7ef3a8db22ed89fe7fd61c
|
|
| BLAKE2b-256 |
f1becd25fcc9a2d09f5fb5d8df9f0c85206f46f3dfeb42e21a3f127fa982a64b
|