Ja, in dem Link sehe ich meinen Ort und ich hab den auch eigentlich bei den beiden Weather Themes im html Editor richtig eingegeben!
Ich schieb mal den Onyx_Weather.theme Wallpaper.html / Onyx LS Weather LockBackground.html (sind identisch) hier rein:
ich heul gleich
<?xml version="1.0" encoding="UTF-8"?>
<html><head>
<base href="Images/"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style>
body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;height: 480px;width: 320px;background-color:transparent;}
</style>
<!---------------------------------------------------------------------------------------------------------------->
<!-- Direct the script to the general folder where the weather icons are located -->
<base href="Images/"/>
<!---------------------------------------------------------------------------------------------------------------->
<script type="text/javascript">
<!-- Weather Script -->
var locale = "657422"
var isCelsius = false //true|false
var useRealFeel = true //true|false
var enableWallpaper = true; //true|false
var enableLockScreen = true; //true|false
var stylesheetWall = 'Onyx'
var stylesheetLock = 'Onyx'
var iconSetWall = 'Illumine'
var iconExtWall = ".png"
var iconSetLock = 'Illumine'
var iconExtLock = '.png'
var source = 'yahooWeather'
var updateInterval = 60
var postal;
var demoMode = false;
var enabled;
var xmlReq = new XMLHttpRequest();
var launchReq = new XMLHttpRequest();
if (location.href.indexOf("Wallpaper") == -1){
stylesheet = stylesheetLock;
iconSet = iconSetLock;
iconExt = iconExtLock;
enabled = enableLockScreen;
}else{
stylesheet = stylesheetWall;
iconSet = iconSetWall;
iconExt = iconExtWall;
enabled = enableWallpaper;
}
if(enabled == true){
if(iconSet == null || iconSet == 'null' || iconSet == ""){
var iconSet = stylesheet;
}
var headID = document.getElementsByTagName("head")[0];
var styleNode = document.createElement('link');
styleNode.type = 'text/css';
styleNode.rel = 'stylesheet';
styleNode.href = 'Stylesheets/'+stylesheet+'.css';
headID.appendChild(styleNode);
var scriptNode = document.createElement('script');
scriptNode.type = 'text/javascript';
scriptNode.src = 'Sources/'+source+'.js';
headID.appendChild(scriptNode);
}
function onLoad(){
update();
if (enabled == true){
if (demoMode == true){
document.getElementById("weatherIcon").src="IconSets/"+iconSet+"/"+"cloudy1"+iconExt;
document.getElementById("city").innerText="Somewhere";
document.getElementById("desc").innerText="Partly Cloudy";
document.getElementById("temp").innerText="100º";
document.getElementById("forecast").innerText="Sun";
}else{
document.getElementById("weatherIcon").src="IconSets/"+iconSet+"/"+"dunno"+iconExt;
validateWeatherLocation(escape(locale).replace(/^%u/g, "%"), setPostal)
}
}else{
document.getElementsByTagName("body")[0].innerText='';
}
}
function convertTemp(num)
{
if (isCelsius == true)
return Math.round ((num - 32) * 5 / 9);
else
return num;
}
function setPostal(obj){
if (obj.error == false){
if(obj.cities.length > 0){
postal = escape(obj.cities[0].zip).replace(/^%u/g, "%")
document.getElementById("WeatherContainer").className = "";
weatherRefresherTemp();
}else{
document.getElementById("city").innerText="Not Found";
document.getElementById("WeatherContainer").className = "errorLocaleNotFound";
}
}else{
document.getElementById("city").innerText=obj.errorString;
document.getElementById("WeatherContainer").className = "errorLocaleValidate";
setTimeout('validateWeatherLocation(escape(locale).replace(/^%u/g, "%"), setPostal)', Math.round(1000*60*5));
}
}
function dealWithWeather(obj){
if (obj.error == false){
document.getElementById("city").innerText=obj.city;
document.getElementById("desc").innerText=obj.description.toLowerCase();
if(useRealFeel == true){
tempValue = convertTemp(obj.realFeel);
}else{
tempValue = convertTemp(obj.temp)
}
document.getElementById("temp").innerText=tempValue+"°";
document.getElementById("weatherIcon").src="IconSets/"+iconSet+"/"+MiniIcons[obj.icon]+iconExt;
/*ProductRed*/
lastResults = new Array;
lastResults[0] = {daycode:obj.daycode, icon:obj.icon, hi:obj.hi, lo:obj.lo, now:obj.temp};
var c = obj.forecast.length;
if (c > 6) c = 6; // just to be safe
var i = 0;
while (i < c)
{
var forecast = obj.forecast[i];
document.getElementById('day'+i).innerText = forecast.daycode;
document.getElementById('hi'+i).innerText = convertTemp(forecast.hi)+"°";;
document.getElementById('low'+i).innerText = convertTemp(forecast.lo)+"°";;
document.getElementById('wIcon'+i).src="IconSets/"+iconSet+"/"+MiniIcons[forecast.icon]+iconExt;
lastResults[i+1] = {daycode:forecast.daycode, icon:forecast.icon, hi:forecast.hi, lo:forecast.lo};
i = i + 1;
}
/*ProductRed*/
document.getElementById("WeatherContainer").className = "";
}else{
//Could be down to any number of things, which is unhelpful...
document.getElementById("WeatherContainer").className = "errorWeatherDataFetch";
}
}
function weatherRefresherTemp(){ //I'm a bastard ugly hack. Hate me.
fetchWeatherData(dealWithWeather,postal);
setTimeout(weatherRefresherTemp, 60*1000*updateInterval);
}
function showElement(name)
{
document.getElementById(name + "Icon").style.display = 'inline';
if (xmlReq.responseXML.getElementsByTagName("MMS")[0].firstChild.nodeValue == "1") {
document.getElementById("MMSNumber").innerHTML = "<img src='imgs/mms.png' />1 New Multimedia Message";
} else {
document.getElementById("MMSNumber").innerHTML = "<img src='imgs/mms.png' />" + xmlReq.responseXML.getElementsByTagName("MMS")[0].firstChild.nodeValue + " New Multimedia Messages";
}
if (xmlReq.responseXML.getElementsByTagName("SMS")[0].firstChild.nodeValue == "1") {
document.getElementById("SMSNumber").innerHTML = "<img src='imgs/sms.png' />1 New Text Message";
} else {
document.getElementById("SMSNumber").innerHTML = "<img src='imgs/sms.png' />" + xmlReq.responseXML.getElementsByTagName("SMS")[0].firstChild.nodeValue + " New Text Messages";
}
if (xmlReq.responseXML.getElementsByTagName("Call")[0].firstChild.nodeValue == "1") {
document.getElementById("CallNumber").innerHTML = "<img src='imgs/call.png' />1 Missed Call/Voicemail";
} else {
document.getElementById("CallNumber").innerHTML = "<img src='imgs/call.png' />" + xmlReq.responseXML.getElementsByTagName("Call")[0].firstChild.nodeValue + " Missed Calls/Voicemails";
}
if (xmlReq.responseXML.getElementsByTagName("Mail")[0].firstChild.nodeValue == "1") {
document.getElementById("MailNumber").innerHTML = "<img src='imgs/mail.png' />1 New E-Mail";
} else {
document.getElementById("MailNumber").innerHTML = "<img src='imgs/mail.png' />" + xmlReq.responseXML.getElementsByTagName("Mail")[0].firstChild.nodeValue + " New E-Mails";
}
if (xmlReq.responseXML.getElementsByTagName("IM")[0].firstChild.nodeValue == "1") {
document.getElementById("IMNumber").innerHTML = "<img src='imgs/im.png' />1 New Instant Message";
} else {
document.getElementById("IMNumber").innerHTML = "<img src='imgs/im.png' />" + xmlReq.responseXML.getElementsByTagName("IM")[0].firstChild.nodeValue + " New Instant Messages";
}
}
function hideElement(name)
{
document.getElementById(name + "Icon").style.display = 'none';
}
function updateIcon(name)
{
var show = 0;
try
{
if (xmlReq.responseXML.getElementsByTagName(name)[0].firstChild.nodeValue != "0")
show = 1;
}
catch(error)
{
}
if (show)
showElement(name);
else
hideElement(name);
}
function processXml()
{
if (xmlReq.readyState != 4)
return;
if (xmlReq.status != 200 && xmlReq.status != 0)
return;
updateIcon("Calendar");
updateIcon("Call");
updateIcon("RSS");
updateIcon("MMS");
updateIcon("SMS");
updateIcon("IM");
updateIcon("Mail");
updateIcon("Silent");
}
function update()
{
xmlReq.onreadystatechange = processXml;
xmlReq.timeout = 2000;
xmlReq.open("GET", "http://127.0.0.1:16322/status", true);
xmlReq.send();
setTimeout(update, 3000);
}
function iconClick(name)
{
}
// Modified from weatherParser.js from Leopard. Apologies to all offended.
// I'm hoping that no-one objects since it's Apple hardware and so forth.
/*
Copyright _ 2005, Apple Computer, Inc. All rights reserved.
NOTE: Use of this source code is subject to the terms of the Software
License Agreement for Mac OS X, which accompanies the code. Your use
of this source code signifies your agreement to such license terms and
conditions. Except as expressly granted in the Software License Agreement
for Mac OS X, no other copyright, patent, or other intellectual property
license or right is granted, either expressly or by implication, by Apple.
*/
var MiniIcons = //Fix Up for weatherParser.js but also enables standardisation of sorts
[
"sunny", // 1 Sunny
"cloudy1", // 2 Mostly Sunny
"cloudy2", // 3 Partly Sunny
"cloudy3", // 4 Intermittent Clouds
"cloudy4", // 5 Hazy Sunshione
"cloudy5", // 6 Mostly Cloudy
"cloudy5", // 7 Cloudy (am/pm)
"overcast", // 8 Dreary (am/pm)
"dunno", // 9 retired
"dunno", // 10 retired
"fog", // 11 fog (am/pm)
"shower1", // 12 showers (am/pm)
"shower3", // 13 Mostly Cloudy with Showers
"shower2", // 14 Partly Sunny with Showers
"tstorm3", // 15 Thunderstorms (am/pm)
"tstorm2", // 16 Mostly Cloudy with Thunder Showers
"tstorm1", // 17 Partly Sunnty with Thunder Showers
"light_rain", // 18 Rain (am/pm)
"cloudy5", // 19 Flurries (am/pm)
"cloudy4", // 20 Mostly Cloudy with Flurries
"cloudy2", // 21 Partly Sunny with Flurries
"snow5", // 22 Snow (am/pm)
"snow3", // 23 Mostly Cloudy with Snow
"hail", // 24 Ice (am/pm)
"sleet", // 25 Sleet (am/pm)
"hail", // 26 Freezing Rain (am/pm)
"dunno", // 27 retired
"dunno", // 28 retired
"sleet", // 29 Rain and Snow Mixed (am/pm)
"sunny", // 30 Hot (am/pm)
"sunny_night", // 31 Cold (am/pm)
"mist", // 32 Windy (am/pm)
// Night only Icons;
"sunny_night", // 33 Clear
"cloudy1_night", // 34 Mostly Clear
"cloudy2_night", // 35 Partly Cloudy
"cloudy3_night", // 36 Intermittent Clouds
"cloudy4_night", // 37 Hazy
"cloudy5", // 38 Mostly Cloudy
"shower2_night", // 39 Partly Cloudy with Showers
"shower3_night", // 40 Mostly Cloudy with Showers
"tstorm1_night", // 41 Partly Cloudy with Thunder Showers
"tstorm2_night", // 42 Mostly Cloudy with Thunder Showers
"cloudy4_night", // 43 Mostly Cloudy with Flurries
"cloudy4_night" // 44 Mostly Cloudy with Flurries
];
function getURLForSmallIcon (code)
{
var src = '';
if (code)
{
src = miniIconTable[code];
if (src === undefined)
src = '';
}
return src;
}
function findChild (element, nodeName)
{
var child;
for (child = element.firstChild; child != null; child = child.nextSibling)
{
if (child.nodeName == nodeName)
return child;
}
return null;
}
function trimWhiteSpace (string)
{
return string.replace(/^\s*/, '').replace(/\s*$/, '');
}
// returns an anonymous object like so
// object
// error: Boolean false for success
// errorString: failure string
// hi: Fahrenheit
// lo: Fahrenheit
// temp: Fahrenheit
// realFeel: Farenheit
// icon : accuweather icon code
// description: accuweather description
// city: City (first caps)
// time: time 24 hours(nn:nn)
// sunset: time 24 hours (nn:nn)
// sunrise: time 24 hours (nn:nn)
function fetchWeatherData (callback, zip)
{
//var url = 'http://apple.accuweather.com/adcbin/apple/Apple_Weather_Data.asp?zipcode=';
var url = 'http://wu.apple.com/adcbin/apple/Apple_Weather_Data.asp?zipcode=';
if (window.timerInterval != 300000)
window.timerInterval = 300000; // 5 minutes
var xml_request = new XMLHttpRequest();
xml_request.onload = function(e) {xml_loaded(e, xml_request, callback);}
xml_request.overrideMimeType("text/xml");
xml_request.open("GET", url+zip);
xml_request.setRequestHeader("Cache-Control", "no-cache");
xml_request.setRequestHeader("wx", "385");
xml_request.send(null);
return xml_request;
}
function constructError (string)
{
return {error:true, errorString:string};
}
// parses string of the form nn:nn
function parseTimeString(string)
{
var obj = null;
try {
var array = string.match (/\d{1,2}/g);
obj = {hour:parseInt(array[0], 10), minute:parseInt(array[1],10)};
}
catch (ex)
{
// ignore
}
return obj;
}
function parseDayCode (dayCode)
{
return trimWhiteSpace(dayCode).substr (0, 3).toUpperCase();
}
function xml_loaded (event, request, callback)
{
if (request.responseXML)
{
var obj = {error:false, errorString:null};
var adc_Database = findChild (request.responseXML, "adc_Database");
if (adc_Database == null) {callback(constructError("no <adc_Database>")); return;}
var CurrentConditions = findChild (adc_Database, "CurrentConditions");
if (CurrentConditions == null) {callback(constructError("no <CurrentConditions>")); return;}
var tag = findChild (CurrentConditions, "Time");
if (tag != null)
obj.time = parseTimeString (tag.firstChild.data);
else
obj.time = null;
tag = findChild (CurrentConditions, "City");
if (tag == null) {callback(constructError("no <City>")); return;}
obj.city = trimWhiteSpace(tag.firstChild.data.toString()).toLowerCase();
tag = findChild (CurrentConditions, "Temperature");
if (tag == null) {callback(constructError("no <Temperature>")); return;}
obj.temp = parseInt (tag.firstChild.data);
tag = findChild (CurrentConditions, "RealFeel");
if (tag == null) {callback(constructError("no <RealFeel>")); return;}
obj.realFeel = parseInt (tag.firstChild.data);
tag = findChild (CurrentConditions, "WeatherText");
if (tag == null)
obj.description = null;
else
obj.description = trimWhiteSpace(tag.firstChild.data);
tag = findChild (CurrentConditions, "WeatherIcon");
if (tag == null) {callback(constructError("no <WeatherIcon>")); return;}
obj.icon = parseInt (tag.firstChild.data, 10);
obj.icon -= 1; //Accuweather starts at 1
obj.sunset = null;
obj.sunrise = null;
var Planets = findChild (adc_Database, "Planets");
if (Planets != null)
{
tag = findChild (Planets, "Sun");
if (tag != null)
{
var rise = tag.getAttribute("rise");
var set = tag.getAttribute("set");
if (rise != null && set != null)
{
obj.sunset = parseTimeString (set);
obj.sunrise = parseTimeString(rise);
}
}
}
obj.forecast = new Array;
var Forecast = findChild (adc_Database, "Forecast");
if (Forecast == null) {callback(constructError("no <Forecast>")); return;}
// assume the days are in order, 1st entry is today
var child;
var j=0;
var firstTime = true;
for (child = Forecast.firstChild; child != null; child = child.nextSibling)
{
if (child.nodeName == 'day')
{
if (firstTime) // today
{
obj.hi = 0;
tag = findChild(child, 'High_Temperature');
if (tag != null)
obj.hi = parseInt (tag.firstChild.data);
obj.lo = 0;
tag = findChild(child, 'Low_Temperature');
if (tag != null)
obj.lo = parseInt (tag.firstChild.data);
firstTime = false;
}
var foreobj = {daycode:null, hi:0, lo:0, icon:-1};
tag = findChild(child, 'DayCode');
if (tag != null)
foreobj.daycode = trimWhiteSpace(tag.firstChild.data.toString()).substring(1,3);
tag = findChild(child, 'High_Temperature');
if (tag != null)
foreobj.hi = parseInt (tag.firstChild.data);
tag = findChild(child, 'Low_Temperature');
if (tag != null)
foreobj.lo = parseInt (tag.firstChild.data);
tag = findChild(child, 'WeatherIcon');
if (tag != null)
{
foreobj.icon = parseInt (tag.firstChild.data, 10);
foreobj.ouricon = MiniIcons[foreobj.icon-1];
}
tag = findChild (child, "DayCode");
if (tag != null)
foreobj.daycode = parseDayCode(tag.firstChild.data);
else
foreobj.daycode = null;
alert(j);
obj.forecast[j++]=foreobj;
if (j == 7) break; // only look ahead 7 days
}
}
callback (obj);
}
else
{
callback ({error:true, errorString:"XML request failed. no responseXML"}); //Could be any number of things..
}
}
// returns an anonymous object like so
// object
// error: Boolean false for success
// errorString: failure string
// cities: array (alphabetical by name)
// object
// name: city name
// zip: postal code
// state: city state
// refine: boolean - true if the search is too generic
function validateWeatherLocation (location, callback)
{
//var url = 'http://apple.accuweather.com/adcbin/apple/Apple_find_city.asp?location=';
var url = 'http://wu.apple.com/adcbin/apple/Apple_find_city.asp?location=';
var xml_request = new XMLHttpRequest();
xml_request.onload = function(e) {xml_validateloaded(e, xml_request, callback);}
xml_request.overrideMimeType("text/xml");
xml_request.open("GET", url+location);
xml_request.setRequestHeader("Cache-Control", "no-cache");
xml_request.send(null);
}
function xml_validateloaded (event, request, callback)
{
if (request.responseXML)
{
var obj = {error:false, errorString:null, cities:new Array, refine:false};
var adc_Database = findChild (request.responseXML, "adc_Database");
if (adc_Database == null) {callback(constructError("no <adc_Database>")); return;}
var CityList = findChild (adc_Database, "CityList");
if (CityList == null) {callback(constructError("no <CityList>")); return;}
if (CityList.getAttribute('extra_cities') == '1')
obj.refine = true;
for (child = CityList.firstChild; child != null; child = child.nextSibling)
{
if (child.nodeName == "location")
{
var city = child.getAttribute("city");
var state = child.getAttribute("state");
var zip = child.getAttribute("postal");
if (city && state && zip)
{
obj.cities[obj.cities.length] = {name:city, state:state, zip:zip};
}
}
}
callback (obj);
}
else
{
callback ({error:true, errorString:"No Response"});
}
}
function createGoToURL (location)
{
return 'http://apple.accuweather.com/adcbin/apple/Apple_weather.asp?location=' + escape(location);
}
</script>
<body onload="onLoad()">
<div id="pagewrap">
<div id="bottom">
<img
src="bottom.png" width="320" height="480" /></div>
</head>
<body onLoad="onLoad()">
<div id="WeatherContainer">
<div id="TextContainer">
<p id="desc">-</p>
<p id="temp">-</p>
<p id="city"> </p>
</div>
<div id="Forecast" >
<div id="day0" ></div>
<div id="day1" ></div>
<div id="day2" ></div>
<div id="day3" ></div>
</div><div id="Forecast" >
<div id="icon0" ><img id="wIcon0" src="IconSets/none.png"/></div>
<div id="icon1" ><img id="wIcon1" src="IconSets/none.png"/></div>
<div id="icon2" ><img id="wIcon2" src="IconSets/none.png"/></div>
<div id="icon3" ><img id="wIcon3" src="IconSets/none.png"/></div>
</div><div id="Forecast" >
<div id="temp0"><div id="hi0" ></div><div id="low0" ></div></div>
<div id="temp1"><div id="hi1" ></div><div id="low1" ></div></div>
<div id="temp2"><div id="hi2" ></div><div id="low2" ></div></div>
<div id="temp3"><div id="hi3" ></div><div id="low3" ></div></div>
</div>
<img id="weatherIcon" src=""/IconSets/Illumine>
</div></div>
</body>
<table style="position: absolute;top: 0px; left: -1px; width: 320px; height: 461px;">
<tr align="right" valign="top" border="0" cellpadding="0">
<td height="12" valign="top" margin-left="20">
<span id="clock">
<script language="JavaScript">updateClock(); setInterval('updateClock()', 1000 )</script></span>
</td>
</tr>
</table>
<table style="position: absolute;top: 0px; left: 0px; width: 0px; height: 461px;">
<tr align="left" valign="top" border="0" cellpadding="0">
<td height="12" valign="top" margin-left="20">
<span id="ampm">
<script language="JavaScript">amPm(); setInterval('amPm()', 1000 )</script> </span>
</td>
</tr>
</table>
<table style="position: absolute;top: 0px; left: -1px; width: 0px; height: 461px;">
<tr align="right" valign="top" border="0" cellpadding="0">
<td height="12" valign="top" margin-left="20">
<span id="weekday">
<script language="JavaScript">calendarDate(); setInterval('calendarDate()', 1000 )</script></span>
</td>
</tr>
</table>
<table style="position: absolute;top: 0px; left: -1px; width: 320px; height: 461px;">
<tr align="left" valign="top" border="0" cellpadding="0">
<td height="12" valign="top" margin-left="20" >
<span id="date">
<script language="JavaScript">calendarDate(); setInterval('calendarDate()', 1000 )</script>
</span>
<td></td>
</tr>
</table>
<table style="position: absolute;top: 0px; left: -1px; width: 320px; height: 461px;">
<tr align="left" valign="top" border="0" cellpadding="0">
<td height="12" valign="top" margin-left="20" >
<span id="month">
<script language="JavaScript">calendarDate(); setInterval('calendarDate()', 1000 )</script>
</span>
<td></td>
</tr>
</table>
<table style="position: absolute;top: 0px; left: -1px; width: 320px; height: 461px;">
<tr align="left" valign="top" border="0" cellpadding="0">
<td height="12" valign="top" margin-left="20" >
<span id="year">
<script language="JavaScript">calendarDate(); setInterval('calendarDate()', 1000 )</script>
</span>
<td></td>
</tr>
</table>
</body></html>
ähm, mal ne evtl. dumme frage, holt das Theme sich die Daten über yahoo oder apple???
//var url = 'http://apple.accuweather.com/adcbin/apple/Apple_find_city.asp?location=';
var url = 'http://wu.apple.com/adcbin/apple/Apple_find_city.asp?location=';
hab ich in dem wirrwarr jetzt eben gelesen, bin aber mit html überhaupt nicht befreundet