Пример #1
0
    def handleurl_merge(self, urlfile):
        """Merge the specified list of tracks."""

        (_, _, tracks) = urlfile.split('/')
        tracks = tracks.split(',')

        self.log('Merging %s' % repr(tracks))
        first_track = track.Track(db)
        first_track.FromId(int(tracks[0]))
        self.log('Before: %s' % repr(first_track.persistant))

        cleanup = []
        for second_track_id in tracks[1:]:
            second_track = track.Track(db)
            second_track.FromId(int(second_track_id))

            first_track.Merge(second_track)
            self.log('After: %s' % repr(first_track.persistant))

            cleanup.append(second_track)

        first_track.Store()
        for second_track in cleanup:
            second_track.Delete()

        self.log('Merge finished')
        self.sendfile('done.html')
Пример #2
0
    def handleurl_unmerge(self, urlfile):
        """Undo a merge."""

        (_, _, tracks) = urlfile.split('/')
        tracks = tracks.replace(' ', '').replace('%20', '').split(',')

        self.log('Unmerging %s' % repr(tracks))
        first_track = track.Track(db)
        first_track.persistant = eval(
            db.GetOneRow('select * from events '
                         'where '
                         'event = "merge: before" '
                         'and '
                         'track_id = %s order by '
                         'timestamp asc limit 1;' % tracks[0])['details'])
        self.log('Previous state of %s: %s' %
                 (tracks[0], repr(first_track.persistant)))
        first_track.Store()

        for t_id in tracks[1:]:
            t = track.Track(db)
            t.persistant = eval(
                db.GetOneRow('select * from events where '
                             'event = "merge: deleted" and '
                             'track_id = %s order by '
                             'timestamp desc limit 1;' % t_id)['details'])

            tags = eval(
                db.GetOneRow('select * from events where '
                             'event = "merge: tags: %s" '
                             'order by timestamp desc limit 1;' %
                             t_id)['details'])
            paths = eval(
                db.GetOneRow('select * from events where '
                             'event = "merge: paths: %s" '
                             'order by timestamp desc limit 1;' %
                             t_id)['details'])
            self.log('Previous state of %s: %s. Tags %s, Paths %s.' %
                     (t_id, repr(t.persistant), tags, paths))
            t.Store()

            for tag in tags:
                try:
                    db.ExecuteSql(
                        'update tags set track_id=%s where tag="%s";' %
                        (t_id, tag['tag']))
                except:
                    pass

            for path in paths:
                try:
                    db.ExecuteSql(
                        'update paths set track_id=%s where path=%s;' %
                        (t_id, sql.FormatSqlValue('path', path['path'])))
                except:
                    pass

            db.ExecuteSql('commit;')
Пример #3
0
def readFiles(paths: list):
    tracks = []
    for item in paths:
        dataDict = readID3(item)
        dataDict["path"] = item
        tracks.append(t.Track(dataDict))
    return tracks
Пример #4
0
class TrackParser():
    actions = {
        "TRACK": [
            lambda _, n: track.Track(
                comment1=n[4], comment2=n[5], track_entry=n[7])
        ],
        "NONEMPTY_LINE": [lambda _, n: n[0]],
        "TRACK_ENTRY_GROUP": [
            lambda _, n: track.TrackEntry(
                comment=n[0],
                id=n[2],
                line2=n[3],
                tile_index=n[4],
                line4=n[5],
                length=n[6],
                line6=n[7],
                line7=n[8],
            )
        ],
        "TRACK_ENTRY_GROUP_LIST":
        [lambda _, n: [n[0]], lambda _, n: n[0] + [n[1]]]
    }

    def __init__(self):
        self.grammar = parglare.Grammar.from_file(
            os.path.join(os.path.dirname(os.path.realpath(__file__)),
                         "track_grammar.pg"))
        self.parser = parglare.Parser(self.grammar,
                                      actions=self.actions,
                                      ws="\r")

    def parse(self, file_name):
        with open(file_name, encoding="iso-8859-1") as f:
            content = f.read()
        return self.parser.parse(content)
Пример #5
0
    def test_round_tick(self):
        """Test round track using tick()"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Add the track from text
        mytrack.from_text(ROUND[0])

        # 3. Check a few things
        self.assertEqual(len(mytrack.tracks), 16)
        self.assertEqual(len(mytrack.carts), 2)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (5, 3))
        self.assertEqual(str(mytrack), ROUND[0])

        # 4. Loop for all but last iteration
        for i in range(1, len(ROUND) - 1):

            # 5. Advance the clock by one each loop
            self.assertEqual(mytrack.tick(), False)
            self.assertEqual(mytrack.crashed, None)
            self.assertEqual(str(mytrack), ROUND[i])

        # 6. Advance the clock by one last time
        self.assertEqual(mytrack.tick(), True)
        self.assertEqual(mytrack.crashed, (5, 3))
        self.assertEqual(str(mytrack), ROUND[len(ROUND) - 1])
Пример #6
0
    def test_vertical_text(self):
        """Test vertical track using from_text()"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Add the track from text
        mytrack.from_text(VERTICAL_TRACK)

        # 3. Check a few things
        self.assertEqual(len(mytrack.tracks), 7)
        self.assertEqual(len(mytrack.carts), 2)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (0, 6))
        self.assertEqual(str(mytrack), "|\nv\n|\n|\n|\n^\n|")

        # 4. Advance the clock by one
        self.assertEqual(mytrack.tick(), False)
        self.assertEqual(mytrack.crashed, None)
        self.assertEqual(str(mytrack), "|\n|\nv\n|\n^\n|\n|")

        # 5. Advance the clock by one more
        self.assertEqual(mytrack.tick(), True)
        self.assertEqual(mytrack.crashed, (0, 3))
        self.assertEqual(str(mytrack), "|\n|\n|\nX\n|\n|\n|")
Пример #7
0
    def test_vertical(self):
        """Test vertical track"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Add the vertical track
        mytrack.add_track((0, 0), '|')
        mytrack.add_track((0, 1), 'v')
        mytrack.add_track((0, 2), '|')
        mytrack.add_track((0, 3), '|')
        mytrack.add_track((0, 4), '|')
        mytrack.add_track((0, 5), '^')
        mytrack.add_track((0, 6), '|')

        # 3. Check a few things
        self.assertEqual(len(mytrack.tracks), 7)
        self.assertEqual(len(mytrack.carts), 2)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (0, 6))
        self.assertEqual(str(mytrack), "|\nv\n|\n|\n|\n^\n|")

        # 4. Advance the clock by one
        self.assertEqual(mytrack.tick(), False)
        self.assertEqual(mytrack.crashed, None)
        self.assertEqual(str(mytrack), "|\n|\nv\n|\n^\n|\n|")

        # 5. Advance the clock by one more
        self.assertEqual(mytrack.tick(), True)
        self.assertEqual(mytrack.crashed, (0, 3))
        self.assertEqual(str(mytrack), "|\n|\n|\nX\n|\n|\n|")
Пример #8
0
    def test_empty_init(self):
        """Test default Track object creation"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Make sure it has the default values
        self.assertEqual(len(mytrack.tracks), 0)
        self.assertEqual(len(mytrack.carts), 0)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (0, 0))
        self.assertEqual(mytrack.crashed, None)

        # 3. Check methods
        self.assertEqual(mytrack.get_track((0, 0)), ' ')
        self.assertRaises(AssertionError, mytrack.get_track, (3, 3))
        mytrack.add_track((1, 2), '-')
        self.assertEqual(len(mytrack.tracks), 1)
        self.assertEqual(mytrack.size(), (1, 2))
        mytrack.add_track((1, 3), '+')
        self.assertEqual(mytrack.size(), (1, 3))
        self.assertEqual(len(mytrack.tracks), 2)
        self.assertEqual(mytrack.get_track((1, 1)), ' ')
        self.assertEqual(mytrack.get_track((1, 2)), '-')
        self.assertEqual(mytrack.get_track((1, 3)), '+')
        self.assertRaises(AssertionError, mytrack.get_track, (1, 4))
        mytrack.set_crashed((0, 0))
        self.assertEqual(mytrack.crashed, (0, 0))

        # 4. Once last check of values
        self.assertEqual(len(mytrack.tracks), 3)
        self.assertEqual(len(mytrack.carts), 0)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (1, 3))
Пример #9
0
    def __init__(self):
        self.camera = camera.Camera()
        self.track = track.Track()
        self.track.generateTrack(20, 50)
        self.sound = sound.Sound()
        #self.camera.position = (self.track.startingPoint[0], 1, self.track.startingPoint[1])
        self.rotation = 0
        self.unicycles = []
        self.unicycles.append(
            racer.Racer(
                array([
                    self.track.startingPoint[0], 0.3,
                    self.track.startingPoint[1]
                ]), self.track.startingRot, 75, 4, self.track, self.sound))
        tilted = racer.Racer(array([-2, 0.3, 2]), 0)
        tilted.orientation = array([1, 1, 0])
        self.unicycles.append(tilted)

        tilted2 = racer.Racer(array([2, 0.3, -2]), 0)
        tilted2.orientation = array([0, 1, 1])
        self.unicycles.append(tilted2)

        tilted3 = racer.Racer(array([-2, 0.3, -2]), 0)
        tilted3.orientation = array([1, 1, 1])
        self.unicycles.append(tilted3)

        self.currentTime = pygame.time.get_ticks()
        self.accumulator = 0
Пример #10
0
    def __init__(self):
        super().__init__()

        self.controller = inputs.devices.gamepads[0]

        self.cur_track_segment = 0

        track_f = open("track.json")
        track_data = json.load(track_f)
        track_f.close()

        self.track = track.Track(track_data, world)
        self.car = car.Car(base, world, self.track)

        dlight = DirectionalLight('dlight')
        dlnp = render.attachNewNode(dlight)
        dlnp.setHpr(0, -80, 0)
        render.setLight(dlnp)
        alight = AmbientLight('alight')
        alight.setColor(Vec4(0.2, 0.2, 0.2, 1))
        alnp = render.attachNewNode(alight)
        render.setLight(alnp)

        myFog = Fog("Fog")
        myFog.setColor(0.2, 0.2, 0.2)
        myFog.setExpDensity(0.005)
        render.setFog(myFog)

        taskMgr.add(self.update, 'update')
        self.controller_t = threading.Thread(target=self.controller_tf,
                                             daemon=True)
        self.controller_t.start()
Пример #11
0
 def removeTrack(self, track_id):
     # check if more than 1 track exists
     if (len(self.tracks) > 1):
         self.tracks.pop(track_id)
     else:
         # replace last track instead of removing it
         self.tracks = [track.Track(0, "New Track")]
 def search_tracks(self, terms, limit):
     headers = {"Authorization": "Bearer {0}".format(self._token)}
     payload = {"q": "", "type": "track", "limit": str(limit)}
     space = " "  # used to separate search terms
     for t in terms:
         if payload["q"] == "":
             payload["q"] = t
         else:
             payload["q"] += space + t
     # before a request, always make sure the token is
     # kept alive
     self.keepalive_token()
     res = requests.get(self.sp_search_endpoint,
                        headers=headers,
                        params=payload)
     if res.status_code == 200:
         # good
         # now build a list of tracks
         items = res.json()["tracks"]["items"]
         out = []
         for i in items:
             out.append(track.Track(i))
         return out
     else:
         # bad
         print("HTTP error {0} in Spotify search operation...".format(
             res.status_code))
         return None
Пример #13
0
    def as_track(self):
        track_struct = self.__link_interface.as_track(self.__link_struct)

        if track_struct is not None:
            ti = _track.TrackInterface()
            ti.add_ref(track_struct)
            return track.Track(track_struct)
Пример #14
0
 def setup_method(self, m):
     self.track = track.Track()
     self.player = player.Player("A", car=0, lane=0)
     self.x = self.player.x
     self.y = self.player.y
     self.score = self.player.score
     self.track.set(self.x, self.y, self.obstacle)
Пример #15
0
    def test_example_tick(self):
        """Test example track using tick()"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Add the track from text
        mytrack.from_text(EXAMPLE[0])

        # 3. Check a few things
        self.assertEqual(len(mytrack.carts), 2)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (12, 5))
        self.assertEqual(str(mytrack), EXAMPLE[0])

        # 4. Loop for all but last iteration
        for i in range(1, len(EXAMPLE) - 1):

            # 5. Advance the clock by one each loop
            self.assertEqual(mytrack.tick(), False)
            self.assertEqual(mytrack.crashed, None)
            # print("........... actual %d" % i)
            # print(str(mytrack))
            # print("........... expected %d" % i)
            # print(EXAMPLE[i])
            self.assertEqual(str(mytrack), EXAMPLE[i])

        # 6. Advance the clock by one last time
        self.assertEqual(mytrack.tick(), True)
        self.assertEqual(mytrack.crashed, (7, 3))
        self.assertEqual(str(mytrack), EXAMPLE[len(EXAMPLE) - 1])
Пример #16
0
 def __init__(self, client, name, drive_func):
     self.client = client
     self.drive_func = drive_func
     self.name = name
     self.track = track.Track()
     self.players = {}
     self.cars = [car.Car(1), car.Car(2), car.Car(3), car.Car(4)]
     self.world = world.generate_world(self)
Пример #17
0
    def as_track_and_offset(self):
        offset = ctypes.c_int
        track_struct = self.__link_interface.as_track_and_offset

        if track_struct is not None:
            ti = _track.TrackInterface()
            ti.add_ref(track_struct)
            return track.Track(track_struct), offset.value
Пример #18
0
 def __init__(self):
     self.server = None
     self.track = track.Track()
     self.looper = task.LoopingCall(self.loop)
     self.players = {}
     self.free_cars = set(range(config.number_of_cars))
     self.free_lanes = set(range(config.max_players))
     self._rate = config.game_rate
     self.started = False
     self.timeleft = config.game_duration
Пример #19
0
def __compare_method__(track_length=30):
    time1 = timer()
    t = track.Track(1, track_length)
    time2 = timer()
    solution = evolutionary_generate(t.points, t.scale)
    time3 = timer()
    timeOrig = time2 - time1
    timerEvo = time3 - time2
    return (track.track_length(t.points, t.scale), timeOrig,
            track.track_length(solution, t.scale), timerEvo)
Пример #20
0
 def generate_beckham_track(self):
     beckham_track = track.Track("beckham")
     for sentence in self.sentences:
         target_locale = self.beckham_sentence_to_locale_map[sentence]
         beckham_track.concat(
             "beckham",
             sentence.synthesized_sentences[target_locale],
             sentence.start_time,
             True,
         )
     self.tracks["beckham"] = beckham_track
Пример #21
0
    def test_sample_solve(self):
        """Test sample track using solve()"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Add the track from text
        mytrack.from_text(SAMPLE)

        # 3. Solve this puzzle for first collision
        self.assertEqual(mytrack.solve(), (7, 3))
Пример #22
0
def main():
    # TODO: algorithm expects that the shorten piece is also present in the set.
    # remove this condition.
    parser = argparse.ArgumentParser(description=DESCRIPTION)
    args = parser.parse_args()
    tracks = set()
    for line in sys.stdin:
        path = line.strip()
        tracks.add(track.Track(path).normalize())
    tracks = [t for t in tracks if not can_be_simplified(t, tracks)]
    for t in tracks:
        print(t.path)
Пример #23
0
 def on_add_sequencer(self, *args):
   empty_track = track.Track(transport=self.document.transport)
   tracks = track.TrackList(
     tracks=(empty_track,),
     transport=self.document.transport)
   self.add_unit(track.SequencerUnit(
       tracks=tracks,
       view_scale=self.document.view_scale,
       transport=self.document.transport,
       name='Sequencer',
       x=self.scene_pos.x(),
       y=self.scene_pos.y()))
Пример #24
0
 def add_track(self, track_name, album_name, artist_name):
     if artist_name not in self.artists:
         raise InputError('Artist not found. Please add artist')
     artist = self.artists[artist_name]
     new_track = track.Track(track_name, album_name, artist_name)
     self.tracks.append(new_track)
     if album_name not in artist.albums:
         raise InputError('Album not found. Please add album.')
     album = artist.albums[album_name]
     album.tracks[track_name] = new_track  # Connection from album to track
     new_track.album = album  # Connection from track to album
     new_track.artist = artist  # Connection from track to artist. Maybe unecessary
     return new_track
Пример #25
0
    def __init__(self):
        self.time_res = 1 / 30.0
        self.time = 0.0
        self.thecar = car.Car()
        self.thetrack = track.Track()
        self.curr_checkpoint = 0
        self.curr_lap_number = 0
        self.thecar.set_start_pos(110, 300)
        self.start_time = pygame.time.get_ticks()
        self.total_score = 0.0
        self.game_over = False
        self.current_score = 0.0

        self.font = pygame.font.Font(None, 20)
Пример #26
0
    def evolution_sim(self):
        generations_to_run = input_with_conditions(
            "Please input number of generations to evolve [1-500]", int,
            [lambda x: x > 0, lambda x: x < 500])
        t = track.Track(track=self.track_json)
        ev = evolution.Evolution(self.population, t, generations_to_run,
                                 self.genetics)
        temp_population = ev.run()

        save = input_with_conditions("Accept evolution results (y/n)", str,
                                     [lambda x: x in ["y", "n"]])
        save = True if save == "y" else False
        if save:
            self.population.clear()
            self.population.extend(temp_population)
Пример #27
0
def ProcessDirectory(db, path):
    """Process a directory. Called recursively."""

    for ent in os.listdir(path):
        entpath = '%s/%s' % (path, ent)
        if os.path.isdir(entpath):
            ProcessDirectory(db, entpath)

        elif entpath.endswith('.mp3'):
            #try:
            this_track = track.Track(db)
            this_track.FromPath(entpath)
            if this_track.AddPath(entpath):
                print entpath

            this_track.Store()
Пример #28
0
 def track(self):
     ele = 'ele' if any(b.ele for b in self.b) else 'alt'
     coords = [
         Coord.deg(b.lat, b.lon, getattr(b, ele), b.dt) for b in self.b
     ]
     kwargs = {}
     kwargs['filename'] = os.path.basename(self.filename)
     if 'plt' in self.h and not NOT_SET_RE.match(self.h['plt']):
         kwargs['pilot_name'] = self.h['plt'].strip()
     if 'gty' in self.h and not NOT_SET_RE.match(self.h['gty']):
         kwargs['glider_type'] = self.h['gty'].strip()
     if 'gid' in self.h and not NOT_SET_RE.match(self.h['gid']):
         kwargs['glider_id'] = self.h['gid'].strip()
     for k in self.i.keys():
         if any(getattr(b, k) for b in self.b):
             kwargs[k] = [getattr(b, k) for b in self.b]
     return track.Track(coords, **kwargs)
Пример #29
0
    def test_sample_solve_file(self):
        """Test sample.txt using solve()"""

        # 1. Create default Track sample.txt
        mytrack = track.Track()

        # 2. Add the track from text
        mytrack.from_file("../sample.txt")

        # 3. Check a few things
        self.assertEqual(len(mytrack.carts), 2)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (12, 5))
        self.assertEqual(str(mytrack), EXAMPLE[0])

        # 4. Solve this puzzle for first collision
        self.assertEqual(mytrack.solve(), (7, 3))
Пример #30
0
    def test_derby_derby_file(self):
        """Test derby.txt using derby()"""

        # 1. Create default Track object
        mytrack = track.Track()

        # 2. Add the track from derby.txt
        mytrack.from_file("../derby.txt")

        # 3. Check a few things
        self.assertEqual(len(mytrack.carts), 9)
        self.assertEqual(mytrack.time, 0)
        self.assertEqual(mytrack.size(), (6, 6))
        self.assertEqual(str(mytrack), DERBY[0])

        # 4. Solve this puzzle for the last cart standing
        self.assertEqual(mytrack.derby(), (6, 4))
        self.assertEqual(str(mytrack), DERBY[len(DERBY) - 1])