sendromdata.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. """
  2. Simple peTI-NESulator game database importer
  3. This python application will generate a XML file on the output with all information needed to import in the peTI-NESulator
  4. game database.
  5. """
  6. import sys, md5, sha, urllib, urlparse
  7. def get_page(url, post_data=None, headers=()):
  8. """
  9. Helper method that gets the given URL, handling headers
  10. """
  11. opener = urllib.URLopener()
  12. for k, v in headers:
  13. opener.addheader(k, v)
  14. try:
  15. f = opener.open(url, post_data)
  16. except IOError, e:
  17. if e[1] == 302:
  18. return '<html></html>'
  19. else:
  20. raise
  21. return f.read()
  22. if __name__ == '__main__':
  23. #print "<gamelist>"
  24. for filename in sys.argv[1:]:
  25. f = open(filename)
  26. try:
  27. fs = f.read()
  28. if fs[0:4] == "NES%c" % 0x1A:
  29. Flags = ord(fs[6]) & 0x0F;
  30. DiskDude = 0
  31. if fs[7:16] == "DiskDude!":
  32. DiskDude = 1
  33. mapperID = ord(fs[6]) >> 4
  34. if DiskDude == 0:
  35. mapperID = mapperID | (ord(fs[7]) & 0xF0)
  36. prgsize = ord(fs[4]) * 16 * 1024
  37. chrsize = ord(fs[5]) * 8 * 1024
  38. mirror = 0
  39. if Flags & 0x01:
  40. mirror = 1
  41. sram = 0
  42. if Flags & 0x02:
  43. sram = 1
  44. Trainer = 0
  45. if Flags & 0x04:
  46. Trainer = 1
  47. print " <game>"
  48. print " <name>%s</name>" % filename
  49. print " <sha>%s</sha>" % sha.new(fs).hexdigest()
  50. print " <md5>%s</md5>" % md5.new(fs).hexdigest()
  51. print " <mapperID>%d</mapperID>" % mapperID
  52. print " <prgsize>%d</prgsize>" % prgsize
  53. print " <chrsize>%d</chrsize>" % chrsize
  54. print " <miror>%d</miror>" % mirror
  55. print " <sram>%d</sram>" % sram
  56. print " <trainer>%d</trainer>" % Trainer
  57. print " <diskdude>%d</diskdude>" % DiskDude
  58. print " </game>"
  59. #will fill the DB :
  60. url = "http://127.0.0.1/~mtrapier/nesstat/add.php"
  61. html = get_page(url, urllib.urlencode({
  62. 'n': filename,
  63. 'md5': md5.new(fs).hexdigest(),
  64. 'sha1': sha.new(fs).hexdigest(),
  65. 'm': mapperID,
  66. 'prg': prgsize,
  67. 'chr': chrsize,
  68. 'mir': mirror,
  69. 'sram': sram,
  70. 't': Trainer,
  71. 'd': DiskDude,
  72. }))
  73. print html
  74. finally:
  75. f.close()
  76. #print "</gamelist>"