source: titan/plugins/lcdsamsung/lcd_weather.h @ 41577

Last change on this file since 41577 was 41577, checked in by gost, 3 years ago

[plugin] lcdsamsung.. weather day_0 now current day

  • Property svn:executable set to *
File size: 12.4 KB
Line 
1
2struct stimerthread* weatherthread = NULL;
3
4struct weather
5{
6        char* city;
7        char* date;
8        char* day0;
9        char* day0_low;
10        char* day0_high;
11        char* day0_condition;
12        char* day0_icon;
13        char* day0_temp;
14        char* day0_humidity;
15        char* day0_wind;
16        char* day1;
17        char* day1_low;
18        char* day1_high;
19        char* day1_condition;
20        char* day1_icon;
21        char* day2;
22        char* day2_low;
23        char* day2_high;
24        char* day2_condition;
25        char* day2_icon;
26        char* day3;
27        char* day3_low;
28        char* day3_high;
29        char* day3_condition;
30        char* day3_icon;
31};
32
33void freeweather(struct weather* node)
34{
35        if(node == NULL) return;
36
37        free(node->city); node->city = NULL;
38        free(node->date); node->date = NULL;
39
40        free(node->day0); node->day0 = NULL;
41        free(node->day0_low); node->day0_low = NULL;
42        free(node->day0_high); node->day0_high = NULL;
43        free(node->day0_condition); node->day0_condition = NULL;
44        free(node->day0_icon); node->day0_icon = NULL;
45        free(node->day0_temp); node->day0_temp = NULL;
46        free(node->day0_humidity); node->day0_humidity = NULL;
47        free(node->day0_wind); node->day0_wind = NULL;
48
49        free(node->day1); node->day1 = NULL;
50        free(node->day1_low); node->day1_low = NULL;
51        free(node->day1_high); node->day1_high = NULL;
52        free(node->day1_condition); node->day1_condition = NULL;
53        free(node->day1_icon); node->day1_icon = NULL;
54
55        free(node->day2); node->day2 = NULL;
56        free(node->day2_low); node->day2_low = NULL;
57        free(node->day2_high); node->day2_high = NULL;
58        free(node->day2_condition); node->day2_condition = NULL;
59        free(node->day2_icon); node->day2_icon = NULL;
60
61        free(node->day3); node->day3 = NULL;
62        free(node->day3_low); node->day3_low = NULL;
63        free(node->day3_high); node->day3_high = NULL;
64        free(node->day3_condition); node->day3_condition = NULL;
65        free(node->day3_icon); node->day3_icon = NULL;
66
67        free(node); node = NULL;
68}
69
70struct weather* getweather(char* location)
71{
72        struct weather* weather = NULL;
73        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL;
74        char* tmpsearch = NULL;
75
76        tmpsearch = ostrcat("data.aspx?src=vista&weadegreetype=C&culture=de-DE&weasearchstr=", location, 0, 0);
77        //TODO: implement auto language (from titan.cfg)
78        //tmpsearch = ostrcat(tmpsearch, "&hl=de", 1, 0);
79//      tmpsearch = stringreplacechar(tmpsearch, ' ', '+');
80
81        printf("[lcd_weather] tmpsearch: %s\n", tmpsearch);
82        tmpstr = gethttp("weather.service.msn.com", tmpsearch, 80, NULL, NULL, 5000, NULL, 0);
83        printf("[lcd_weather] tmpstr: %s\n", tmpstr);
84        free(tmpsearch); tmpsearch = NULL;
85
86        if(tmpstr != NULL)
87        {
88                weather = (struct weather*)malloc(sizeof(struct weather));
89                if(weather == NULL)
90                {
91                        err("no mem");
92                        free(tmpstr); tmpstr = NULL;
93                        return NULL;
94                }
95                memset(weather, 0, sizeof(struct weather));
96
97                tmpstr1 = tmpstr;
98                tmpstr2 = tmpstr;
99
100                tmpstr2 = ostrstr(tmpstr1, "<weather weatherlocationcode=");
101                if(tmpstr2 != NULL)
102                {
103                        tmpstr1 = tmpstr2 + 5;
104                        weather->city = getxmlentry(tmpstr2, "weatherlocationname=");
105                }
106
107                tmpstr2 = ostrstr(tmpstr1, "<current ");
108                if(tmpstr2 != NULL)
109                {
110                        tmpstr1 = tmpstr2 + 5;
111                        weather->day0_temp = getxmlentry(tmpstr2, "temperature=");
112                        weather->date = getxmlentry(tmpstr2, "date=");
113                        weather->day0_humidity = getxmlentry(tmpstr2, "humidity=");
114                        weather->day0_wind = getxmlentry(tmpstr2, "windspeed=");
115                        weather->day0_icon = getxmlentry(tmpstr2, "skycode=");
116                        weather->day0_condition = getxmlentry(tmpstr2, "skytext=");
117                        weather->day0 = getxmlentry(tmpstr2, " shortday=");
118                }
119               
120                tmpstr2 = ostrstr(tmpstr1, "<forecast ");
121                if(tmpstr2 != NULL)
122                {
123                        tmpstr1 = tmpstr2 + 5;
124                        //day0 jetzt aktueller tag
125                        //weather->day0_low = getxmlentry(tmpstr2, "low=");
126                        //weather->day0_high = getxmlentry(tmpstr2, "high=");
127                        //weather->day0_icon = getxmlentry(tmpstr2, "skycodeday=");
128                        //weather->day0_condition = getxmlentry(tmpstr2, "skytextday=");
129                        //weather->day0 = getxmlentry(tmpstr2, " shortday=");
130                }
131
132                tmpstr2 = ostrstr(tmpstr1, "<forecast ");
133                if(tmpstr2 != NULL)
134                {
135                        tmpstr1 = tmpstr2 + 5;
136                        weather->day1_low = getxmlentry(tmpstr2, "low=");
137                        weather->day1_high = getxmlentry(tmpstr2, "high=");
138                        weather->day1_icon = getxmlentry(tmpstr2, "skycodeday=");
139                        weather->day1_condition = getxmlentry(tmpstr2, "skytextday=");
140                        weather->day1 = getxmlentry(tmpstr2, " shortday=");
141                }
142
143                tmpstr2 = ostrstr(tmpstr1, "<forecast ");
144                if(tmpstr2 != NULL)
145                {
146                        tmpstr1 = tmpstr2 + 5;
147                        weather->day2_low = getxmlentry(tmpstr2, "low=");
148                        weather->day2_high = getxmlentry(tmpstr2, "high=");
149                        weather->day2_icon = getxmlentry(tmpstr2, "skycodeday=");
150                        weather->day2_condition = getxmlentry(tmpstr2, "skytextday=");
151                        weather->day2 = getxmlentry(tmpstr2, " shortday=");
152                }
153
154                tmpstr2 = ostrstr(tmpstr1, "<forecast ");
155                if(tmpstr2 != NULL)
156                {
157                        tmpstr1 = tmpstr2 + 5;
158                        weather->day3_low = getxmlentry(tmpstr2, "low=");
159                        weather->day3_high = getxmlentry(tmpstr2, "high=");
160                        weather->day3_icon = getxmlentry(tmpstr2, "skycodeday=");
161                        weather->day3_condition = getxmlentry(tmpstr2, "skytextday=");
162                        weather->day3 = getxmlentry(tmpstr2, " shortday=");
163                }
164
165                free(tmpstr); tmpstr = NULL;
166        }
167
168        return weather;
169}
170
171char* changeweatherpic(char* icon)
172{
173
174                /*
175                0 => 'thunderstorm',
176                1 => 'thunderstorm',
177                2 => 'thunderstorm',
178                3 => 'thunderstorm',
179                4 => 'thunderstorm',
180                5 => 'rain_snow',
181                6 => 'sleet',
182                7 => 'rain_snow',
183                8 => 'icy',
184                9 => 'icy', 
185                10 => 'rain_snow',
186                11 => 'showers',
187                12 => 'rain',
188                13 => 'flurries',
189                14 => 'snow',
190                15 => 'snow',
191                16 => 'snow',
192                17 => 'thunderstorm',
193                18 => 'showers',
194                19 => 'dust',
195                20 => 'fog',
196                21 => 'haze',
197                22 => 'haze',
198                23 => 'windy',
199                24 => 'windy',
200                25 => 'icy',
201                26 => 'cloudy',
202                27 => 'mostly_cloudy',
203                28 => 'mostly_cloudy',
204                29 => 'partly_cloudy',
205                30 => 'partly_cloudy',
206                31 => 'sunny',
207                32 => 'sunny',
208                33 => 'mostly_sunny',
209                34 => 'mostly_sunny',
210                35 => 'thunderstorm',
211                36 => 'hot',
212                37 => 'chance_of_tstorm',
213                38 => 'chance_of_tstorm',
214                39 => 'chance_of_rain',
215                40 => 'showers',
216                41 - 'chance_of_snow', 
217                42 => 'snow',
218                43 => 'snow',
219                44 => 'na',
220                45 => 'chance_of_rain',
221                46 => 'chance_of_snow',
222                47 => 'chance_of_tstorm');
223                */
224       
225        char* node = NULL;
226        if(icon == NULL)
227                return node;
228
229        else if(ostrstr(icon, "10") != NULL)
230                node = createpluginpath("/lcdsamsung/skin/10.png", 0);
231        else if(ostrstr(icon, "11") != NULL)
232                node = createpluginpath("/lcdsamsung/skin/11.png", 0);
233        else if(ostrstr(icon, "12") != NULL)
234                node = createpluginpath("/lcdsamsung/skin/12.png", 0);         
235        else if(ostrstr(icon, "13") != NULL)
236                node = createpluginpath("/lcdsamsung/skin/13.png", 0); 
237        else if(ostrstr(icon, "14") != NULL)
238                node = createpluginpath("/lcdsamsung/skin/14.png", 0);                 
239        else if(ostrstr(icon, "15") != NULL)
240                node = createpluginpath("/lcdsamsung/skin/15.png", 0); 
241        else if(ostrstr(icon, "16") != NULL)
242                node = createpluginpath("/lcdsamsung/skin/16.png", 0); 
243        else if(ostrstr(icon, "17") != NULL)
244                node = createpluginpath("/lcdsamsung/skin/17.png", 0); 
245        else if(ostrstr(icon, "18") != NULL)
246                node = createpluginpath("/lcdsamsung/skin/18.png", 0); 
247        else if(ostrstr(icon, "19") != NULL)
248                node = createpluginpath("/lcdsamsung/skin/19.png", 0); 
249        else if(ostrstr(icon, "20") != NULL)
250                node = createpluginpath("/lcdsamsung/skin/20.png", 0); 
251        else if(ostrstr(icon, "21") != NULL)
252                node = createpluginpath("/lcdsamsung/skin/21.png", 0); 
253        else if(ostrstr(icon, "22") != NULL)
254                node = createpluginpath("/lcdsamsung/skin/22.png", 0); 
255        else if(ostrstr(icon, "23") != NULL)
256                node = createpluginpath("/lcdsamsung/skin/23.png", 0); 
257        else if(ostrstr(icon, "24") != NULL)
258                node = createpluginpath("/lcdsamsung/skin/24.png", 0); 
259        else if(ostrstr(icon, "25") != NULL)
260                node = createpluginpath("/lcdsamsung/skin/25.png", 0); 
261        else if(ostrstr(icon, "26") != NULL)
262                node = createpluginpath("/lcdsamsung/skin/26.png", 0); 
263        else if(ostrstr(icon, "27") != NULL)
264                node = createpluginpath("/lcdsamsung/skin/27.png", 0); 
265        else if(ostrstr(icon, "28") != NULL)
266                node = createpluginpath("/lcdsamsung/skin/28.png", 0);
267        else if(ostrstr(icon, "29") != NULL)
268                node = createpluginpath("/lcdsamsung/skin/29.png", 0); 
269        else if(ostrstr(icon, "30") != NULL)
270                node = createpluginpath("/lcdsamsung/skin/30.png", 0); 
271        else if(ostrstr(icon, "31") != NULL)
272                node = createpluginpath("/lcdsamsung/skin/31.png", 0); 
273        else if(ostrstr(icon, "32") != NULL)
274                node = createpluginpath("/lcdsamsung/skin/32.png", 0); 
275        else if(ostrstr(icon, "33") != NULL)
276                node = createpluginpath("/lcdsamsung/skin/33.png", 0); 
277        else if(ostrstr(icon, "34") != NULL)
278                node = createpluginpath("/lcdsamsung/skin/34.png", 0);                 
279        else if(ostrstr(icon, "35") != NULL)
280                node = createpluginpath("/lcdsamsung/skin/35.png", 0); 
281        else if(ostrstr(icon, "36") != NULL)
282                node = createpluginpath("/lcdsamsung/skin/36.png", 0); 
283        else if(ostrstr(icon, "37") != NULL)
284                node = createpluginpath("/lcdsamsung/skin/37.png", 0); 
285        else if(ostrstr(icon, "38") != NULL)
286                node = createpluginpath("/lcdsamsung/skin/38.png", 0); 
287        else if(ostrstr(icon, "39") != NULL)
288                node = createpluginpath("/lcdsamsung/skin/39.png", 0);                 
289        else if(ostrstr(icon, "40") != NULL)
290                node = createpluginpath("/lcdsamsung/skin/40.png", 0); 
291        else if(ostrstr(icon, "41") != NULL)
292                node = createpluginpath("/lcdsamsung/skin/41.png", 0); 
293        else if(ostrstr(icon, "42") != NULL)
294                node = createpluginpath("/lcdsamsung/skin/42.png", 0);                 
295        else if(ostrstr(icon, "43") != NULL)
296                node = createpluginpath("/lcdsamsung/skin/43.png", 0); 
297        else if(ostrstr(icon, "44") != NULL)
298                node = createpluginpath("/lcdsamsung/skin/44.png", 0); 
299        else if(ostrstr(icon, "45") != NULL)
300                node = createpluginpath("/lcdsamsung/skin/45.png", 0); 
301        else if(ostrstr(icon, "46") != NULL)
302                node = createpluginpath("/lcdsamsung/skin/46.png", 0); 
303        else if(ostrstr(icon, "47") != NULL)
304                node = createpluginpath("/lcdsamsung/skin/47.png", 0);
305        else if(ostrstr(icon, "0") != NULL)
306                node = createpluginpath("/lcdsamsung/skin/0.png", 0);   
307        else if(ostrstr(icon, "1") != NULL)
308                node = createpluginpath("/lcdsamsung/skin/1.png", 0);   
309        else if(ostrstr(icon, "2") != NULL)
310                node = createpluginpath("/lcdsamsung/skin/2.png", 0);   
311        else if(ostrstr(icon, "3") != NULL)
312                node = createpluginpath("/lcdsamsung/skin/3.png", 0);
313        else if(ostrstr(icon, "4") != NULL)
314                node = createpluginpath("/lcdsamsung/skin/4.png", 0);   
315        else if(ostrstr(icon, "5") != NULL)
316                node = createpluginpath("/lcdsamsung/skin/5.png", 0);   
317        else if(ostrstr(icon, "6") != NULL)
318                node = createpluginpath("/lcdsamsung/skin/6.png", 0);   
319        else if(ostrstr(icon, "7") != NULL)
320                node = createpluginpath("/lcdsamsung/skin/7.png", 0);   
321        else if(ostrstr(icon, "8") != NULL)
322                node = createpluginpath("/lcdsamsung/skin/8.png", 0);
323        else if(ostrstr(icon, "9") != NULL)
324                node = createpluginpath("/lcdsamsung/skin/9.png", 0);           
325        else
326                node = createpluginpath("/lcdsamsung/skin/na.png", 0);
327
328// fix warning
329        return node;
330}
331
332void lcd_writeweather()
333{
334       
335        char* tmpstr = NULL;
336        char* location = NULL;
337        struct weather* node = NULL;
338       
339        location = ostrcat(location, getconfig("lcd_samsung_plugin_wetterort", NULL), 0, 0);
340        //location = ostrcat(location, getconfig("lcd_pearl1_plugin_wetterplz", NULL), 0, 0);
341        //location = ostrcat(location, "-", 1, 0);
342        //location = ostrcat(location, getconfig("lcd_pearl1_plugin_wetterland", NULL), 1, 0);
343       
344        printf("[lcd_weather] location: %s\n", location);
345        node = getweather(location);
346        free(location); location = NULL;
347
348        if(node != NULL)
349        {
350                FILE* ausg;
351                ausg=fopen("/tmp/lcdweather","w");
352
353                fprintf(ausg,"%s\n",node->date);
354                fprintf(ausg,"%s\n",node->day0);
355                fprintf(ausg,"%s\n",node->day0_temp);
356                fprintf(ausg,"%s C\n",node->day0_temp);
357                //day0 jetzt aktueller Tag
358                //fprintf(ausg,"%s\n",node->day0_low);
359                //fprintf(ausg,"%s C\n",node->day0_high);
360                fprintf(ausg,"%s\n",node->day0_condition);
361                tmpstr = changeweatherpic(node->day0_icon);
362                fprintf(ausg,"%s\n",tmpstr);
363                free(tmpstr); tmpstr = NULL;
364               
365                fprintf(ausg,"%s\n",node->day1);
366                fprintf(ausg,"%s\n",node->day1_low);
367                fprintf(ausg,"%s C\n",node->day1_high);
368                fprintf(ausg,"%s\n",node->day1_condition);
369                tmpstr = changeweatherpic(node->day1_icon);
370                fprintf(ausg,"%s\n",tmpstr);
371                free(tmpstr); tmpstr = NULL;
372               
373                fprintf(ausg,"%s\n",node->day2);
374                fprintf(ausg,"%s\n",node->day2_low);
375                fprintf(ausg,"%s C\n",node->day2_high);
376                fprintf(ausg,"%s\n",node->day2_condition);
377                tmpstr = changeweatherpic(node->day2_icon);
378                fprintf(ausg,"%s\n",tmpstr);
379                free(tmpstr); tmpstr = NULL;
380               
381                fprintf(ausg,"%s\n",node->day3);
382                fprintf(ausg,"%s\n",node->day3_low);
383                fprintf(ausg,"%s C\n",node->day3_high);
384                fprintf(ausg,"%s\n",node->day3_condition);
385                tmpstr = changeweatherpic(node->day3_icon);
386                fprintf(ausg,"%s\n",tmpstr);
387                free(tmpstr); tmpstr = NULL;
388               
389                fclose(ausg);
390                freeweather(node);
391        }
392        weatherthread = NULL;
393}
394               
Note: See TracBrowser for help on using the repository browser.