Пример #1
0
 def trains(self):
     station_codes = [i.station_code for i in self.api.stations.all.values() if i == self]
     if not self.api.timestamp:
         data = self.api.get_json(build_url(Service.rail_predictions, "GetPrediction/%s" % ",".join(station_codes)), nocache=True)["Trains"]
         return [MetrorailTrainPrediction(
                     self.api.lines[i["Line"]],
                     self.api.stations[i["DestinationCode"]],
                     self,
                     i["Min"],
                     i["Car"],
                     int(i["Group"])
                 ) for i in data if (
                     i["DestinationCode"] is not None and
                     MetrorailLines._line_valid(i["Line"]) and
                     i["Car"] is not None
                 )]
     else:
         data = list(HistoricalTrainPosition.select().where(HistoricalTrainPosition.timestamp == self.api.timestamp, HistoricalTrainPosition.next_station << station_codes))
         return [MetrorailTrainPrediction(
             self.api.lines[prediction.line_code],
             self.api.stations[prediction.dest_station],
             self,
             str(prediction.time),
             str(prediction.cars),
             prediction.trackgroup
         ) for prediction in data]
Пример #2
0
    def all_trains(self):
        if not self.api.timestamp:
            data = self.api.get_json(build_url(Service.rail_predictions, "GetPrediction/All"), nocache=True)["Trains"]
            result = {}
            for prediction in data:
                if prediction["LocationCode"] is None or prediction["DestinationCode"] is None or prediction["Car"] is None:
                    continue
                if self.api.stations[prediction["LocationCode"]] not in result:
                    result[self.api.stations[prediction["LocationCode"]]] = []
                result[self.api.stations[prediction["LocationCode"]]].append(
                    MetrorailTrainPrediction(
                        self.api.lines[prediction["Line"]],
                        self.api.stations[prediction["DestinationCode"]],
                        self.api.stations[prediction["LocationCode"]],
                        prediction["Min"],
                        prediction["Car"],
                        prediction["Group"]
                    )
                )

            all_stations = self.api.stations.all
            for station in all_stations:
                st = all_stations[station]
                if st not in result:
                    result[st] = []
            return result
        else:
            data = list(HistoricalTrainPosition.select().where(HistoricalTrainPosition.timestamp == self.api.timestamp))
            predictions = [MetrorailTrainPrediction(
                self.api.lines[prediction.line_code],
                self.api.stations[prediction.dest_station],
                self.api.stations[prediction.next_station],
                str(prediction.time),
                str(prediction.cars),
                prediction.trackgroup
            ) for prediction in data]
            d = {}
            for p in predictions:
                if p.station not in d: d[p.station] = []
                d[p.station].append(p)
            return d
Пример #3
0
from models import HistoricalTrainPosition

pos = list(HistoricalTrainPosition.select())
dels = []
for p in pos:
    if p.timestamp.microsecond == 0:
        dels.append(p.id)

print(HistoricalTrainPosition.delete().where(HistoricalTrainPosition.id << dels).execute())