Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/php-cgi -q
- <?php
- //
- // eniroreitti.cgi by Addic
- // v0.1
- //
- // hakee matka-ajan ja pituuden kahden paikan välillä suomessa, käyttäen eniron reittihakua
- // skripti olettaa, että on talletettu levylle iso-8859-1-encodingilla
- //
- // käyttö:
- // eniroreitti.cgi [nopeus km/h] <lähtöpaikka> [-] <kohdepaikka>
- //
- /**
- * 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";
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement