def test_chunk_overlapping_multiple_files(self): reader = TrLogReader(FILENAME) tr_log = reader.get_log(use_cache=False, ignore_non_downloaded_files=False) reader._chunk_count = 0 chunk = {'filenum': 0, 'begin': 0, 'end': 300, 'peeraddr': 'X', 'id': 0, 't': 0.0} expected_chunks = [ {'filenum': 0, 'begin': 0, 'end': 291, 'peeraddr': 'X', 'id': 0, 't': 0.0}, {'filenum': 1, 'begin': 291, 'end': 300, 'peeraddr': 'X', 'id': 1, 't': 0.0}] self.assertEquals(expected_chunks, reader._split_chunk_at_file_boundaries(chunk))
parser = ArgumentParser() parser.add_argument("sessiondir") parser.add_argument("--file", dest="selected_files", type=int, nargs="+") parser.add_argument("-t", "--torrent", dest="torrentname", default="") parser.add_argument("-interpret", action="store_true") parser.add_argument("-autozoom", action="store_true") parser.add_argument("--unfold", choices=[FORWARD, BACKWARD, PINGPONG], default=BACKWARD) Ancestry.add_parser_arguments(parser) options = parser.parse_args() options.standalone = True sessiondir = options.sessiondir logfilename = "%s/session.log" % sessiondir print "session: %s" % sessiondir tr_log = TrLogReader(logfilename, options.torrentname, realtime=False, pretend_sequential=False).get_log() if options.selected_files: tr_log.select_files(options.selected_files) print >> sys.stderr, "found %d chunks" % len(tr_log.chunks) tr_log.ignore_non_downloaded_files() if options.interpret: pieces = Interpreter().interpret(tr_log.chunks) else: pieces = tr_log.chunks Ancestry(tr_log, pieces, options).run()
if options.realtime: if options.max_passivity: raise Exception("cannot enforce max passivity in real time") session = Session(realtime=True) sessiondir = session.dir logfile = session.get_log_reader() session.start() else: sessiondir = options.sessiondir logfilename = "%s/session.log" % sessiondir print "session: %s" % sessiondir tr_log = TrLogReader(logfilename, options.torrentname, realtime=options.realtime, pretend_sequential=options.pretend_sequential).get_log() tr_log.ignore_non_downloaded_files() server = Server(options) orchestra = Orchestra(sessiondir, tr_log, options) server.set_orchestra(orchestra) if not options.realtime and len(orchestra.chunks) == 0: raise Exception("No chunks to play. Unsupported file format?") def process_chunks_from_queue(): while True: logger.debug("waiting for chunk") chunk = get_chunk_from_queue() if chunk == TrLogReader.NO_MORE_CHUNKS:
help="attack-time,decay-time,sustain-level") parser.add_argument("--line-width", type=float, default=2.0) parser.add_argument("--prune-out", action="store_true") parser.add_argument("--prune-duration", type=float, default=1) parser.add_argument("--prune-envelope", type=str, default="0,0.1,0,1") parser.add_argument("--pre-prune-duration", type=float, default=5.0) parser.add_argument("--post-prune-duration", type=float, default=1.0) parser.add_argument("--line-growth-speed", type=float, default=1.5) Ancestry.add_parser_arguments(parser) options = parser.parse_args() options.standalone = True sessiondir = options.sessiondir logfilename = "%s/session.log" % sessiondir print "session: %s" % sessiondir tr_log = TrLogReader(logfilename, options.torrentname, realtime=False, pretend_sequential=False).get_log() if options.selected_files: tr_log.select_files(options.selected_files) print >> sys.stderr, "found %d chunks" % len(tr_log.chunks) if options.interpret: pieces = Interpreter().interpret(tr_log.chunks) else: pieces = tr_log.chunks Ancestry(tr_log, pieces, options).run()