diff options
| author | Xusheng <xusheng@vector35.com> | 2021-07-01 12:34:30 +0800 |
|---|---|---|
| committer | Xusheng Li <xushengli@protonmail.com> | 2021-07-05 10:11:47 +0800 |
| commit | 13ff200ba134b8704f37eca99c42b70dab0d17dc (patch) | |
| tree | 876b3db3c53f704b31152aeaede1f2edc9d27b24 /python/examples/kaitai/id3v1_1.py | |
| parent | 4039a800349dcd587833d3e27d9137e4649818f4 (diff) | |
Remove snippet and kaitai plugin. Note their individual links.
Diffstat (limited to 'python/examples/kaitai/id3v1_1.py')
| -rw-r--r-- | python/examples/kaitai/id3v1_1.py | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/python/examples/kaitai/id3v1_1.py b/python/examples/kaitai/id3v1_1.py deleted file mode 100644 index 41b2e880..00000000 --- a/python/examples/kaitai/id3v1_1.py +++ /dev/null @@ -1,217 +0,0 @@ -# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild - -from pkg_resources import parse_version -from .kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO -import collections -from enum import Enum - - -if parse_version(ks_version) < parse_version('0.7'): - raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version)) - -class Id3v11(KaitaiStruct): - """ID3v1.1 tag is a method to store simple metadata in .mp3 files. The - tag is appended to the end of file and spans exactly 128 bytes. - - This type is supposed to be used on full .mp3 files, seeking to - proper position automatically. If you're interesting in parsing only - the tag itself, please use `id3v1_1::id3_v1_1_tag` subtype. - - .. seealso:: - Source - http://id3.org/ID3v1 - """ - SEQ_FIELDS = [] - def __init__(self, _io, _parent=None, _root=None): - self._io = _io - self._parent = _parent - self._root = _root if _root else self - self._debug = collections.defaultdict(dict) - - def _read(self): - pass - - class Id3V11Tag(KaitaiStruct): - """ID3v1.1 tag itself, a fixed size 128 byte structure. Contains - several metadata fields as fixed-size strings. - - Note that string encoding is not specified by standard, so real - encoding used would vary a lot from one implementation to - another. Most Windows-based applications tend to use "ANSI" - (i.e. locale-dependent encoding, usually one byte per - character). Some embedded applications allow selection of - charset. - """ - - class GenreEnum(Enum): - blues = 0 - classic_rock = 1 - country = 2 - dance = 3 - disco = 4 - funk = 5 - grunge = 6 - hip_hop = 7 - jazz = 8 - metal = 9 - new_age = 10 - oldies = 11 - other = 12 - pop = 13 - rnb = 14 - rap = 15 - reggae = 16 - rock = 17 - techno = 18 - industrial = 19 - alternative = 20 - ska = 21 - death_metal = 22 - pranks = 23 - soundtrack = 24 - euro_techno = 25 - ambient = 26 - trip_hop = 27 - vocal = 28 - jazz_funk = 29 - fusion = 30 - trance = 31 - classical = 32 - instrumental = 33 - acid = 34 - house = 35 - game = 36 - sound_clip = 37 - gospel = 38 - noise = 39 - alternrock = 40 - bass = 41 - soul = 42 - punk = 43 - space = 44 - meditative = 45 - instrumental_pop = 46 - instrumental_rock = 47 - ethnic = 48 - gothic = 49 - darkwave = 50 - techno_industrial = 51 - electronic = 52 - pop_folk = 53 - eurodance = 54 - dream = 55 - southern_rock = 56 - comedy = 57 - cult = 58 - gangsta = 59 - top_40 = 60 - christian_rap = 61 - pop_funk = 62 - jungle = 63 - native_american = 64 - cabaret = 65 - new_wave = 66 - psychadelic = 67 - rave = 68 - showtunes = 69 - trailer = 70 - lo_fi = 71 - tribal = 72 - acid_punk = 73 - acid_jazz = 74 - polka = 75 - retro = 76 - musical = 77 - rock_n_roll = 78 - hard_rock = 79 - folk = 80 - folk_rock = 81 - national_folk = 82 - swing = 83 - fast_fusion = 84 - bebob = 85 - latin = 86 - revival = 87 - celtic = 88 - bluegrass = 89 - avantgarde = 90 - gothic_rock = 91 - progressive_rock = 92 - psychedelic_rock = 93 - symphonic_rock = 94 - slow_rock = 95 - big_band = 96 - chorus = 97 - easy_listening = 98 - acoustic = 99 - humour = 100 - speech = 101 - chanson = 102 - opera = 103 - chamber_music = 104 - sonata = 105 - symphony = 106 - booty_bass = 107 - primus = 108 - porn_groove = 109 - satire = 110 - slow_jam = 111 - club = 112 - tango = 113 - samba = 114 - folklore = 115 - ballad = 116 - power_ballad = 117 - rhythmic_soul = 118 - freestyle = 119 - duet = 120 - punk_rock = 121 - drum_solo = 122 - a_capella = 123 - euro_house = 124 - dance_hall = 125 - SEQ_FIELDS = ["magic", "title", "artist", "album", "year", "comment", "genre"] - def __init__(self, _io, _parent=None, _root=None): - self._io = _io - self._parent = _parent - self._root = _root if _root else self - self._debug = collections.defaultdict(dict) - - def _read(self): - self._debug['magic']['start'] = self._io.pos() - self.magic = self._io.ensure_fixed_contents(b"\x54\x41\x47") - self._debug['magic']['end'] = self._io.pos() - self._debug['title']['start'] = self._io.pos() - self.title = self._io.read_bytes(30) - self._debug['title']['end'] = self._io.pos() - self._debug['artist']['start'] = self._io.pos() - self.artist = self._io.read_bytes(30) - self._debug['artist']['end'] = self._io.pos() - self._debug['album']['start'] = self._io.pos() - self.album = self._io.read_bytes(30) - self._debug['album']['end'] = self._io.pos() - self._debug['year']['start'] = self._io.pos() - self.year = (self._io.read_bytes(4)).decode(u"ASCII") - self._debug['year']['end'] = self._io.pos() - self._debug['comment']['start'] = self._io.pos() - self.comment = self._io.read_bytes(30) - self._debug['comment']['end'] = self._io.pos() - self._debug['genre']['start'] = self._io.pos() - self.genre = KaitaiStream.resolve_enum(self._root.Id3V11Tag.GenreEnum, self._io.read_u1()) - self._debug['genre']['end'] = self._io.pos() - - - @property - def id3v1_tag(self): - if hasattr(self, '_m_id3v1_tag'): - return self._m_id3v1_tag if hasattr(self, '_m_id3v1_tag') else None - - _pos = self._io.pos() - self._io.seek((self._io.size() - 128)) - self._debug['_m_id3v1_tag']['start'] = self._io.pos() - self._m_id3v1_tag = self._root.Id3V11Tag(self._io, self, self._root) - self._m_id3v1_tag._read() - self._debug['_m_id3v1_tag']['end'] = self._io.pos() - self._io.seek(_pos) - return self._m_id3v1_tag if hasattr(self, '_m_id3v1_tag') else None - - |
