Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct
- import os
- f = open('byond.rsc', 'rb')
- files = []
- sizes_files = dict()
- f.seek(0, 2)
- rsc_size = f.tell()
- f.seek(0)
- while f.tell() < rsc_size:
- block_size, stopflag = struct.unpack('Icxxxxxxxxxxxxx', f.read(18))
- file_size = struct.unpack('I', f.read(4))[0]
- if stopflag == '\b00':
- f.read(block_size - 17)
- print('! TMP Flag')
- filename = b''
- nms = b''
- while nms != b'\x00':
- filename += nms
- nms = f.read(1)
- filename = filename.decode('ascii')
- if (not len(filename)) or filename[0] == '.':
- f.read(file_size)
- print('! File Name 0')
- continue
- if file_size == 0:
- print('! File Size 0')
- continue
- f.read(file_size)
- print(filename, file_size)
- files.append(filename)
- if not file_size in sizes_files:
- sizes_files[file_size] = [filename, ]
- else:
- sizes_files[file_size].append(filename)
- for rawfile in os.listdir('res_raw'):
- filesize = os.path.getsize('res_raw/' + rawfile)
- if filesize in sizes_files and len(sizes_files[filesize]) == 1:
- if sizes_files[filesize][0] in files:
- files.remove(sizes_files[filesize][0])
- newfile = 'res_named/' + sizes_files[filesize][0]
- newpath = os.path.dirname(newfile)
- if not os.path.exists(newpath):
- os.makedirs(newpath)
- with open('res_raw/' + rawfile, 'rb') as oldfile:
- with open(newfile, 'wb') as writefile:
- writefile.write(oldfile.read())
- elif filesize in sizes_files and len(sizes_files[filesize]) > 1:
- print('Conflict:', rawfile, filesize, sizes_files[filesize])
- num = int(input('Enter number:'))
- if num == -1:
- continue
- if sizes_files[filesize][num] in files:
- files.remove(sizes_files[filesize][num])
- newfile = sizes_files[filesize][num]
- sizes_files[filesize].remove(newfile)
- newfile = 'res_named/' + newfile
- newpath = os.path.dirname(newfile)
- if not os.path.exists(newpath):
- os.makedirs(newpath)
- with open('res_raw/' + rawfile, 'rb') as oldfile:
- with open(newfile, 'wb') as writefile:
- writefile.write(oldfile.read())
- print(files)
- print(len(files))
Advertisement
Add Comment
Please, Sign In to add comment