Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys, os, struct
- nrgf = open(sys.argv[1], "rb")
- nrgf.seek(-12, 2)
- buf = nrgf.read(4)
- if buf != "NRG5" :
- exit
- print buf
- chunk_off = struct.unpack("!q", nrgf.read(8))[0]
- nrgf.seek(chunk_off)
- ch_name = nrgf.read(4)
- track = []
- while ch_name != 'END!':
- print ch_name,
- ch_size = struct.unpack("!l", nrgf.read(4))[0]
- if ch_name == "ETN2":
- chunk = struct.unpack("!qqllll", nrgf.read(ch_size))
- print chunk
- track.append((chunk[0], chunk[1]))
- elif ch_name == "SINF":
- print struct.unpack("!l", nrgf.read(ch_size))
- elif ch_name == "MTYP":
- print struct.unpack("!l", nrgf.read(ch_size))
- else:
- print struct.unpack(string(ch_size)+"c", nrgf.read(ch_size))
- ch_name = nrgf.read(4)
- for i,v in enumerate(track):
- print i, v
- trf = open("trk"+str(i),"wb")
- nrgf.seek(v[0])
- trf.write(nrgf.read(v[1]))
- trf.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement