示例#1
0
def commandline():
    import optparse
    op = optparse.OptionParser()
    op.add_option('-b', '--basedir')
    op.add_option('-a', '--add-replays', action='store_true')
    op.add_option('-l', '--list', action='store_true')
    op.add_option('-t', '--test', action='store_true')
    op.add_option('-v', '--verbose', action='store_true')

    op.add_option('--dump-gamedata', action='store_true')
    op.add_option('--rebuild', action='store_true')

    options, args = op.parse_args()

    rdb = ReplayDB(options.basedir)

    if options.test:
        test(rdb)

    if options.rebuild:
        replay_ids = rdb.get_replay_ids()
        targets = args
        for n, replay_id in enumerate(replay_ids):
            print 'making data for %s (%d/%d)' % (
                    replay_id, n+1, len(replay_ids))
            rdb.make_data(replay_id, targets)

    if options.add_replays:
        for replay_path in args:
            rp_data = file(replay_path).read()
            replay_id = libw3g.get_replay_id(rp_data)
            print 'adding replay %s...' % replay_id
            try:
                rdb.add_replay(rp_data, {
                    'file_timestamp': libw3g.get_timestamp(replay_path)})
                errors = rdb.get_errors(replay_id)
                if errors:
                    print 'errors: %s' % errors
            except DuplicateReplayException:
                print 'skipped (already exists)'


    if options.list:
        for replay_id in rdb.get_replay_ids():
            print replay_id, ('error' if replay_id not in rdb.replays else '')

    if options.dump_gamedata:
        for replay in search_replays(args, rdb.replays):
            dump_gamedata(replay, options.verbose)
示例#2
0
    def upload(self, path, callback=console_output):
        datagen, headers = multipart_encode({
                'replay_file': file(path, 'rb'),
                'timestamp': str(libw3g.get_timestamp(path))
        })

        request = urllib2.Request(self.cgiurl+'/upload', datagen, headers)
        buf = urllib2.urlopen(request)

        while True:
            data = buf.read(8)
            if data=='-'*8:
                break
            else:
                downloaded = int(data)
                callback(downloaded)
        print buf.read()
示例#3
0
    parser = OptionParser()
    parser.add_option('-m', '--meta-data', action='store_true')
    parser.add_option('-r', '--replay-data', action='store_true')
    parser.add_option('-g', '--game-data', action='store_true')
    parser.add_option('-e', '--dota-events', action='store_true')
    parser.add_option('--player-stats', action='store_true')
    parser.add_option('--rd-node')
    #parser.add_option('-s', '--state', action='store_true')
    #parser.add_option('-p', '--players', action='store_true')
    #parser.add_option('-j', '--json')
    options, args = parser.parse_args()

    for arg in args:
        try:
            replay_data = get_replaydata(file(arg).read())
            game_data = get_gamedata(replay_data, get_timestamp(arg))

            if options.meta_data:
                dump_metadata(replay_data, game_data)
            if options.replay_data:
                dump_replay_data(replay_data)
            if options.game_data:
                dump_state(game_data)
            if options.dota_events:
                dump_dota_events(replay_data)
            if options.player_stats:
                dump_player_stats(game_data)
            if options.rd_node:
                dump_rdnode(replay_data, options.rd_node)
            #if options.json:
                #dump_json(state, options.json)
示例#4
0
def wait_for_change(path):
    timestamp = current_ts = libw3g.get_timestamp(path)
    while (timestamp==current_ts):
        current_ts = libw3g.get_timestamp(path)
        time.sleep(1)