├── .gitignore ├── README.md ├── standard.py └── combine.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.avi 2 | *.mp4 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Datamosh-python 2 | Datamoshing scripts written in python 3 | 4 | 5 | Some personal datamoshing scripts written in python. Approach was adopted from https://github.com/grampajoe/Autodatamosh 6 | -------------------------------------------------------------------------------- /standard.py: -------------------------------------------------------------------------------- 1 | import code 2 | import random 3 | 4 | 5 | movieTitle = '/Users/aashish/Documents/Programming/sources/videos/0001-0120.avi' 6 | f = open(movieTitle, 'r') 7 | outFile = open('a.avi', 'w') 8 | 9 | inputFile = f.read() 10 | frames = inputFile.split('00dc') 11 | 12 | iframe = '0001b0'.decode('hex') 13 | firstPassed = False 14 | printedFrames = 0 15 | 16 | for index, frame in enumerate(frames): 17 | #outFile.write(frame + '00dc') 18 | if firstPassed == False: 19 | outFile.write(frame + '00dc') 20 | printedFrames += 1 21 | print 'FALSE ' + str(printedFrames) 22 | 23 | if frame[5:8] == iframe: 24 | print 'FIRST ' + str(index) 25 | firstPassed = True 26 | else: 27 | if frame[5:8] != iframe: 28 | printedFrames += 1 29 | for i in range(15): 30 | outFile.write(frame + '00dc') 31 | 32 | print 'printed frames: ' + str(printedFrames) + " skipped frames: " + str(len(frames)-printedFrames) 33 | 34 | outFile.close() 35 | -------------------------------------------------------------------------------- /combine.py: -------------------------------------------------------------------------------- 1 | import code 2 | import random 3 | import argparse 4 | import ntpath 5 | 6 | def combine(iMovieTitle, pMovieTitle): 7 | f = open(iMovieTitle, 'r') 8 | g = open(pMovieTitle, 'r') 9 | 10 | firstVid = ntpath.splitext(ntpath.basename(iMovieTitle))[0] 11 | secondVid = ntpath.splitext(ntpath.basename(pMovieTitle))[0] 12 | outTitle = firstVid + "-" + secondVid + ".avi" 13 | outFile = open(outTitle, 'w') 14 | 15 | iFrameList = f.read().split('00dc') 16 | pFrameList = g.read().split('00dc') 17 | 18 | iframe = '0001b0'.decode('hex') 19 | iframes = [] 20 | pframes = [] 21 | 22 | firstPassed = False 23 | for index, frame in enumerate(iFrameList): 24 | if firstPassed == False: 25 | outFile.write(frame + '00dc') 26 | if frame[5:8] == iframe: 27 | firstPassed = True 28 | else: 29 | if frame[5:8] == iframe: 30 | iframes.append(frame) 31 | 32 | firstPassed = False 33 | for index, frame in enumerate(pFrameList): 34 | if firstPassed == False: 35 | if frame[5:8] == iframe: 36 | firstPassed = True 37 | else: 38 | if frame[5:8] != iframe: 39 | pframes.append(frame) 40 | 41 | for index in range(min(len(iframes), len(pframes))): 42 | outFile.write(iframes[index] + '00dc') 43 | 44 | if len(pframes) > len(iframes): 45 | spacing = len(pframes)/len(iframes) 46 | for i in range(spacing): 47 | outFile.write(pframes[index*spacing+i] + '00dc') 48 | else: 49 | for i in range(15): 50 | outFile.write(pframes[index] + '00dc') 51 | 52 | outFile.close() 53 | 54 | if __name__ == "__main__": 55 | iMovieTitle = '/Users/aashish/Documents/Programming/sources/videos/output.avi' 56 | pMovieTitle = '/Users/aashish/Documents/Programming/sources/videos/0001-0120.avi' 57 | 58 | 59 | parser = argparse.ArgumentParser() 60 | parser.add_argument("movieTitleA") 61 | parser.add_argument("movieTitleB") 62 | args = parser.parse_args() 63 | combine(args.movieTitleA, args.movieTitleB) 64 | combine(args.movieTitleB, args.movieTitleA) 65 | 66 | 67 | --------------------------------------------------------------------------------