code: def handle_json_GET_stoptrips(self, params):
      
      schedule = self.server.schedule
      stop = schedule.GetStop(params.get('stop', None))
      time = int(params.get('time', 0))
      date = params.get('date', "")
  
      time_trips = stop.GetStopTimeTrips(schedule)
      time_trips.sort()  # OPT: use bisect.insort to make this O(N*ln(N)) -> O(N)
      # Keep the first 5 after param 'time'.
      # Need make a tuple to find correct bisect point
      time_trips = time_trips[bisect.bisect_left(time_trips, (time, 0)):]
      time_trips = time_trips[:5]
      # TODO: combine times for a route to show next 2 departure times
      result = []
      for time, (trip, index), tp in time_trips:
        service_id = trip.service_id
        service_period = schedule.GetServicePeriod(service_id)
        if date and not service_period.IsActiveOn(date):
          continue
        headsign = None
        # Find the most recent headsign from the StopTime objects
        for stoptime in trip.GetStopTimes()[index::-1]:
          if stoptime.stop_headsign:
            headsign = stoptime.stop_headsign
            break
        # If stop_headsign isn't found, look for a trip_headsign
        if not headsign:
          headsign = trip.trip_headsign
        route = schedule.GetRoute(trip.route_id)
        trip_name = ''
        if route.route_short_name:
          trip_name += route.route_short_name
        if route.route_long_name:
          if len(trip_name):
            trip_name += " - "
          trip_name += route.route_long_name
        if headsign:
          trip_name += " (Direction: %s)" % headsign
  
        result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
      return result
docs: Given a stop_id and time in seconds since midnight return the next
      trips to visit the stop.