#!/usr/bin/php-cgi -q [-] // /** * Capitalize all words * @param string Data to capitalize * @param string Word delimiters * @return string Capitalized words */ function capitalizeWords($words, $charList = null) { // Use ucwords if no delimiters are given if (!isset($charList)) { return ucwords($words); } // Go through all characters $capitalizeNext = true; for ($i = 0, $max = strlen($words); $i < $max; $i++) { if (strpos($charList, $words[$i]) !== false) { $capitalizeNext = true; } else if ($capitalizeNext) { $capitalizeNext = false; $words[$i] = strtoupper($words[$i]); } } return $words; } setlocale(LC_CTYPE, "fi_FI"); // (thx to virus) $urlplace = "http://map.eniro.com/search/search.json?p=geo_fi&ap=geo_fi&q="; $urlroute = "http://map.eniro.com/route/route.json?waypoints="; array_shift($argv); // shiftataan skriptin nimi pois $speed = ""; if(intval($argv[0]) > 0) { $speed = $argv[0]; array_shift($argv); // nopeus pois } // matkan päät joko välilyönnillä, tai " - " erotettuna if(!strstr(implode(" ",$argv), " - ")) $query = $argv; else $query = explode(" - ",implode(" ",$argv)); # kun eggdrop kutsuu tätä, tulee parametrit iso-8859-1:llä, muutetaan ne tässä: # (oletuksena on, että skripti on tallennettu iso-8859-1-enkoodauksella, muutoin # seuraavassa koodissa ei ole järkeä ja se kannattaa kommentoida pois) if(strpbrk(implode(" ",$argv), "åäöÅÄÖ")) { $query[0] = utf8_encode($query[0]); $query[1] = utf8_encode($query[1]); } # lähtöpaikka $data1 = json_decode(@file_get_contents($urlplace . urlencode($query[0])), true); $lon1 = $data1["search"]["geo_fi"]["features"][0]["geometry"]["coordinates"][0]; $lat1 = $data1["search"]["geo_fi"]["features"][0]["geometry"]["coordinates"][1]; $street1 = strtolower(utf8_decode($data1["search"]["geo_fi"]["features"][0]["properties"]["address"]["streetName"])); $streetnum1 = strtolower(utf8_decode($data1["search"]["geo_fi"]["features"][0]["properties"]["address"]["streetNumber"])); if($streetnum1 != "") $street1 .= " " . $streetnum1; $city1 = strtolower(utf8_decode($data1["search"]["geo_fi"]["features"][0]["properties"]["address"]["city"])); $place1 = capitalizeWords(($street1 != $city1 ? "$street1, $city1" : $city1), " -"); if($lon1 == "" || $lat1 == "") return; # kohdepaikka $data2 = json_decode(@file_get_contents($urlplace . urlencode($query[1])), true); $lon2 = $data2["search"]["geo_fi"]["features"][0]["geometry"]["coordinates"][0]; $lat2 = $data2["search"]["geo_fi"]["features"][0]["geometry"]["coordinates"][1]; $street2 = strtolower(utf8_decode($data2["search"]["geo_fi"]["features"][0]["properties"]["address"]["streetName"])); $streetnum2 = strtolower(utf8_decode($data2["search"]["geo_fi"]["features"][0]["properties"]["address"]["streetNumber"])); if($streetnum2 != "") $street2 .= " " . $streetnum2; $city2 = strtolower(utf8_decode($data2["search"]["geo_fi"]["features"][0]["properties"]["address"]["city"])); $place2 = capitalizeWords(($street2 != $city2 ? "$street2, $city2" : $city2), " -"); if($lon2 == "" || $lat2 == "") return; if($lon1 == $lon2 && $lat2 == $lat1) return; # paikat haettu, haetaan itse reitti $data3 = json_decode(@file_get_contents($urlroute . "$lon1,$lat1;$lon2,$lat2"), true);; $duration = $data3["route-geometries"]["features"][0]["properties"]["duration"]; $length = $data3["route-geometries"]["features"][0]["properties"]["length"]; if(!intval($duration) || !intval($length)) return; $kilometers = $length/1000; $mikaaika = "ajoaika"; if(intval($speed) && $speed < 8) $mikaaika = "kävelyaika"; if(intval($speed) && $speed < 2) $mikaaika = "mateluaika"; $vauhdilla = "arvioitu $mikaaika "; if($speed != "") { $duration = round(60*60*$kilometers / $speed); $vauhdilla = "$mikaaika $speed km/h vauhdilla "; } // nämä järkevämmiksi: $matkanpituus = "$length metriä"; if($length > 5000) $matkanpituus = round($length/1000) . " km"; $ajoaika = "$duration sekuntia"; if($duration > 120) { $duration = round($duration / 60); $ajoaika = "$duration minuuttia"; if($duration > 60) $ajoaika = round($duration / 60) . " h " . $duration % 60 . " minuuttia"; } echo "Välimatka $place1 - $place2 on $matkanpituus, $vauhdilla$ajoaika"; ?>