Ticket #3327: mythweather.diff

File mythweather.diff, 25.7 KB (added by maverik044, 11 years ago)

patch to use xoap.weather.com instead.

Line 
1Binary files ../mythplugins-orig/mythweather/mythweather/libmythweather.so and ./mythweather/mythweather/libmythweather.so differ
2Binary files ../mythplugins-orig/mythweather/mythweather/main.o and ./mythweather/mythweather/main.o differ
3diff -rup ../mythplugins-orig/mythweather/mythweather/Makefile ./mythweather/mythweather/Makefile
4--- ../mythplugins-orig/mythweather/mythweather/Makefile        2007-04-14 01:32:02.000000000 -0400
5+++ ./mythweather/mythweather/Makefile  2007-04-21 00:54:14.000000000 -0400
6@@ -187,6 +187,56 @@ install_installimages: all
7        -$(INSTALL_FILE) "images/sunny.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
8        -$(INSTALL_FILE) "images/thunshowers.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
9        -$(INSTALL_FILE) "images/unknown.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
10+       -$(INSTALL_FILE) "images/0.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
11+       -$(INSTALL_FILE) "images/1.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
12+       -$(INSTALL_FILE) "images/2.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
13+       -$(INSTALL_FILE) "images/3.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
14+       -$(INSTALL_FILE) "images/4.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
15+       -$(INSTALL_FILE) "images/5.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
16+       -$(INSTALL_FILE) "images/6.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
17+       -$(INSTALL_FILE) "images/7.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
18+       -$(INSTALL_FILE) "images/8.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
19+       -$(INSTALL_FILE) "images/9.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
20+       -$(INSTALL_FILE) "images/10.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
21+       -$(INSTALL_FILE) "images/11.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
22+       -$(INSTALL_FILE) "images/12.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
23+       -$(INSTALL_FILE) "images/13.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
24+       -$(INSTALL_FILE) "images/14.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
25+       -$(INSTALL_FILE) "images/15.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
26+       -$(INSTALL_FILE) "images/16.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
27+       -$(INSTALL_FILE) "images/17.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
28+       -$(INSTALL_FILE) "images/18.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
29+       -$(INSTALL_FILE) "images/19.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
30+       -$(INSTALL_FILE) "images/20.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
31+       -$(INSTALL_FILE) "images/21.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
32+       -$(INSTALL_FILE) "images/22.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
33+       -$(INSTALL_FILE) "images/23.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
34+       -$(INSTALL_FILE) "images/24.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
35+       -$(INSTALL_FILE) "images/25.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
36+       -$(INSTALL_FILE) "images/26.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
37+       -$(INSTALL_FILE) "images/27.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
38+       -$(INSTALL_FILE) "images/28.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
39+       -$(INSTALL_FILE) "images/29.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
40+       -$(INSTALL_FILE) "images/30.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
41+       -$(INSTALL_FILE) "images/31.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
42+       -$(INSTALL_FILE) "images/32.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
43+       -$(INSTALL_FILE) "images/33.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
44+       -$(INSTALL_FILE) "images/34.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
45+       -$(INSTALL_FILE) "images/35.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
46+       -$(INSTALL_FILE) "images/36.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
47+       -$(INSTALL_FILE) "images/37.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
48+       -$(INSTALL_FILE) "images/38.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
49+       -$(INSTALL_FILE) "images/39.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
50+       -$(INSTALL_FILE) "images/40.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
51+       -$(INSTALL_FILE) "images/41.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
52+       -$(INSTALL_FILE) "images/42.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
53+       -$(INSTALL_FILE) "images/43.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
54+       -$(INSTALL_FILE) "images/44.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
55+       -$(INSTALL_FILE) "images/45.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
56+       -$(INSTALL_FILE) "images/46.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
57+       -$(INSTALL_FILE) "images/na.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
58+       -$(INSTALL_FILE) "images/weather_logo.png" "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
59+
60 
61 
62 uninstall_installimages:
63@@ -210,6 +260,55 @@ uninstall_installimages:
64        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/sunny.png"
65        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/thunshowers.png"
66        -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/unknown.png"
67+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/0.png"
68+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/1.png"
69+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/2.png"
70+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/3.png"
71+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/4.png"
72+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/5.png"
73+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/6.png"
74+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/7.png"
75+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/8.png"
76+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/9.png"
77+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/10.png"
78+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/11.png"
79+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/12.png"
80+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/13.png"
81+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/14.png"
82+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/15.png"
83+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/16.png"
84+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/17.png"
85+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/18.png"
86+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/19.png"
87+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/20.png"
88+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/21.png"
89+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/22.png"
90+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/23.png"
91+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/24.png"
92+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/25.png"
93+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/26.png"
94+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/27.png"
95+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/28.png"
96+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/29.png"
97+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/30.png"
98+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/31.png"
99+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/32.png"
100+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/33.png"
101+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/34.png"
102+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/35.png"
103+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/36.png"
104+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/37.png"
105+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/38.png"
106+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/39.png"
107+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/40.png"
108+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/41.png"
109+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/42.png"
110+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/43.png"
111+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/44.png"
112+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/45.png"
113+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/46.png"
114+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/na.png"
115+       -$(DEL_FILE) -r "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/weather_logo.png"
116        -$(DEL_DIR) "$(INSTALL_ROOT)/usr/share/mythtv/themes/default/"
117 
118diff -rup ../mythplugins-orig/mythweather/mythweather/weather.cpp ./mythweather/mythweather/weather.cpp
119--- ../mythplugins-orig/mythweather/mythweather/weather.cpp     2007-03-26 23:20:23.000000000 -0400
120+++ ./mythweather/mythweather/weather.cpp       2007-04-21 00:46:40.000000000 -0400
121@@ -1549,13 +1549,13 @@ void Weather::cursorRight()
122 
123         if (tp == 6)
124              tp = 1;
125-
126+/*
127         if (tp == 3 && pastTime == true)
128                 tp = 4;
129 
130         if (tp == 4 && pastTime == false)
131                 tp = 5;
132-
133+*/
134         showLayout(tp);
135    }
136    else if (deepSetup == false)
137@@ -1659,13 +1659,13 @@ void Weather::cursorLeft()
138         
139         if (tp == 0)
140              tp = 5;
141-
142+/*
143         if (tp == 3 && pastTime == true)
144                 tp = 2;
145 
146         if (tp == 4 && pastTime == false)
147                 tp = 3;
148-
149+*/
150         showLayout(tp);
151    }
152    else if (deepSetup == true)
153@@ -1736,12 +1736,12 @@ void Weather::nextpage_timeout()
154    tp++;
155    if (tp > 5)
156         tp = 1;
157-
158+/*
159    if (tp == 3 && pastTime == true)
160         tp = 4;
161    if (tp == 4 && pastTime == false)
162         tp = 5;
163-
164+*/
165    showLayout(tp);
166 
167 }
168@@ -1783,12 +1783,12 @@ void Weather::update_timeout()
169 
170     if (result == true)
171     {
172-
173+/*
174     if (pastTime == true && currentPage == 3 && inSetup == false)
175         nextpage_timeout();
176     if (pastTime == false && currentPage == 4 && inSetup == false)
177         nextpage_timeout();
178-
179+*/
180     if (firstRun == true && inSetup == false)
181         nextpage_Timer->start((int)(1000 * nextpageInterval));
182 
183@@ -1891,7 +1891,11 @@ void Weather::update_timeout()
184 
185     QString todayDesc;
186 
187-    todayDesc = tr("Today a high of ") + highTemp[0] + tr(" and a low of ");
188+    if (highTemp[0] != "N/A")
189+        todayDesc = tr("Today expect a high of ") + highTemp[0] + tr(" and a low of ");
190+    else
191+        todayDesc = tr("Today expect a low of ");
192+
193     todayDesc += lowTemp[0] + tr(". Currently there is a humidity of ");
194     todayDesc += curHumid + tr("% and the winds are");
195 
196@@ -1905,7 +1909,7 @@ void Weather::update_timeout()
197                 todayDesc += tr(" coming in at ") + curWind + tr(" Km/h from the ") + tr(winddir) + ".";
198     }
199   
200-    if (visibility.toFloat() == 999.00)
201+    if (visibility == "Unlimited")
202         todayDesc += tr(" Visibility will be unlimited for today.");
203     else
204     {
205@@ -1926,27 +1930,37 @@ void Weather::update_timeout()
206     QString tomDesc;
207 
208     QString tomDate;
209-    if (date[0].upper() == "SUN")
210+/*
211+    if (date[1].upper() == "SUN")
212         tomDate = tr("Sunday");
213-    else if (date[0].upper() == "MON")
214+    else if (date[1].upper() == "MON")
215         tomDate = tr("Monday");
216-    else if (date[0].upper() == "TUE")
217+    else if (date[1].upper() == "TUE")
218         tomDate = tr("Tuesday");
219-    else if (date[0].upper() == "WED")
220+    else if (date[1].upper() == "WED")
221         tomDate = tr("Wednesday");
222-    else if (date[0].upper() == "THU")
223+    else if (date[1].upper() == "THU")
224         tomDate = tr("Thursday");
225-    else if (date[0].upper() == "FRI")
226+    else if (date[1].upper() == "FRI")
227         tomDate = tr("Friday");
228-    else if (date[0].upper() == "SAT")
229+    else if (date[1].upper() == "SAT")
230         tomDate = tr("Saturday");
231     else
232         tomDate = tr("Date Error");
233+*/
234 
235-    tomDesc = tr("Tomorrow expect a high of ") + highTemp[0] + tr(" and a low of ");
236-    tomDesc += lowTemp[0] + tr(".");
237+    tomDate = tr(" ") + date[1];
238+    tomDesc = tr("Expect high of ") + highTemp[1] + tr(", low of ");
239+    tomDesc += lowTemp[1] + tr(" and humidity ") + humid[1];
240+//    tomDesc += tr("%. The prob of precip is ") + precip[1];
241+    tomDesc += tr("%. Winds ") + wind[1];
242+    if (convertData == false)
243+      tomDesc += tr(" mph ") + tr(wdir[1]) + ".";
244+    else
245+      tomDesc += tr(" Km/h ") + tr(wdir[1]) + ".";
246 
247-    QString tomCond = tr("Expected conditions: ") + weatherType[0];
248+    QString tomCond = tr("Expected conditions: ") + weatherType[1];
249+    tomCond += tr(" pp ") + precip[1] + tr("%");
250 
251     container = theme->GetSet("weatherpages");
252     if (container)
253@@ -1959,7 +1973,7 @@ void Weather::update_timeout()
254         itype = (UIImageType *)container->GetType("todaypic");
255         if (itype)
256         {
257-            itype->SetImage(weatherIcon[0]);
258+            itype->SetImage(weatherIcon[1]);
259             itype->LoadImage();
260         }
261 
262@@ -1998,12 +2012,15 @@ void Weather::update_timeout()
263         SetText(container, "low1", lowTemp[1]);
264         SetText(container, "low2", lowTemp[2]);
265         SetText(container, "low3", lowTemp[3]);
266+        SetText(container, "precip1", precip[1]);
267+        SetText(container, "precip2", precip[2]);
268+        SetText(container, "precip3", precip[3]);
269     }
270 
271     container = theme->GetSet("weatherpages");
272     if (container)
273     {
274-         SetText(container, "updatetime", tr("Weather data from: ") + updated);
275+         SetText(container, "updatetime", tr("Weather data last updated: ") + updated);
276     }
277 
278     if (firstRun == true)
279@@ -2127,15 +2144,29 @@ bool Weather::UpdateData()
280 
281     if (haveData == true)
282     {
283+        getCurrentConditions();
284+
285+       getForecast();
286+   
287+        return true;
288+    }
289+   
290+    return false;
291+}
292 
293-        //updated = GetString("this.swLastUp");
294-        updated = QDateTime::currentDateTime().toString(gContext->GetSetting("dateformat") +
295-                  " " + gContext->GetSetting("timeformat"));
296-        city = GetString("this.swCity");
297-        state = GetString("this.swSubDiv");
298-        country = GetString("this.swCountry");
299-        curTemp = GetString("this.swTemp");
300-        if (curTemp.length() == 0)
301+void Weather::getCurrentConditions()
302+{
303+       QString cc, wind, bar, uv;
304+
305+      //  updated = QDateTime::currentDateTime().toString(gContext->GetSetting("dateformat") +  " " + gContext->GetSetting("timeformat"));
306+        city = GetString(httpData, "<dnam>", "</dnam>");
307+  //      state = GetString("this.swSubDiv");
308+  //      country = GetString("this.swCountry");
309+        updated = GetString(httpData, "<lsup>", "</lsup>");
310+        cc = GetString(httpData, "<cc>", "</cc>");
311+        curTemp = GetString(cc, "<tmp>", "</tmp>");
312+
313+        if ( (curTemp.length() == 0) || (curTemp == "N/A") )
314         {
315             curTemp = "-na-";
316             updated = updated + tr(" (Not All Information Available)");
317@@ -2152,20 +2183,25 @@ bool Weather::UpdateData()
318             }
319         }
320     
321-        curIcon = GetString("this.swCIcon");
322-        curWind = GetString("this.swWindS");
323+        curIcon = "weather/" + GetString(cc, "<icon>", "</icon>") + ".png";
324+               
325+       wind = GetString(cc, "<wind>", "</wind>");
326+       bar  = GetString(cc, "<bar>", "</bar>");
327+       uv   = GetString(cc, "<uv>", "</uv>");
328+
329+        curWind = GetString(wind, "<s>", "</s>");
330         if (convertData == true)
331         {
332-            char tempHold[32];
333-            double tTemp = curWind.toDouble();
334-            double nTemp = (double)(tTemp*1.6);
335-            sprintf (tempHold, "%d", (int)nTemp);
336-            curWind = tempHold;
337+            char windHold[32];
338+            double tWind = curWind.toDouble();
339+            double nWind = (double)(tWind*1.6);
340+            sprintf (windHold, "%d", (int)nWind);
341+            curWind = windHold;
342         }
343     
344-        winddir = GetString("this.swWindD");
345+        winddir = GetString(wind, "<t>", "</t>");
346     
347-        barometer = GetString("this.swBaro");
348+        barometer = GetString(bar, "<r>", "</r>");
349         if (convertData == true)
350         {
351             char tempHold[32];
352@@ -2175,8 +2211,8 @@ bool Weather::UpdateData()
353             barometer = tempHold;
354         }
355         
356-        curHumid = GetString("this.swHumid");
357-        curFeel = GetString("this.swReal");
358+        curHumid = GetString(cc, "<hmid>", "</hmid>");
359+        curFeel = GetString(cc, "<flik>", "</flik>");
360         if (convertData == true)
361         {
362             char tempHold[32];
363@@ -2186,9 +2222,9 @@ bool Weather::UpdateData()
364             curFeel = tempHold;
365         }
366         
367-        uvIndex = GetString("this.swUV");
368-        visibility = GetString("this.swVis");
369-        if (convertData == true && visibility.toDouble() != 999.0)
370+        uvIndex = GetString(uv, "<i>", "</i>");
371+        visibility = GetString(cc, "<vis>", "</vis>");
372+        if (convertData == true && visibility.toDouble() != 999.0 && visibility != "Unlimited")
373         {
374             char tempHold[32];
375             double tTemp = visibility.toDouble();
376@@ -2197,89 +2233,65 @@ bool Weather::UpdateData()
377             visibility = tempHold;
378         }
379         
380-        description = GetString("this.swConText");
381+        description = GetString(cc, "<t>", "</t>");
382         if (description.length() == 0)
383-            description = curIcon;
384+            description = "N/A";
385+}
386+
387+void Weather::getForecast()
388+{
389+       QString forecast, d, day, start_tag, wd;
390+        char str[24];
391         
392-        QString forecastData;
393-        forecastData = GetString("this.swFore");
394-   
395-        QStringList holdings = QStringList::split("|", forecastData);
396-   
397-        int years, mons, days;
398-   
399-        int dayNum = (holdings[0]).toInt();
400-        QDate curDay(QDate::currentDate());
401-        int curDayNum = curDay.dayOfWeek();
402-        if (curDayNum == 7)
403-            curDayNum = 1;
404-        else
405-            curDayNum++;
406-   
407-        if (curDayNum != dayNum)
408-            pastTime = true;
409-        else
410-            pastTime = false;
411-   
412-        for (int i = 5; i < 9; i++)
413-        {
414-            QStringList dates = QStringList::split("/", holdings[i]);
415-            years = dates[2].toInt();
416-            mons = dates[0].toInt();
417-            days = dates[1].toInt();
418-            QDate doDate(years, mons, days);
419-            switch (doDate.dayOfWeek())
420-            {
421-                case 1: date[i - 5] = QString("MON"); break;
422-                case 2: date[i - 5] = QString("TUE"); break;
423-                case 3: date[i - 5] = QString("WED"); break;
424-                case 4: date[i - 5] = QString("THU"); break;
425-                case 5: date[i - 5] = QString("FRI"); break;
426-                case 6: date[i - 5] = QString("SAT"); break;
427-                case 7: date[i - 5] = QString("SUN"); break;
428-            }
429-        }
430-   
431-        for (int i = 9; i < 13; i++)
432-            weatherIcon[i - 9] = holdings[i];
433-   
434-        for (int i = 20; i < 24; i++)
435+       pastTime = true;
436+
437+        for (int i = 0; i < 5; i++)
438         {
439-            if (convertData == true)
440+            sprintf(str, "<day d=\"%i\"", i);
441+            start_tag = QString(str);
442+            forecast = GetString(httpData, start_tag, "</day>");
443+           highTemp[i] = GetString(forecast, "<hi>", "</hi>");
444+           lowTemp[i]  = GetString(forecast, "<low>", "</low>");
445+
446+           d = GetString(forecast, "<part p=\"d\">", "</part>");
447+            wd = GetString(d, "<wind>", "</wind>");
448+
449+           precip[i] = GetString(d, "<ppcp>", "</ppcp>");
450+           humid[i] = GetString(d, "<hmid>", "</hmid>");
451+            wind[i]  = GetString(wd, "<d>", "</d>");
452+            wdir[i]  = GetString(wd, "<t>", "</t>");
453+           weatherIcon[i] = "weather/" + GetString(d, "<icon>", "</icon>") + ".png";
454+
455+           weatherType[i] = GetString(d, "<t>", "</t>");
456+           date[i] = GetString(forecast, "t=\"", "\" dt=");
457+
458+            if ( (convertData == true) && (highTemp[i] != "N/A") )
459             {
460                 char tempHold[32];
461-                double tTemp = holdings[i].toDouble();
462+                double tTemp = highTemp[i].toDouble();
463                 double nTemp = (double)(5.0/9.0)*(tTemp - 32.0);
464                 sprintf (tempHold, "%d", (int)nTemp);
465-                holdings[i] = tempHold;
466+                highTemp[i] = tempHold;
467             }
468-            highTemp[i - 20] = holdings[i];
469-        }
470-   
471-        for (int i = 40; i < 44; i++)
472-        {
473-            if (convertData == true)
474+           
475+            if ( (convertData == true) && (lowTemp[i] != "N/A") )
476             {
477                 char tempHold[32];
478-                double tTemp = holdings[i].toDouble();
479+                double tTemp = lowTemp[i].toDouble();
480                 double nTemp = (double)(5.0/9.0)*(tTemp - 32.0);
481                 sprintf (tempHold, "%d", (int)nTemp);
482-                holdings[i] = tempHold;
483+                lowTemp[i] = tempHold;
484+            }
485+           if (convertData == true)
486+            {
487+               char windHold[32];
488+               double tWind = wind[i].toDouble();
489+               double nWind = (double)(tWind*1.6);
490+               sprintf (windHold, "%d", (int)nWind);
491+               wind[i] = windHold;
492             }
493-            lowTemp[i - 40] = holdings[i];
494+             
495         }
496-   
497-        for (int i = 15; i < 19; i++)
498-            weatherType[i - 15] = holdings[i];
499-   
500-        setWeatherTypeIcon(weatherType);
501-        setWeatherIcon(description);
502-   
503-        return true;
504-
505-    }
506-   
507-    return false;
508 }
509 
510 void Weather::setWeatherTypeIcon(QString wt[5])
511@@ -2334,44 +2346,41 @@ void Weather::setWeatherIcon(QString txt
512     curIcon = "weather/unknown.png";
513 }
514 
515-QString Weather::GetString(QString tag)
516+
517+QString Weather::GetString(QString data, QString tag_begin, QString tag_end)
518 {
519-    QString data;
520+    QString str;
521     int start = 0;
522+    int end = 0;
523     int len = 0;
524     
525-    start = httpData.find(tag, 0);
526-    len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4;
527+    start = data.find(tag_begin, 0) + tag_begin.length();
528+    end   = data.find(tag_end, start);
529+    len   = end - start;
530     
531-    data = httpData.mid(start + tag.length() + 4, len);
532+    str = data.mid(start, len);
533 
534-    return data;
535+    return str;
536 }
537 
538-int Weather::GetInt(QString tag)
539+int Weather::GetInt(QString data, QString tag_start, QString tag_end)
540 {
541-    QString data;
542-    int start = 0;
543-    int len = 0;
544-   
545-    start = httpData.find(tag, 0);
546-    len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4;
547-    data = httpData.mid(start + tag.length() + 4, len);
548-    int ret = data.toInt();
549+    QString str;
550+
551+    str = GetString(data, tag_start, tag_end);
552+
553+    int ret = str.toInt();
554 
555     return ret;
556 }
557 
558-float Weather::GetFloat(QString tag)
559+float Weather::GetFloat(QString data, QString tag_start, QString tag_end)
560 {
561-    QString data;
562-    int start = 0;
563-    int len = 0;
564+    QString str;
565 
566-    start = httpData.find(tag, 0);
567-    len = httpData.find("\"", start + tag.length() + 4) - start - tag.length() - 4;
568-    data = httpData.mid(start + tag.length() + 4, len);
569-    float ret = data.toFloat();
570+    str = GetString(data, tag_start, tag_end);
571+
572+    float ret = str.toFloat();
573 
574     return ret;
575 }
576@@ -2379,7 +2388,14 @@ float Weather::GetFloat(QString tag)
577 bool Weather::GetWeatherData()
578 {
579 
580-    QString weatherDataURL = "http://www.msnbc.com/m/chnk/d/weather_d_src.asp?acid=" + locale;
581+    QString weatherDataURL = "http://xoap.weather.com/weather/local/" + locale + "?cc=*&unit=f&dayf=5";
582+
583+//
584+// Technically we should include the partner id and key
585+// if this stops working, change to the following:
586+// http://xoap.weather.com/weather/local/".$this->acid."?cc=*&unit=F&dayf=5&prod=xoap&par=1036905921&key=f68c2657a4fd3e2e"
587+// may need to get a new one from http://www.weather.com/services/xmloap.html
588+//
589 
590     VERBOSE(VB_NETWORK, QString("Grabbing weather from: %1").arg(weatherDataURL));
591 
592@@ -2390,8 +2406,8 @@ bool Weather::GetWeatherData()
593 
594     httpData = HttpComms::getHttp(weatherDataURL, weatherTimeoutInt, 3, 3);
595 
596-    if (httpData.find("this.swAcid = \"\";") != -1 ||
597-        httpData.find("<html>") != -1 ||
598+    if (httpData.find("<loc id=") == -1 ||
599+        httpData.find("<?xml") == -1 ||
600         httpData.find("Microsoft VBScript runtime") != -1 ||
601         httpData.find("Internal Server Error") != -1  ||
602         httpData.find("Bad Request", 0) != -1)
603diff -rup ../mythplugins-orig/mythweather/mythweather/weather.h ./mythweather/mythweather/weather.h
604--- ../mythplugins-orig/mythweather/mythweather/weather.h       2007-03-26 23:20:23.000000000 -0400
605+++ ./mythweather/mythweather/weather.h 2007-04-21 00:01:45.000000000 -0400
606@@ -135,6 +135,8 @@ class Weather : public MythDialog
607     void updateLetters();
608     void loadAccidBreaks();
609     bool GetWeatherData();
610+    void getCurrentConditions();
611+    void getForecast();
612     bool GetAnimatedRadarMap();
613     bool GetStaticRadarMap();
614     bool gotDataHook;
615@@ -145,9 +147,9 @@ class Weather : public MythDialog
616     void showCityName();
617     void setSetting(QString, QString, bool);
618 
619-    QString GetString(QString);
620-    int GetInt(QString);
621-    float GetFloat(QString);
622+    QString GetString(QString, QString, QString);
623+    int GetInt(QString, QString, QString);
624+    float GetFloat(QString, QString, QString);
625 
626     void loadWeatherTypes();
627     weatherTypes *wData;
628@@ -179,6 +181,9 @@ class Weather : public MythDialog
629     QString highTemp[5];
630     QString lowTemp[5];
631     QString precip[5];
632+    QString humid[5];
633+    QString wind[5];
634+    QString wdir[5];
635 
636     QString httpData;
637     QString oldhttpData;