Improved www.ttss.krakow.pl
Jacek Kowalski
2019-07-07 ae517065da8e530f3964b0cbf4ecf90c2c71b948
stops/download_stops.php
@@ -1,33 +1,30 @@
<?php
if(php_sapi_name() !== 'cli') die();
$chars = 'aąbcćdeęfghijklłmnńoóprsśtuvwxyzżź0123456789';
$len = mb_strlen($chars, 'UTF-8');
function fetchStops($url) {
   $json = file_get_contents($url);
   $elements = json_decode($json, 1);
   $stops = [];
   foreach($elements['stops'] as $element) {
      if($element['category'] == 'other') continue;
      $stops[$element['shortName']] = $element['name'];
   }
   asort($stops);
   return $stops;
}
$replacements = [
   '&Oacute;' => 'Ó',
   '&oacute;' => 'ó',
   '&Eacute;' => 'É',
   '&eacute;' => 'é',
];
$stops = [];
for($i = 0; $i < $len; $i++) {
   for($j = 0; $j < $len; $j++) {
      $char = mb_substr($chars, $i, 1, 'UTF-8').mb_substr($chars, $j, 1, 'UTF-8');
      $json = file_get_contents('http://www.ttss.krakow.pl/internetservice/services/lookup/autocomplete/json?query='.urlencode($char));
      $elements = json_decode($json, 1);
      foreach($elements as $element) {
         if($element['type'] == 'divider') continue;
         if($element['type'] == 'route') continue;
         if($element['type'] != 'stop') {
            throw new Exception('Unknown element: '.var_export($element, 1));
         }
         $stops[$element['id']] = strtr($element['name'], $replacements);
      }
function printStops($stops, $prefix) {
   foreach($stops as $id => $stop) {
      echo '  \''.$prefix.str_pad($id."'", 5, ' ', STR_PAD_RIGHT).' => '.var_export($stop, TRUE).','."\n";
   }
}
asort($stops);
var_export($stops);
$stops_tram = fetchStops('http://www.ttss.krakow.pl/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
$stops_bus = fetchStops('http://91.223.13.70/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
echo '<?php'."\n";
echo '$stops = array ('."\n";
printStops($stops_tram, 't');
echo "\n";
printStops($stops_bus, 'b');
echo ');'."\n";