Advertisement
Guest User

nrg.py

a guest
Oct 24th, 2012
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.93 KB | None | 0 0
  1. import sys, os, struct
  2.  
  3. nrgf = open(sys.argv[1], "rb")
  4. nrgf.seek(-12, 2)
  5.  
  6. buf = nrgf.read(4)
  7.  
  8. if buf != "NRG5" :
  9.     exit
  10.  
  11. print buf
  12.  
  13. chunk_off = struct.unpack("!q", nrgf.read(8))[0]
  14.  
  15. nrgf.seek(chunk_off)
  16. ch_name = nrgf.read(4)
  17.  
  18. track = []
  19. while ch_name != 'END!':
  20.     print ch_name,
  21.     ch_size = struct.unpack("!l", nrgf.read(4))[0]
  22.    
  23.     if ch_name == "ETN2":
  24.         chunk = struct.unpack("!qqllll", nrgf.read(ch_size))
  25.         print chunk
  26.         track.append((chunk[0], chunk[1]))
  27.     elif ch_name == "SINF":
  28.         print struct.unpack("!l", nrgf.read(ch_size))
  29.     elif ch_name == "MTYP":
  30.         print struct.unpack("!l", nrgf.read(ch_size))
  31.     else:
  32.         print struct.unpack(string(ch_size)+"c", nrgf.read(ch_size))
  33.        
  34.     ch_name = nrgf.read(4)
  35.  
  36. for i,v in enumerate(track):
  37.     print i, v
  38.     trf = open("trk"+str(i),"wb")
  39.     nrgf.seek(v[0])
  40.     trf.write(nrgf.read(v[1]))
  41.     trf.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement