From 8baf228fa00fecc87aeaae55ffd8ae63164347ce Mon Sep 17 00:00:00 2001 From: Uladzislau Vasilyeu Date: Sat, 28 Apr 2012 19:37:46 +0300 Subject: [PATCH] began omweather-hko-gov-hk-stations-db --- omweather-hko-gov-hk-stations-db/AUTHORS | 1 + omweather-hko-gov-hk-stations-db/INSTALL | 5 + omweather-hko-gov-hk-stations-db/Makefile.am | 30 + omweather-hko-gov-hk-stations-db/README | 3 + .../data/hko.gov.hk.db | Bin 0 -> 214016 bytes .../data/hko.gov.hk.xml | 12 + .../omweather-hko-gov-hk-stations-db.pro | 38 + .../src/englishwx2.htm | 75 ++ omweather-hko-gov-hk-stations-db/src/hash.c | 73 ++ omweather-hko-gov-hk-stations-db/src/hash.h | 35 + .../src/hash_icons.data | 56 ++ .../src/meego-main.c | 795 ++++++++++++++++++ .../src/meego-main.h | 49 ++ 13 files changed, 1172 insertions(+) create mode 100644 omweather-hko-gov-hk-stations-db/AUTHORS create mode 100644 omweather-hko-gov-hk-stations-db/INSTALL create mode 100644 omweather-hko-gov-hk-stations-db/Makefile.am create mode 100644 omweather-hko-gov-hk-stations-db/README create mode 100644 omweather-hko-gov-hk-stations-db/data/hko.gov.hk.db create mode 100644 omweather-hko-gov-hk-stations-db/data/hko.gov.hk.xml create mode 100644 omweather-hko-gov-hk-stations-db/omweather-hko-gov-hk-stations-db.pro create mode 100644 omweather-hko-gov-hk-stations-db/src/englishwx2.htm create mode 100644 omweather-hko-gov-hk-stations-db/src/hash.c create mode 100644 omweather-hko-gov-hk-stations-db/src/hash.h create mode 100644 omweather-hko-gov-hk-stations-db/src/hash_icons.data create mode 100644 omweather-hko-gov-hk-stations-db/src/meego-main.c create mode 100644 omweather-hko-gov-hk-stations-db/src/meego-main.h diff --git a/omweather-hko-gov-hk-stations-db/AUTHORS b/omweather-hko-gov-hk-stations-db/AUTHORS new file mode 100644 index 000000000..b812363ba --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/AUTHORS @@ -0,0 +1 @@ +Vlad Vasilyeu diff --git a/omweather-hko-gov-hk-stations-db/INSTALL b/omweather-hko-gov-hk-stations-db/INSTALL new file mode 100644 index 000000000..fe5cac54e --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/INSTALL @@ -0,0 +1,5 @@ +You will need Maemo/Meego/Tizen develoment environment to build deb-package + + + + diff --git a/omweather-hko-gov-hk-stations-db/Makefile.am b/omweather-hko-gov-hk-stations-db/Makefile.am new file mode 100644 index 000000000..198c49a16 --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/Makefile.am @@ -0,0 +1,30 @@ +# vim: set sw=4 ts=4 et: +# +# This file is part of omweather-hko-gov-hk-source +# +# Copyright (C) 2012 Vlad Vasilyeu +# for the code +# +# This software is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2.1 of +# the License, or (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this software; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA + +SUBDIRS = src data + +EXTRA_DIST = autogen.sh \ + debian/changelog \ + debian/compat \ + debian/copyright \ + debian/control \ + debian/rules diff --git a/omweather-hko-gov-hk-stations-db/README b/omweather-hko-gov-hk-stations-db/README new file mode 100644 index 000000000..16100f7ea --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/README @@ -0,0 +1,3 @@ +OMWeather(MeeCast) hko.gov.hk source library + +Copyright(c) 2012 Vlad Vasilyeu diff --git a/omweather-hko-gov-hk-stations-db/data/hko.gov.hk.db b/omweather-hko-gov-hk-stations-db/data/hko.gov.hk.db new file mode 100644 index 0000000000000000000000000000000000000000..4701f277497cd49be7c2acceb865a32afa91c0d8 GIT binary patch literal 214016 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%0DejY>B*xnTf>AHlmPf(Yhj;4 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 literal 0 HcmV?d00001 diff --git a/omweather-hko-gov-hk-stations-db/data/hko.gov.hk.xml b/omweather-hko-gov-hk-stations-db/data/hko.gov.hk.xml new file mode 100644 index 000000000..9273ee0df --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/data/hko.gov.hk.xml @@ -0,0 +1,12 @@ + + +hko.gov.hk +foreca.com.png +hko.gov.hk.db + + + +libomweather-hko-gov-hk-source.so +/opt/com.meecast.omweather/lib/hkogovhk + + diff --git a/omweather-hko-gov-hk-stations-db/omweather-hko-gov-hk-stations-db.pro b/omweather-hko-gov-hk-stations-db/omweather-hko-gov-hk-stations-db.pro new file mode 100644 index 000000000..d8e11c61d --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/omweather-hko-gov-hk-stations-db.pro @@ -0,0 +1,38 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2010-11-03T21:01:40 +# +#------------------------------------------------- + + +TARGET = hkogovhk +TEMPLATE = app + + + +HEADERS += src/meego-main.h \ + src/hash.h + +SOURCES += src/meego-main.c \ + src/hash.c + +FORMS += + +OTHER_FILES += \ + + +CONFIG = link_pkgconfig -qt +PKGCONFIG += libxml-2.0 \ + glib-2.0 + +db.files = data/=hko.gov.hk.db +db.path = /opt/com.meecast.omweather/share/db/ + +source.files = data/hko.gov.hk.xml +source.path = /opt/com.meecast.omweather/share/sources/ + +#install +target.path = /opt/com.meecast.omweather/lib +INSTALLS += target db source + + diff --git a/omweather-hko-gov-hk-stations-db/src/englishwx2.htm b/omweather-hko-gov-hk-stations-db/src/englishwx2.htm new file mode 100644 index 000000000..f63b7742f --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/src/englishwx2.htm @@ -0,0 +1,75 @@ + + +Current Weather + + + + + + + +

Hong Kong Observatory Logo +

Current Weather

+Bulletin updated at 23:02 HKT 28/Apr/2012 +

+ +
+At 11 p.m. at Hong Kong Observatory :
+Air Temperature : 25 degrees Celsius
+Relative Humidity : 97 per cent
+Weather Cartoon : No. 62 - LIGHT RAIN 
+
+
+The air temperatures at other places were:
+
+King's Park                     25 degrees;
+Wong Chuk Hang                  26 degrees;
+Ta Kwu Ling                     24 degrees;
+Lau Fau Shan                    26 degrees;
+Tai Po                          24 degrees;
+Sha Tin                         25 degrees;
+Tuen Mun                        25 degrees;
+Tseung Kwan O                   24 degrees;
+Sai Kung                        24 degrees;
+Cheung Chau                     24 degrees;
+Chek Lap Kok                    27 degrees;
+Tsing Yi                        25 degrees;
+Shek Kong                       27 degrees;
+Tsuen Wan Ho Koon               24 degrees;
+Tsuen Wan Shing Mun Valley      25 degrees;
+Hong Kong Park                  25 degrees;
+Shau Kei Wan                    24 degrees;
+Kowloon City                    25 degrees;
+Happy Valley                    27 degrees;
+Wong Tai Sin                    26 degrees;
+Stanley                         25 degrees;
+Kwun Tong                       25 degrees;
+Sham Shui Po                    25 degrees.
+
+Between 9:45 and 10:45 p.m., the maximum rainfall recorded
+in various regions were:
+
+Sha Tin                        4 mm;
+Tuen Mun                       3 mm;
+Eastern District               2 mm;
+Kowloon East                   2 mm;
+Kowloon West                   2 mm;
+Lantau Island                  2 mm;
+Sai Kung                       2 mm;
+Southern District              2 mm;
+Wan Chai                       2 mm;
+Yuen Long                      2 mm;
+Central & Western District     1 mm;
+Kwai Tsing                     1 mm;
+North District                 1 mm;
+Tsuen Wan                      1 mm.
+        
+
+ +
+|
Copyright and Disclaimer | Home | +Chinese Version / ¤¤¤åª©¥» | Current Weather Report RSS |
+ + + + \ No newline at end of file diff --git a/omweather-hko-gov-hk-stations-db/src/hash.c b/omweather-hko-gov-hk-stations-db/src/hash.c new file mode 100644 index 000000000..0d80ef8c6 --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/src/hash.c @@ -0,0 +1,73 @@ +/* vim: set sw=4 ts=4 et: */ +/* This file is part of Other Maemo Weather(omweather) + * + * Copyright (C) 2011 Vlad Vasiliev + * for the code + * + * Copyright (C) 2008 Andrew Zhilin + * az@pocketpcrussia.com + * for default icon set (Glance) + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * +*/ +#include +#include +#include "hash.h" +#ifdef RELEASE +#undef DEBUGFUNCTIONCALL +#endif +/*******************************************************************************/ +GHashTable *hash_icons_forecacom_table_create(void) { + GHashTable *hash = NULL; +#ifdef DEBUGFUNCTIONCALL + START_FUNCTION; +#endif + hash = g_hash_table_new(g_str_hash, g_str_equal); +#include "hash_icons.data" + return hash; +} + +/*******************************************************************************/ +gpointer +hash_forecacom_table_find(GHashTable *hash, gpointer key, gboolean search_short_name) { + gpointer orig_key, search_text, + value = NULL, + result = NULL; + gchar buffer[512]; +#ifdef DEBUGFUNCTIONCALL + START_FUNCTION; +#endif + if (search_short_name) { + buffer[0] = 0; + snprintf(buffer, sizeof(buffer) - 1, "%s_short", (gchar *)key); + search_text = buffer; + } else + search_text = key; + if (g_hash_table_lookup_extended(hash, + search_text, &orig_key, &value)) + result = value; + else{ + result = key; + fprintf(stderr,"Not found %s\n",(gchar *)key); + } +#ifdef DEBUGFUNCTIONCALL + END_FUNCTION; +#endif + return result; +} + +/*******************************************************************************/ diff --git a/omweather-hko-gov-hk-stations-db/src/hash.h b/omweather-hko-gov-hk-stations-db/src/hash.h new file mode 100644 index 000000000..6d922e9f7 --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/src/hash.h @@ -0,0 +1,35 @@ +/* vim: set sw=4 ts=4 et: */ +/* + * This file is part of Other Maemo Weather(omweather) + * + * Copyright (C) 2012 Vlad Vasilyeu + * for the code + * + * Copyright (C) 2008 Andrew Zhilin + * az@pocketpcrussia.com + * for default icon set (Glance) + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ +/*******************************************************************************/ +#ifndef _hash_h +#define _hash_h 1 +/*******************************************************************************/ +/*******************************************************************************/ +GHashTable* hash_icons_forecacom_table_create(void); +gpointer hash_forecacom_table_find(GHashTable *hash, gpointer key, gboolean search_short_name); +/*******************************************************************************/ +#endif diff --git a/omweather-hko-gov-hk-stations-db/src/hash_icons.data b/omweather-hko-gov-hk-stations-db/src/hash_icons.data new file mode 100644 index 000000000..13af30c1f --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/src/hash_icons.data @@ -0,0 +1,56 @@ + + g_hash_table_insert(hash, "d000.png", "32"); + g_hash_table_insert(hash, "n000.png", "31"); + g_hash_table_insert(hash, "d100.png", "34"); + g_hash_table_insert(hash, "n100.png", "33"); + g_hash_table_insert(hash, "d210.png", "39"); + g_hash_table_insert(hash, "d220.png", "39"); + g_hash_table_insert(hash, "d221.png", "5"); + g_hash_table_insert(hash, "d222.png", "28"); + g_hash_table_insert(hash, "n222.png", "46"); + g_hash_table_insert(hash, "n312.png", "13"); + g_hash_table_insert(hash, "d412.png", "13"); + g_hash_table_insert(hash, "n412.png", "13"); + g_hash_table_insert(hash, "d200.png", "28"); + g_hash_table_insert(hash, "n200.png", "29"); + g_hash_table_insert(hash, "d211.png", "5"); + g_hash_table_insert(hash, "d212.png", "28"); + g_hash_table_insert(hash, "n432.png", "16"); + g_hash_table_insert(hash, "d432.png", "16"); + g_hash_table_insert(hash, "d300.png", "26"); + g_hash_table_insert(hash, "n300.png", "26"); + g_hash_table_insert(hash, "d310.png", "39"); + g_hash_table_insert(hash, "d311.png", "5"); + g_hash_table_insert(hash, "d312.png", "30"); + g_hash_table_insert(hash, "d320.png", "39"); + g_hash_table_insert(hash, "d321.png", "5"); + g_hash_table_insert(hash, "d322.png", "13"); + g_hash_table_insert(hash, "d400.png", "26"); + g_hash_table_insert(hash, "n400.png", "26"); + g_hash_table_insert(hash, "n410.png", "11"); + g_hash_table_insert(hash, "d410.png", "11"); + g_hash_table_insert(hash, "d411.png", "5"); + g_hash_table_insert(hash, "n411.png", "5"); + g_hash_table_insert(hash, "d421.png", "5"); + g_hash_table_insert(hash, "d420.png", "11"); + g_hash_table_insert(hash, "d422.png", "14"); + g_hash_table_insert(hash, "d430.png", "12"); + g_hash_table_insert(hash, "d431.png", "5"); + g_hash_table_insert(hash, "n431.png", "5"); + + + + + + + + + + + + + + + + + diff --git a/omweather-hko-gov-hk-stations-db/src/meego-main.c b/omweather-hko-gov-hk-stations-db/src/meego-main.c new file mode 100644 index 000000000..ae4ab0ae8 --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/src/meego-main.c @@ -0,0 +1,795 @@ +/* vim: set sw=4 ts=4 et: */ +/* + * This file is part of omweather-foreca-com-stations-db + * + * Copyright (C) 2012 Vlad Vasilyeu + * for the code + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ +/*******************************************************************************/ +#ifdef HAVE_CONFIG_H +#include +#endif +#include "meego-main.h" +#include +#include +#include +#include +/*******************************************************************************/ +#define buff_size 2048 +static GHashTable *data = NULL; +/*******************************************************************************/ +gchar* +choose_hour_weather_icon(GHashTable *hash_for_icons, gchar *image) +{ + gchar *result; + gchar *source; + gchar *tmp_result = NULL; + + if(!image) + return g_strdup("49"); + source = g_strdup_printf("%s", image); + tmp_result = hash_forecacom_table_find(hash_for_icons, source, FALSE); + if (tmp_result && (strlen(tmp_result) == 2 || strlen(tmp_result) == 1)){ + result = g_strdup(tmp_result); + g_free(source); + return result; + }else{ + fprintf(stderr,"Unknown strings %s\n", image); + g_free(source); + return g_strdup("49"); + } +} +/*******************************************************************************/ +gint +parse_and_write_detail_data(const gchar *station_id, htmlDocPtr doc, const gchar *result_file){ + gchar buff[256], + buffer[buff_size], + current_temperature[20], + current_icon[10], + current_title[1024], + current_pressure[15], + current_humidity[15], + current_wind_direction[15], + current_wind_speed[15]; + gchar temp_buffer[buff_size]; + GSList *forecast = NULL; + GSList *tmp = NULL; + GHashTable *day = NULL; + gboolean night_flag; + gint size; + gint i, j, k, l; + GHashTable *hash_for_translate; + GHashTable *hash_for_icons; + xmlXPathContextPtr xpathCtx; + xmlXPathObjectPtr xpathObj = NULL; + xmlXPathObjectPtr xpathObj2 = NULL; + xmlXPathObjectPtr xpathObj3 = NULL; + xmlXPathObjectPtr xpathObj4 = NULL; + xmlXPathObjectPtr xpathObj5 = NULL; + xmlXPathObjectPtr xpathObj6 = NULL; + xmlXPathObjectPtr xpathObj7 = NULL; + xmlXPathObjectPtr xpathObj8 = NULL; + xmlXPathObjectPtr xpathObj9 = NULL; + xmlNodeSetPtr nodes; + gchar *temp_char; + gchar *temp_char2; + gint pressure; + gint speed; + gint ppcp; + + gchar *image = NULL; + double time_diff = 0; + time_t loc_time; + time_t utc_time; + gint location_timezone = 0; + gboolean timezone_flag = FALSE; + gboolean sunrise_flag = FALSE; + gboolean flag; + struct tm tmp_tm_loc = {0}; + struct tm tmp_tm = {0}; + struct tm current_tm = {0}; + struct tm tm_l = {0}; + struct tm tmp_tm2 = {0}; + struct tm *tm; + time_t t_start = 0, t_end = 0, + t_sunrise = 0, t_sunset = 0, + current_time = 0; + FILE *file_out; + int index = 1; + + file_out = fopen(result_file, "a"); + if (!file_out) + return -1; + + hash_for_icons = hash_icons_forecacom_table_create(); + /* Create xpath evaluation context */ + xpathCtx = xmlXPathNewContext(doc); + if(xpathCtx == NULL) { + fprintf(stderr,"Error: unable to create new XPath context\n"); + return(-1); + } + /* Register namespaces from list (if any) */ + xmlXPathRegisterNs(xpathCtx, (const xmlChar*)"html", + (const xmlChar*)"http://www.w3.org/1999/xhtml"); + /* Current weather forecast */ + /* Evaluate xpath expression */ + xpathObj = xmlXPathEvalExpression((const xmlChar*)"/html/body/div/div/table//tr[1]/th[@colspan='4']/text()", xpathCtx); + + if(xpathObj == NULL) { + fprintf(stderr,"Error: unable to evaluate xpath expression \"%s\"\n", " /html/body/div/div/table//tr[1]/th[@colspan='4']/text()"); + xmlXPathFreeContext(xpathCtx); + return(-1); + } + temp_char = strchr(xpathObj->nodesetval->nodeTab[0]->content, ' '); + if (temp_char == NULL || strlen(temp_char)<2) + return -1; + temp_char = temp_char + 1; + temp_char = strchr(temp_char, ' '); + if (temp_char != NULL){ + for (j=0; jnodesetval->nodeTab[0]->content){ + snprintf(buffer, sizeof(buffer)-1,"%s %s", temp_char, xpathObj->nodesetval->nodeTab[0]->content); + current_time = time(NULL); + tm = localtime(¤t_time); + + setlocale(LC_TIME, "POSIX"); + strptime((const char*)buffer, "%d/%m %H:%M", &tmp_tm); + setlocale(LC_TIME, ""); + /* set begin of day in localtime */ + tmp_tm.tm_year = tm->tm_year; + + t_start = mktime(&tmp_tm); + fprintf(file_out," \n", t_end); + + } + if (xpathObj) + xmlXPathFreeObject(xpathObj); + + xpathObj = xmlXPathEvalExpression((const xmlChar*)"/html/body/div/div/table//tr[3]/td[2]/span/text()", xpathCtx); + /* added temperature */ + if (xpathObj && !xmlXPathNodeSetIsEmpty(xpathObj->nodesetval) && + xpathObj->nodesetval->nodeTab[0] && xpathObj->nodesetval->nodeTab[0]->content){ + /* fprintf (stderr, "temperature %s\n", xpathObj->nodesetval->nodeTab[0]->content); */ + snprintf(buffer, sizeof(buffer)-1,"%s", xpathObj->nodesetval->nodeTab[0]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < buff_size); j++ ){ + if (buffer[j] == '&') + break; + if ((uint)buffer[j] == 226 || buffer[j] == '-' || + (buffer[j]>='0' && buffer[j]<='9')){ + if ((uint)buffer[j] == 226) + sprintf(temp_buffer,"%s-",temp_buffer); + else + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + } + /* fprintf(stderr, " %s\n", temp_buffer); */ + fprintf(file_out," %s\n", temp_buffer); + } + if (xpathObj) + xmlXPathFreeObject(xpathObj); + + xpathObj = xmlXPathEvalExpression((const xmlChar*)"/html/body/div/div/table//tr[3]/td[3]/img/@alt", xpathCtx); + /* added wind direction */ + if (xpathObj && !xmlXPathNodeSetIsEmpty(xpathObj->nodesetval) && + xpathObj->nodesetval->nodeTab[0] && + xpathObj->nodesetval->nodeTab[0]->children->content){ + /* fprintf(stderr, "Wind direction .%s. \n", xpathObj->nodesetval->nodeTab[0]->children->content); */ + if (strlen(xpathObj->nodesetval->nodeTab[0]->children->content)>0) + fprintf(file_out," %s\n", xpathObj->nodesetval->nodeTab[0]->children->content); + } + if (xpathObj) + xmlXPathFreeObject(xpathObj); + + xpathObj = xmlXPathEvalExpression((const xmlChar*)"/html/body/div/div/table//tr[3]/td[3]/text()", xpathCtx); + /* added wind speed */ + if (xpathObj && !xmlXPathNodeSetIsEmpty(xpathObj->nodesetval) && + xpathObj->nodesetval->nodeTab[0] && xpathObj->nodesetval->nodeTab[0]->content){ + /* fprintf(stderr, "Wind direction %s \n", xpathObj4->nodesetval->nodeTab[i]->children->content); */ + fprintf(file_out," %s\n", + xpathObj->nodesetval->nodeTab[0]->content); + } + if (xpathObj) + xmlXPathFreeObject(xpathObj); + + xpathObj = xmlXPathEvalExpression((const xmlChar*)"/html/body/div/div/table//tr[3]/td[4]/img/@src", xpathCtx); + /* added icon */ + if (xpathObj && !xmlXPathNodeSetIsEmpty(xpathObj->nodesetval) && + xpathObj->nodesetval->nodeTab[0] && + xpathObj->nodesetval->nodeTab[0]->children->content){ + temp_char = strrchr((char*)xpathObj->nodesetval->nodeTab[0]->children->content, '/'); + temp_char ++; + /* fprintf (stderr, "icon %s %s \n", xpathObj6->nodesetval->nodeTab[i]->children->content, choose_hour_weather_icon(hash_for_icons, temp_char)); */ + fprintf(file_out," %s\n", + choose_hour_weather_icon(hash_for_icons, temp_char)); + } + if (xpathObj) + xmlXPathFreeObject(xpathObj); + + index = 1; + snprintf(buffer, sizeof(buffer)-1,"/html/body/div/div/table//tr[4]/td/text()[%i]", index); + xpathObj = xmlXPathEvalExpression((const xmlChar*)buffer, xpathCtx); + /* added text */ + if (xpathObj && !xmlXPathNodeSetIsEmpty(xpathObj->nodesetval) && + xpathObj->nodesetval->nodeTab[0] && xpathObj->nodesetval->nodeTab[0]->content){ + if (strstr(xpathObj->nodesetval->nodeTab[0]->content, "Feels Like:") == NULL){ + /* fprintf (stderr, "description %s\n", xpathObj7->nodesetval->nodeTab[i]->content); */ + + snprintf(buffer, sizeof(buffer)-1,"%s", xpathObj->nodesetval->nodeTab[0]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < buff_size); j++ ){ + if (buffer[j] == 13 || buffer[j] == 10) + continue; + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + index ++; + fprintf(file_out," %s\n", temp_buffer); + } + } + if (xpathObj) + xmlXPathFreeObject(xpathObj); + snprintf(buffer, sizeof(buffer)-1,"/html/body/div/div/table//tr[4]/td/text()[%i]", index); + xpathObj = xmlXPathEvalExpression((const xmlChar*)buffer, xpathCtx); + + temp_char = strstr(xpathObj->nodesetval->nodeTab[0]->content, "Feels Like:"); + if (temp_char != NULL){ + temp_char = strchr(temp_char, ':'); + temp_char = temp_char + 2; + snprintf(buffer, sizeof(buffer)-1,"%s", temp_char); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < buff_size); j++ ){ + if (buffer[j] == '&') + break; + if ((uint)buffer[j] == 226 || buffer[j] == '-' || + (buffer[j]>='0' && buffer[j]<='9')){ + if ((uint)buffer[j] == 226) + sprintf(temp_buffer,"%s-",temp_buffer); + else + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + } + /* fprintf(stderr, " %s\n", temp_buffer); */ + fprintf(file_out," %s\n", temp_buffer); + } + fprintf(file_out," \n"); + + + + /* To DO sunrise and sunset */ + + xpathObj = xmlXPathEvalExpression("/html/body/div/div/table//tr[th]/*/text()", xpathCtx); + /* Day weather forecast */ + nodes = xpathObj->nodesetval; + size = (nodes) ? nodes->nodeNr : 0; + snprintf(buffer, sizeof(buffer)-1,"(/html/body/div/div/table//tr/th/text() | /html/body/div/div/table//tr/td[@class='in']/text() | /html/body/div/div/table//tr/td/span/text() | /html/body/div/div/table//tr/td/img/@alt | /html/body/div/div/table//tr/td/text() | /html/body/div/div/table//tr/td/img/@src )"); + xpathObj2 = xmlXPathEvalExpression(buffer, xpathCtx); + k = 0; + for(i = 1; i < (size) ; ++i) { + + nodes = xpathObj2->nodesetval; + flag = FALSE; + for (j = 0; j <(nodes->nodeNr); ++j){ + if (!flag && xpathObj2->nodesetval->nodeTab[j]->content && + xpathObj->nodesetval->nodeTab[i]->content && + !strcmp(xpathObj->nodesetval->nodeTab[i]->content, + xpathObj2->nodesetval->nodeTab[j]->content)){ + flag = TRUE; + k = 0; + } + if (flag && i+1 < size && xpathObj2->nodesetval->nodeTab[j]->content && + xpathObj->nodesetval->nodeTab[i+1]->content && + !strcmp(xpathObj->nodesetval->nodeTab[i+1]->content, + xpathObj2->nodesetval->nodeTab[j]->content)){ + flag = FALSE; + } + if (flag){ + switch (k){ + case 1: { + current_time = time(NULL); + tm = localtime(¤t_time); + + snprintf(buffer, sizeof(buffer)-1,"%s %s", xpathObj->nodesetval->nodeTab[i]->content, xpathObj2->nodesetval->nodeTab[j]->content); + fprintf(stderr," Buffer %s\n", buffer); + setlocale(LC_TIME, "POSIX"); + strptime((const char*)buffer, "%A %b %d %H:%M", &tmp_tm); + setlocale(LC_TIME, ""); + /* set begin of day in localtime */ + tmp_tm.tm_year = tm->tm_year; + + t_start = mktime(&tmp_tm); + fprintf(file_out," \n", t_end); + + break; + } + case 2: { + /* added temperature */ + if (xpathObj2->nodesetval->nodeTab[j]->content){ + /* fprintf (stderr, "temperature %s\n", xpathObj->nodesetval->nodeTab[0]->content); */ + snprintf(buffer, sizeof(buffer)-1,"%s", xpathObj2->nodesetval->nodeTab[j]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (l = 0 ; (l<(strlen(buffer)) && l < buff_size); l++ ){ + if (buffer[l] == '&') + break; + if ((uint)buffer[l] == 226 || buffer[l] == '-' || + (buffer[l]>='0' && buffer[l]<='9')){ + if ((uint)buffer[l] == 226) + sprintf(temp_buffer,"%s-",temp_buffer); + else + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[l]); + } + } + /* fprintf(stderr, " %s\n", temp_buffer); */ + fprintf(file_out," %s\n", temp_buffer); + } + break; + } + case 4: { + if (strlen(xpathObj2->nodesetval->nodeTab[j]->children->content)>0) + fprintf(file_out," %s\n", xpathObj2->nodesetval->nodeTab[j]->children->content); + + break; + } + case 5: { + if (xpathObj2->nodesetval->nodeTab[j] && xpathObj2->nodesetval->nodeTab[j]->content){ + /* fprintf(stderr, "Wind direction %s \n", xpathObj4->nodesetval->nodeTab[i]->children->content); */ + fprintf(file_out," %s\n", + xpathObj2->nodesetval->nodeTab[j]->content); + } + break; + } + case 6: { + if (strlen(xpathObj2->nodesetval->nodeTab[j]->children->content)>0){ + temp_char = strrchr((char*)xpathObj2->nodesetval->nodeTab[j]->children->content, '/'); + temp_char ++; + fprintf(file_out," %s\n", + choose_hour_weather_icon(hash_for_icons, temp_char)); + } + break; + } + case 7: { + if (strlen(xpathObj2->nodesetval->nodeTab[j]->children->content)>0){ + fprintf(file_out," %s\n", xpathObj2->nodesetval->nodeTab[j]->children->content); + } + k = 0; + fprintf(file_out," \n"); + + } + + } + k++; + } + } + } + fclose(file_out); + return 1; +} + + +/*******************************************************************************/ +gint +parse_and_write_xml_data(const gchar *station_id, htmlDocPtr doc, const gchar *result_file){ + gchar buff[256], + buffer[buff_size], + current_temperature[20], + current_icon[10], + current_title[1024], + current_pressure[15], + current_humidity[15], + current_wind_direction[15], + current_wind_speed[15]; + gchar temp_buffer[buff_size]; + GSList *forecast = NULL; + GSList *tmp = NULL; + GHashTable *day = NULL; + gboolean flag; + gboolean night_flag; + gint size; + gint i, j; + GHashTable *hash_for_translate; + GHashTable *hash_for_icons; + xmlXPathContextPtr xpathCtx; + xmlXPathObjectPtr xpathObj = NULL; + xmlXPathObjectPtr xpathObj2 = NULL; + xmlXPathObjectPtr xpathObj3 = NULL; + xmlXPathObjectPtr xpathObj4 = NULL; + xmlXPathObjectPtr xpathObj5 = NULL; + xmlXPathObjectPtr xpathObj6 = NULL; + xmlXPathObjectPtr xpathObj7 = NULL; + xmlXPathObjectPtr xpathObj8 = NULL; + xmlXPathObjectPtr xpathObj9 = NULL; + xmlNodeSetPtr nodes; + gchar *temp_char; + gchar *temp_char2; + gint pressure; + gint speed; + gint ppcp; + + gchar *image = NULL; + double time_diff = 0; + time_t loc_time; + time_t utc_time; + gint location_timezone = 0; + gboolean timezone_flag = FALSE; + gboolean sunrise_flag = FALSE; + struct tm tmp_tm_loc = {0}; + struct tm tmp_tm = {0}; + struct tm current_tm = {0}; + struct tm tm_l = {0}; + struct tm tmp_tm2 = {0}; + struct tm *tm; + time_t t_start = 0, t_end = 0, + t_sunrise = 0, t_sunset = 0, + current_time = 0; + FILE *file_out; + + file_out = fopen(result_file, "w"); + if (!file_out) + return -1; + fprintf(file_out,"\n\n", station_id); + fprintf(file_out," \n C\n m/s\n m/s\n km\n"); + fprintf(file_out," %% \n

mmHg

\n
\n"); + + hash_for_icons = hash_icons_forecacom_table_create(); + /* Create xpath evaluation context */ + xpathCtx = xmlXPathNewContext(doc); + if(xpathCtx == NULL) { + fprintf(stderr,"Error: unable to create new XPath context\n"); + return(-1); + } + /* Register namespaces from list (if any) */ + xmlXPathRegisterNs(xpathCtx, (const xmlChar*)"html", + (const xmlChar*)"http://www.w3.org/1999/xhtml"); + /* Day weather forecast */ + /* Evaluate xpath expression */ + xpathObj = xmlXPathEvalExpression((const xmlChar*)"/html/body/div/div/table//tr/th[@colspan='3']", xpathCtx); + + if(xpathObj == NULL) { + fprintf(stderr,"Error: unable to evaluate xpath expression \"%s\"\n", "/html/body/div/div/table//tr/th[@colspan='3']/text()"); + xmlXPathFreeContext(xpathCtx); + return(-1); + } + + nodes = xpathObj->nodesetval; + size = (nodes) ? nodes->nodeNr : 0; + if (size > 10) + size = 10; + /* fprintf(stderr, "SIZE!!!!!!!!!!!!!!: %i\n", size); */ + xpathObj2 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[@class='in']//span[1]/text()", xpathCtx); + xpathObj3 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[@class='in']//span[2]/text()", xpathCtx); + xpathObj4 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[2]/img/@alt", xpathCtx); + xpathObj5 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[2]/text()", xpathCtx); + xpathObj6 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[3]/img/@src", xpathCtx); + xpathObj7 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[@class='in2']/text()[1]", xpathCtx); + xpathObj8 = xmlXPathEvalExpression("/html/body/div/div/table//tr/td[@class='in2']/text()[2]", xpathCtx); + + /* fprintf(stderr, "Result (%d nodes):\n", size); */ + for(i = 0; i < size; ++i) { + day = NULL; + + /* Take time: */ + if (!nodes->nodeTab[i]->children->content) + continue; + temp_char = strstr(nodes->nodeTab[i]->children->content, " "); + int j = 0; + if (temp_char != NULL){ + for (j=0; jtm_year; + tmp_tm.tm_hour = 0; tmp_tm.tm_min = 0; tmp_tm.tm_sec = 0; + + t_start = mktime(&tmp_tm); + fprintf(file_out," \n", t_end); + + + /* added hi temperature */ + if (xpathObj2 && !xmlXPathNodeSetIsEmpty(xpathObj2->nodesetval) && + xpathObj2->nodesetval->nodeTab[i] && xpathObj2->nodesetval->nodeTab[i]->content){ + /* fprintf (stderr, "temperature %s\n", xpathObj2->nodesetval->nodeTab[i]->content); */ + snprintf(buffer, sizeof(buffer)-1,"%s", xpathObj2->nodesetval->nodeTab[i]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < buff_size); j++ ){ + if (buffer[j] == '&') + break; + if ((uint)buffer[j] == 226 || buffer[j] == '-' || + (buffer[j]>='0' && buffer[j]<='9')){ + if ((uint)buffer[j] == 226) + sprintf(temp_buffer,"%s-",temp_buffer); + else + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + } + /* fprintf(stderr, " %s\n", temp_buffer); */ + fprintf(file_out," %s\n", temp_buffer); + } + /* added lo temperature */ + if (xpathObj3 && !xmlXPathNodeSetIsEmpty(xpathObj3->nodesetval) && + xpathObj3->nodesetval->nodeTab[i] && xpathObj3->nodesetval->nodeTab[i]->content){ + /* fprintf (stderr, "temperature %s\n", xpathObj3->nodesetval->nodeTab[i]->content); */ + snprintf(buffer, sizeof(buffer)-1,"%s", xpathObj3->nodesetval->nodeTab[i]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < buff_size); j++ ){ + if (buffer[j] == '&') + break; + if ((uint)buffer[j] == 226 || buffer[j] == '-' || + (buffer[j]>='0' && buffer[j]<='9')){ + if ((uint)buffer[j] == 226) + sprintf(temp_buffer,"%s-",temp_buffer); + else + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + } + /* fprintf(stderr, " %s\n", temp_buffer); */ + fprintf(file_out," %s\n", temp_buffer); + } + /* added wind direction */ + if (xpathObj4 && !xmlXPathNodeSetIsEmpty(xpathObj4->nodesetval) && + xpathObj4->nodesetval->nodeTab[i] && + xpathObj4->nodesetval->nodeTab[i]->children->content){ + /* fprintf(stderr, "Wind direction %s \n", xpathObj4->nodesetval->nodeTab[i]->children->content); */ + fprintf(file_out," %s\n", xpathObj4->nodesetval->nodeTab[i]->children->content); + } + + /* added wind speed */ + if (xpathObj5 && !xmlXPathNodeSetIsEmpty(xpathObj5->nodesetval) && + xpathObj5->nodesetval->nodeTab[i] && xpathObj5->nodesetval->nodeTab[i]->content){ + /* fprintf(stderr, "Wind direction %s \n", xpathObj4->nodesetval->nodeTab[i]->children->content); */ + fprintf(file_out," %s\n", + xpathObj5->nodesetval->nodeTab[i]->content); + } + + /* added icon */ + if (xpathObj6 && !xmlXPathNodeSetIsEmpty(xpathObj6->nodesetval) && + xpathObj6->nodesetval->nodeTab[i] && + xpathObj6->nodesetval->nodeTab[i]->children->content){ + temp_char = strrchr((char*)xpathObj6->nodesetval->nodeTab[i]->children->content, '/'); + temp_char ++; + /* fprintf (stderr, "icon %s %s \n", xpathObj6->nodesetval->nodeTab[i]->children->content, choose_hour_weather_icon(hash_for_icons, temp_char)); */ + fprintf(file_out," %s\n", + choose_hour_weather_icon(hash_for_icons, temp_char)); + } + /* added text */ + if (xpathObj7 && !xmlXPathNodeSetIsEmpty(xpathObj7->nodesetval) && + xpathObj7->nodesetval->nodeTab[i] && xpathObj7->nodesetval->nodeTab[i]->content){ + snprintf(buffer, sizeof(buffer)-1,"%s", xpathObj7->nodesetval->nodeTab[i]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < buff_size); j++ ){ + if (buffer[j] == 13 || buffer[j] == 10) + continue; + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + fprintf(file_out," %s\n", temp_buffer); + } + /* added ppcp */ + if (xpathObj8 && !xmlXPathNodeSetIsEmpty(xpathObj8->nodesetval) && + xpathObj8->nodesetval->nodeTab[i] && xpathObj8->nodesetval->nodeTab[i]->content){ + snprintf(buffer, sizeof(buffer) - 1, "%s", xpathObj8->nodesetval->nodeTab[i]->content); + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (j = 0 ; (j<(strlen(buffer)) && j < strlen(buffer)); j++ ){ + if (buffer[j] == '%') + break; + if ( (buffer[j]>='0' && buffer[j]<='9')){ + sprintf(temp_buffer,"%s%c",temp_buffer, buffer[j]); + } + } + fprintf(file_out," %s\n", temp_buffer); + } + fprintf(file_out," \n"); + + } + /* Cleanup */ + if (xpathObj) + xmlXPathFreeObject(xpathObj); + if (xpathObj2) + xmlXPathFreeObject(xpathObj2); + if (xpathObj3) + xmlXPathFreeObject(xpathObj3); + if (xpathObj4) + xmlXPathFreeObject(xpathObj4); + if (xpathObj5) + xmlXPathFreeObject(xpathObj5); + if (xpathObj6) + xmlXPathFreeObject(xpathObj6); + if (xpathObj7) + xmlXPathFreeObject(xpathObj7); + if (xpathObj8) + xmlXPathFreeObject(xpathObj8); + + /* Clean */ + g_hash_table_destroy(hash_for_icons); + + fclose(file_out); + + return size; +} + +/*******************************************************************************/ +void +parse_current_weather(const gchar *detail_path_data, const gchar *result_file){ + + FILE *file_out; + FILE *file_in; + gchar buffer [4096]; + gchar *comma = NULL; + + file_out = fopen(result_file, "a"); + if (!file_out) + return; + file_in = fopen(detail_path_data, "r"); + if (!file_in) + return; + + while(fgets(buffer, sizeof(buffer), file_in)){ + if (strstr(buffer,"")) + if (comma = strstr(buffer, "at ")) + comma = comma + 4; + fprintf(file_out,"%s", comma); + + } + fclose(file_out); + fclose(file_in); +} +/*******************************************************************************/ + +convert_station_hkogovhk_data(const gchar *station_id_with_path, const gchar *result_file, const gchar *detail_path_data ){ + + xmlDoc *doc = NULL; + xmlNode *root_node = NULL; + gint days_number = -1; + gchar buffer[1024], + *delimiter = NULL; + FILE *file_out; + + file_out = fopen(result_file, "w"); + if (!file_out) + return -1; + fprintf(file_out,"\n\n", station_id); + fprintf(file_out," \n C\n m/s\n m/s\n km\n"); + fprintf(file_out," %% \n

mmHg

\n
\n"); + fclose(file_out); + + parse_current_weather(detail_path_data, result_file); + + file_out = fopen(result_file, "a"); + if (file_out){ + fprintf(file_out,"
"); + fclose(file_out); + } + + return 0; + if(!station_id_with_path) + return -1; + +/* check for new file, if it exist, than rename it */ + *buffer = 0; + snprintf(buffer, sizeof(buffer) - 1, "%s.new", station_id_with_path); + if(!access(buffer, R_OK)) + rename(buffer, station_id_with_path); + /* check file accessability */ + if(!access(station_id_with_path, R_OK)){ + /* check that the file containe valid data */ + doc = htmlReadFile(station_id_with_path, "UTF-8", 0); + if(!doc) + return -1; + root_node = xmlDocGetRootElement(doc); + if(root_node->type == XML_ELEMENT_NODE && + strstr((char*)root_node->name, "err")){ + xmlFreeDoc(doc); + xmlCleanupParser(); + return -2; + } + else{ + /* prepare station id */ + *buffer = 0; + delimiter = strrchr(station_id_with_path, '/'); + if(delimiter){ + delimiter++; /* delete '/' */ + snprintf(buffer, sizeof(buffer) - 1, "%s", delimiter); + delimiter = strrchr(buffer, '.'); + if(!delimiter){ + xmlFreeDoc(doc); + xmlCleanupParser(); + return -1; + } + *delimiter = 0; + // if(get_detail_data) + // days_number = parse_xml_detail_data(buffer, root_node, data); + // else + days_number = parse_and_write_xml_data(buffer, doc, result_file); + xmlFreeDoc(doc); + xmlCleanupParser(); + if(!access(detail_path_data, R_OK)){ + doc = htmlReadFile(detail_path_data, "UTF-8", 0); + if(doc){ + root_node = NULL; + root_node = xmlDocGetRootElement(doc); + if(!root_node || ( root_node->type == XML_ELEMENT_NODE && + strstr((char*)root_node->name, "err"))){ + xmlFreeDoc(doc); + xmlCleanupParser(); + } + else{ + parse_and_write_detail_data(buffer, doc, result_file); + xmlFreeDoc(doc); + xmlCleanupParser(); + } + } + } + + if (days_number > 0){ + file_out = fopen(result_file, "a"); + if (file_out){ + fprintf(file_out,"
"); + fclose(file_out); + } + } + + } + } + } + else + return -1;/* file isn't accessability */ + return days_number; +} +/*******************************************************************************/ +int +main(int argc, char *argv[]){ + int result; + if (argc < 3) { + fprintf(stderr, "hkogovhk \n"); + return -1; + } + result = convert_station_hkogovhk_data(argv[1], argv[2], argv[3]); + //fprintf(stderr, "\nresult = %d\n", result); + return result; +} diff --git a/omweather-hko-gov-hk-stations-db/src/meego-main.h b/omweather-hko-gov-hk-stations-db/src/meego-main.h new file mode 100644 index 000000000..5443c6425 --- /dev/null +++ b/omweather-hko-gov-hk-stations-db/src/meego-main.h @@ -0,0 +1,49 @@ +/* vim: set sw=4 ts=4 et: */ +/* + * This file is part of omweather-foreca-com-source + * + * Copyright (C) 2012 Vlad Vasilyeu + * for the code + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ +/*******************************************************************************/ +#ifndef _main_h +#define _main_h 1 +/*******************************************************************************/ +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*******************************************************************************/ +gboolean source_init(void); +void source_destroy(void); +void free_fields(gpointer key, gpointer val, gpointer user_data); +gint get_station_weather_data(const gchar *station_id_with_path, GHashTable *data, gboolean get_detail_data); +//gint parse_xml_detail_data(const gchar *station_id, xmlNode *root_node, GHashTable *data); +gint parse_and_write_xml_data(const gchar *station_id, htmlDocPtr doc, const gchar *result_file); + +/*******************************************************************************/ +#endif