package dk.dr.radio.diverse;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import dk.dr.radio.net.Diverse;
/**
* Created by j on 19-02-14.
*/
public class P4Stedplacering {
/*
wget --referer 'http://www.dr.dk/radio' http://j.maxmind.com/app/geoip.js
*/
public static String findP4KanalnavnFraIP() throws Exception {
URL u = new URL("http://j.maxmind.com/app/geoip.js");
HttpURLConnection urlConnection = (HttpURLConnection) u.openConnection();
urlConnection.setRequestProperty("Referer", "http://www.dr.dk/radio");
urlConnection.setConnectTimeout(15000);
urlConnection.setReadTimeout(90 * 1000); // 1 1/2 minut
urlConnection.connect(); // http://stackoverflow.com/questions/8179658/urlconnection-getcontent-return-null
InputStream is = urlConnection.getInputStream();
if (urlConnection.getResponseCode() != 200)
throw new IOException("HTTP-svar var " + urlConnection.getResponseCode() + " " + urlConnection.getResponseMessage() + " for " + u);
String str = Diverse.læsStreng(is);
Log.d("p4Kanalnavn " + str);
double lat = 0, lon = 0;
/* str er nu
function geoip_country_name() { return 'Denmark'; }
function geoip_city() { return 'Copenhagen'; }
function geoip_region() { return '17'; }
function geoip_region_name() { return 'Hovedstaden'; }
function geoip_latitude() { return '55.6667'; }
function geoip_longitude() { return '12.5833'; }
function geoip_postal_code() { return ''; }
function geoip_area_code() { return ''; }
function geoip_metro_code() { return ''; }
eller, hvis regionen er ukendt:
function geoip_country_name() { return 'Denmark'; }
function geoip_city() { return ''; }
function geoip_region() { return ''; }
function geoip_region_name() { return ''; }
function geoip_latitude() { return '56.0000'; }
function geoip_longitude() { return '10.0000'; }
function geoip_postal_code() { return ''; }
function geoip_area_code() { return ''; }
function geoip_metro_code() { return ''; }
*/
for (String l : str.split("\\}")) {
Log.d("p4Kanalnavn lin " + l);
if (l.contains("latitude")) {
lat = Double.parseDouble(l.split("['\"]")[1]); // split efter '
} else if (l.contains("longitude")) {
lon = Double.parseDouble(l.split("['\"]")[1]); // split efter '
} else if (l.contains("country_name")) {
if (!"Denmark".equals(l.split("['\"]")[1])) return null; // Hop ud hvis vi er uden for Danmark
}
}
if (lat == 0 || lon == 0) return null;
if (lat == 56 && lon == 10) {
Log.d("Ukendt sted");
//lat = 55.6667; lon = 12.5833;
return null; // prøv igen senere
}
Log.d("p4Kanalnavn lat=" + lat + " lon=" + lon);
P4Geokoordinater.Omraade nærmeste = P4Geokoordinater.findNærmesteOmråde(lat, lon);
Log.d("p4Kanalnavn nærmere område: " + nærmeste.bynavn + " " + nærmeste.p4kode);
return nærmeste.p4kode;
}
/*
*/
/**
* Til afprøvning
*/
public static void main(String[] a) throws Exception {
findP4KanalnavnFraIP();
}
}