@ -134,7 +134,7 @@ class BlockDataCopier:
if not self . fileOutput and ( ( self . outsz + blockSizeOnDisk ) > self . maxOutSz ) :
if not self . fileOutput and ( ( self . outsz + blockSizeOnDisk ) > self . maxOutSz ) :
self . outF . close ( )
self . outF . close ( )
if self . setFileTime :
if self . setFileTime :
os . utime ( outFname , ( int ( time . time ( ) ) , highTS ) )
os . utime ( self . outFname , ( int ( time . time ( ) ) , self . highTS ) )
self . outF = None
self . outF = None
self . outFname = None
self . outFname = None
self . outFn = self . outFn + 1
self . outFn = self . outFn + 1
@ -142,12 +142,12 @@ class BlockDataCopier:
( blkDate , blkTS ) = get_blk_dt ( blk_hdr )
( blkDate , blkTS ) = get_blk_dt ( blk_hdr )
if self . timestampSplit and ( blkDate > self . lastDate ) :
if self . timestampSplit and ( blkDate > self . lastDate ) :
print ( " New month " + blkDate . strftime ( " % Y- % m " ) + " @ " + hash_str )
print ( " New month " + blkDate . strftime ( " % Y- % m " ) + " @ " + self . hash_str )
lastDate = blkDate
self . lastDate = blkDate
if outF :
if self . outF :
outF . close ( )
self . outF . close ( )
if setFileTime :
if self . setFileTime :
os . utime ( outFname , ( int ( time . time ( ) ) , highTS ) )
os . utime ( self . outFname , ( int ( time . time ( ) ) , self . highTS ) )
self . outF = None
self . outF = None
self . outFname = None
self . outFname = None
self . outFn = self . outFn + 1
self . outFn = self . outFn + 1
@ -155,11 +155,11 @@ class BlockDataCopier:
if not self . outF :
if not self . outF :
if self . fileOutput :
if self . fileOutput :
outFname = self . settings [ ' output_file ' ]
self . outFname = self . settings [ ' output_file ' ]
else :
else :
outFname = os . path . join ( self . settings [ ' output ' ] , " blk %05d .dat " % self . outFn )
self . outFname = os . path . join ( self . settings [ ' output ' ] , " blk %05d .dat " % self . outFn )
print ( " Output file " + outFname )
print ( " Output file " + self . outFname )
self . outF = open ( outFname , " wb " )
self . outF = open ( self . outFname , " wb " )
self . outF . write ( inhdr )
self . outF . write ( inhdr )
self . outF . write ( blk_hdr )
self . outF . write ( blk_hdr )
@ -223,13 +223,16 @@ class BlockDataCopier:
blk_hdr = self . inF . read ( 80 )
blk_hdr = self . inF . read ( 80 )
inExtent = BlockExtent ( self . inFn , self . inF . tell ( ) , inhdr , blk_hdr , inLen )
inExtent = BlockExtent ( self . inFn , self . inF . tell ( ) , inhdr , blk_hdr , inLen )
hash_str = calc_hash_str ( blk_hdr )
self . hash_str = calc_hash_str ( blk_hdr )
if not hash_str in blkmap :
if not self . hash_str in blkmap :
print ( " Skipping unknown block " + hash_str )
# Because blocks can be written to files out-of-order as of 0.10, the script
# may encounter blocks it doesn't know about. Treat as debug output.
if settings [ ' debug_output ' ] == ' true ' :
print ( " Skipping unknown block " + self . hash_str )
self . inF . seek ( inLen , os . SEEK_CUR )
self . inF . seek ( inLen , os . SEEK_CUR )
continue
continue
blkHeight = self . blkmap [ hash_str ]
blkHeight = self . blkmap [ self . hash_str ]
self . blkCountIn + = 1
self . blkCountIn + = 1
if self . blkCountOut == blkHeight :
if self . blkCountOut == blkHeight :
@ -295,12 +298,15 @@ if __name__ == '__main__':
settings [ ' max_out_sz ' ] = 1000 * 1000 * 1000
settings [ ' max_out_sz ' ] = 1000 * 1000 * 1000
if ' out_of_order_cache_sz ' not in settings :
if ' out_of_order_cache_sz ' not in settings :
settings [ ' out_of_order_cache_sz ' ] = 100 * 1000 * 1000
settings [ ' out_of_order_cache_sz ' ] = 100 * 1000 * 1000
if ' debug_output ' not in settings :
settings [ ' debug_output ' ] = ' false '
settings [ ' max_out_sz ' ] = int ( settings [ ' max_out_sz ' ] )
settings [ ' max_out_sz ' ] = int ( settings [ ' max_out_sz ' ] )
settings [ ' split_timestamp ' ] = int ( settings [ ' split_timestamp ' ] )
settings [ ' split_timestamp ' ] = int ( settings [ ' split_timestamp ' ] )
settings [ ' file_timestamp ' ] = int ( settings [ ' file_timestamp ' ] )
settings [ ' file_timestamp ' ] = int ( settings [ ' file_timestamp ' ] )
settings [ ' netmagic ' ] = unhexlify ( settings [ ' netmagic ' ] . encode ( ' utf-8 ' ) )
settings [ ' netmagic ' ] = unhexlify ( settings [ ' netmagic ' ] . encode ( ' utf-8 ' ) )
settings [ ' out_of_order_cache_sz ' ] = int ( settings [ ' out_of_order_cache_sz ' ] )
settings [ ' out_of_order_cache_sz ' ] = int ( settings [ ' out_of_order_cache_sz ' ] )
settings [ ' debug_output ' ] = settings [ ' debug_output ' ] . lower ( )
if ' output_file ' not in settings and ' output ' not in settings :
if ' output_file ' not in settings and ' output ' not in settings :
print ( " Missing output file / directory " )
print ( " Missing output file / directory " )