query_romsize.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import sqlite3
  2. import os
  3. import re
  4. import string
  5. import stat
  6. import popen2
  7. import glob
  8. import sys
  9. import os
  10. import pprint
  11. import base64
  12. import getpass
  13. import os
  14. import socket
  15. import sys
  16. import traceback
  17. import paramiko
  18. from subprocess import Popen
  19. paramiko.util.log_to_file('rom_sftp.log')
  20. if os.name == 'posix':
  21. path = "/home/david/Devel/arch/avr/code/snesram/roms/"
  22. username = "david"
  23. hostname = "slap"
  24. else:
  25. path = "/Users/david/Devel/arch/avr/code/snesram/roms/"
  26. username = "david"
  27. hostname = "burst"
  28. def shellquote(s):
  29. return "'" + s.replace("'", "'\\''") + "'"
  30. def main():
  31. port = 22
  32. password = getpass.getpass('Password for %s@%s: ' % (username, hostname))
  33. hostkeytype = None
  34. hostkey = None
  35. host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
  36. if host_keys.has_key(hostname):
  37. hostkeytype = host_keys[hostname].keys()[0]
  38. hostkey = host_keys[hostname][hostkeytype]
  39. print 'Using host key of type %s' % hostkeytype
  40. try:
  41. print "Connect %s:%s" % (hostname, port)
  42. t = paramiko.Transport((hostname, port))
  43. t.connect(username=username, password=password, hostkey=hostkey)
  44. sftp = paramiko.SFTPClient.from_transport(t)
  45. # dirlist on remote host
  46. dirlist = sftp.listdir('.')
  47. print "Dirlist:", dirlist
  48. conn = sqlite3.connect('roms.sqlite3')
  49. c = conn.cursor()
  50. for i in [(4,),(8,),(16,),(32,)]:
  51. dirname = os.path.join(path,"%02i" % i)
  52. if not os.path.isdir(dirname):
  53. os.mkdir(dirname)
  54. print "#" * 60
  55. print "%i MBit" % i
  56. print "#" * 60
  57. c.execute('''SELECT
  58. rom_name,
  59. rom_mb,
  60. file_name
  61. FROM
  62. roms
  63. WHERE
  64. rom_mb = ?
  65. AND
  66. rom_hirom = 0
  67. AND
  68. rom_sram = 0
  69. AND
  70. rom_type = 0
  71. AND
  72. rom_region like "Europe%"
  73. ORDER BY file_name
  74. ''',i)
  75. for row in c:
  76. name,size,filename = row
  77. filename_dst = os.path.join(dirname,os.path.basename(filename))
  78. print "Remote: %s -> %s" % ( filename,filename_dst)
  79. data = open(filename, 'r').read()
  80. open(filename_dst,"w").write(data)
  81. except Exception, e:
  82. print '*** Caught exception: %s: %s' % (e.__class__, e)
  83. traceback.print_exc()
  84. try:
  85. t.close()
  86. except:
  87. pass
  88. sys.exit(1)
  89. if __name__ == '__main__':
  90. main()