Advertisement
Guest User

Anime CRC checker

a guest
Apr 1st, 2011
615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.54 KB | None | 0 0
  1. #!/usr/bin/python
  2. # Version 0.3 2011.04.01
  3. # Copyright (c) 2009, Taoufik El Aoumari
  4. # Edited by Marc Aldorasi to make it a python 3 script
  5. # From http://agafix.org/anime-crc32-checksum-in-linux-v20/
  6. # Released under the GPL license http://www.gnu.org/licenses/gpl-3.0.txt
  7.  
  8. import sys, re, zlib, os
  9.  
  10. c_null  = "\x1b[00;00m"
  11. c_red   = "\x1b[31;01m"
  12. c_green = "\x1b[32;01m"
  13. p_reset = "\x08"*8
  14.  
  15. def crc32_checksum(filename):
  16.     crc = 0
  17.     file = open(filename, "rb")
  18.     buff_size = 65536
  19.     size = os.path.getsize(filename)
  20.     done = 0
  21.     try:
  22.         while True:
  23.             data = file.read(buff_size)
  24.             done += buff_size
  25.             sys.stdout.write("%7d"%(done*100/size) + "%" + p_reset)
  26.             if not data:
  27.                 break
  28.             crc = zlib.crc32(data, crc)
  29.     except KeyboardInterrupt:
  30.         sys.stdout.write(p_reset)
  31.         print("\n")
  32.         file.close()
  33.         sys.exit(1)
  34.  
  35.     #sys.stdout.write(p_reset)
  36.     file.close()
  37.     if crc < 0:
  38.         crc &= 2**32-1
  39.     return "%.8X" %(crc)
  40.  
  41. for file in sys.argv[1:]:
  42.     try:
  43.         crc = crc32_checksum(file)
  44.         dest_sum = re.split("([a-fA-F0-9]{8})", file)[-2]
  45.         if crc == dest_sum.upper():
  46.             c_in = c_green
  47.         else:
  48.             c_in = c_red
  49.         sfile = file.split(dest_sum)
  50.         print("%s%s%s   %s%s%s%s%s" % (c_in, crc, c_null, sfile[0], c_in, dest_sum, c_null, sfile[1]))
  51.     except(IndexError, ValueError):
  52.         print(crc+"   "+file)
  53.     except IOError as e :
  54.         print(e)
  55.         continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement