quickdev16/scripts/query_romsize.py
2009-06-25 10:38:35 +02:00

113 lines
2.9 KiB
Python

import sqlite3
import os
import re
import string
import stat
import popen2
import glob
import sys
import os
import pprint
import base64
import getpass
import os
import socket
import sys
import traceback
import paramiko
from subprocess import Popen
paramiko.util.log_to_file('demo_sftp.log')
if os.name == 'posix':
path = "/home/david/Devel/arch/avr/code/snesram/roms/"
username = "david"
hostname = "slap"
else:
path = "/Users/david/Devel/arch/avr/code/snesram/roms/"
username = "david"
hostname = "burst"
def shellquote(s):
return "'" + s.replace("'", "'\\''") + "'"
def main():
port = 22
password = getpass.getpass('Password for %s@%s: ' % (username, hostname))
hostkeytype = None
hostkey = None
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
if host_keys.has_key(hostname):
hostkeytype = host_keys[hostname].keys()[0]
hostkey = host_keys[hostname][hostkeytype]
print 'Using host key of type %s' % hostkeytype
try:
print "Connect %s:%s" % (hostname, port)
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password, hostkey=hostkey)
sftp = paramiko.SFTPClient.from_transport(t)
# dirlist on remote host
dirlist = sftp.listdir('.')
print "Dirlist:", dirlist
conn = sqlite3.connect('roms.sqlite3')
c = conn.cursor()
for i in [(4,),(8,),(16,),(32,)]:
dirname = os.path.join(path,"%02i" % i)
if not os.path.isdir(dirname):
os.mkdir(dirname)
print "#" * 60
print "%i MBit" % i
print "#" * 60
c.execute('''SELECT
rom_name,
rom_mb,
file_name
FROM
roms
WHERE
rom_mb = ?
AND
rom_hirom = 0
AND
rom_sram = 0
AND
rom_type = 0
AND
rom_region like "Europe%"
ORDER BY file_name
''',i)
for row in c:
name,size,filename = row
filename_dst = os.path.join(dirname,os.path.basename(filename))
print "Remote: %s -> %s" % ( filename,filename_dst)
data = open(filename, 'r').read()
open(filename_dst,"w").write(data)
except Exception, e:
print '*** Caught exception: %s: %s' % (e.__class__, e)
traceback.print_exc()
try:
t.close()
except:
pass
sys.exit(1)
if __name__ == '__main__':
main()