Local Weather Information and GNOME Shell Extension

85
Local Weather Information and GNOME Shell Extension

Transcript of Local Weather Information and GNOME Shell Extension

Page 1: Local Weather Information and GNOME Shell Extension

Local Weather Information

andGNOME Shell Extension

Page 2: Local Weather Information and GNOME Shell Extension

Sammy Fung

Page 3: Local Weather Information and GNOME Shell Extension

Sammy Fung

● Software Developer – to use and develop open source

sofware.

– Perl → PHP → Python.

– Interests in data mining / web scraping.

– Consultant in web technology.

Page 4: Local Weather Information and GNOME Shell Extension

Sammy Fung

● 15+ years in Open Source Communities.– Founding Chairman, Hong Kong Linux User Group.

– Founding Chairman, Open Source Hong Kong.

– Member, GNOME Asia committee.

– Mozilla Representative in Hong Kong.

– Organize, speak and participate in open source conferences in East Asia and U.S. in recent years – Taiwan, Korea, Japan, Malayisa, Singapore, and Bay Area, CA.

Page 5: Local Weather Information and GNOME Shell Extension

Agenda

● Local Weather Information– From Local Meteorological Observatories to Open

Data.

● GNOME Shell Extension– Weather Widgets

Page 6: Local Weather Information and GNOME Shell Extension

Hong Kong Observatory

Page 7: Local Weather Information and GNOME Shell Extension

Weather Underground Hong Kong

Page 8: Local Weather Information and GNOME Shell Extension

Weather Information, China

Page 9: Local Weather Information and GNOME Shell Extension

Central Weather Bureau (CWB), Taiwan.

Page 10: Local Weather Information and GNOME Shell Extension

Joint Typhoon Warning Centre (JTWC)

Page 11: Local Weather Information and GNOME Shell Extension

Weather Data

Page 12: Local Weather Information and GNOME Shell Extension

Regional Weather Data, Hong Kong

Page 13: Local Weather Information and GNOME Shell Extension

Open Data

Page 14: Local Weather Information and GNOME Shell Extension

Open Data

Three Laws of Open Government Data by David Eaves.

1.If it can't be spidered or indexed, it doesn't exist.

2.If it isn't available in open and machine readable format, it can't engage.

3.If a legal framework doesn't allow it to be repurposed, it doesn't empower.

http://eaves.ca/2009/09/30/three-law-of-open-government-data/

Page 15: Local Weather Information and GNOME Shell Extension

Open Data

● Tim Berners-Lee– the inventor of the

Web.– 5stardata.info

● 5 star deployment scheme of Open Data suggested by Tim Berners-Lee.

Page 16: Local Weather Information and GNOME Shell Extension

Five Star Open Data - 5stardata.info

1.make your stuff available on the Web (whatever format) under an open license.

2.make it available as structured data (e.g., Excel instead of image scan of a table)

3.use non-proprietary formats (e.g., CSV instead of Excel)

4.use URIs to denote things, so that people can point at your stuff.

5.link your data to other data to provide context.

5stardata.info by Tim Berners-Lee, the inventor of the Web.

Page 17: Local Weather Information and GNOME Shell Extension

Open Data in Hong Kong

Page 18: Local Weather Information and GNOME Shell Extension

Open Data in Hong Kong

● Data.One– http://www.gov.hk/en/theme/psi– released on 2011/3/31.

– First App Competition on Data.One● Call for Submission now till 2014/02/28.

Page 19: Local Weather Information and GNOME Shell Extension

Weather Information in Hong Kong

● Hong Kong Observatory– Hourly Hong Kong Weather Report– Regional Weather in Hong Kong (10 min updates)

– Weather Forecast and Weekly Weather Forecast– Typhoon Report and Forecast

Page 20: Local Weather Information and GNOME Shell Extension

Hong Kong Observatory RSS

Page 21: Local Weather Information and GNOME Shell Extension

Hong Kong Observatory RSS

Page 22: Local Weather Information and GNOME Shell Extension

Weather at Data.One

● I posted a blog 'Progress of Open Government Data in Hong Kong' on 2013/01/17.

● Weather at Data.One provides 7 dataset URLs, returns RSS (XML) format (Eng/TChi/SChi)– One word: Useless.– Data.One dataset (RSS) is completely different

with HKO own paid service (XML).

Page 23: Local Weather Information and GNOME Shell Extension

Weather at Data.One

● Example - Current local weather report: ● Plain text report in RSS.● Difference to quote report content:

– Website: a pair of HTML tags, eg. <PRE>....</PRE>.– Data.One: a pair of RSS description tags,

<description>....</description>.

● Other weather data is missing, eg. Regional temperture updates per each 12 mins.

Page 24: Local Weather Information and GNOME Shell Extension

Weather at Data.One

● Weather at Data.One is 'report' but not 'data'.● Weather RSS is already released by HKO

before launch of Data.One.● Technically, json/xml format is better

readable by computer programs.

Page 25: Local Weather Information and GNOME Shell Extension

Digital21 Strategy Public Consultation Document

(G) Public Sector Information (PSI) as Default

"34. Through different channels (like press releases, publications, websites, etc.), the Government releases a lot of information in different areas. However, most of such information can only be read but cannot be used. In view of the immense benefits of widening access to PSI for free and easy re-use, we propose to make all Government information released for public consumption machine-readable by default. Where appropriate, datasets will be released with application programming interfaces (APIs), providing predefined functions to make their retrieval easier."

(G) 廣泛提供公共資料

"34. 政府透過不同途徑 ( 例如新聞稿、出版物、網站等 ) 發放大量不同範疇的資料。然而 , 這些資料大都只可供閱讀而不能使用。有見開放公共資料以供免費再用可帶來巨大效益 , 我們建議所有開放予公眾使用的政府資料都須以數碼格式編製。在適用情況下 ,資料發布時會同時推出應用程式界面 , 以便提供預設功能 , 讓公眾輕易地檢索資料。 "

Page 26: Local Weather Information and GNOME Shell Extension

Digital21 Strategy Public Consultation Document

"33. PSI datasets can be used and meshed together to create innovative new applications, as demonstrated by the creative and useful products and services developed from PSI in Hong Kong and around the world. For example, using PSI datasets on traffic snapshot images, a number of mobile apps have been developed to provide real-time traffic situation for users to avoid traffic jams in planning their traffic routes. Experience from other developed economies shows that widening access to PSI datasets can open up lucrative business opportunities and bring social benefits. By tapping the creativity of the community and entrepreneurs, the use of PSI can lead to positive social outcomes. For instance, in some cities in the United States, application of PSI on hygiene inspections has led to a significant drop in food poisoning incidents."

Page 27: Local Weather Information and GNOME Shell Extension

Digital21 Strategy Public Consultation Document

"33. 由本港及世界各地利用公共資料所開發的實用創意產品及服務所見 , 公共資料可個別及混合使用 , 以開發創新的應用程式。例如 , 現時已有多個利用交通情況快拍圖像的公共資料開發的流動應用程式 , 以提供實時交通情況資料 , 讓使用者計劃行車路線 , 從而避開交通擠塞情況。根據其他經濟體系的經驗 , 開放公共資料 , 供大眾廣為使用 , 可開拓有利可圖的商機 , 並為社會帶來禆益。我們可藉着開放公共資料 , 借助市民及企業家的創意來造福社會。舉例來說 , 在美國一些城市 , 有關衞生檢查的公共資料在開放使用後 , 食物中毒事故宗數大幅減少。 "

Page 28: Local Weather Information and GNOME Shell Extension

Digital21 Strategy Public Consultation Document

"35. Apart from Government data, there are vast amounts of PSI handled, collected and disseminated by public organisations, which are equally useful for the development of innovative services and products. Therefore, we propose to encourage public organisations (e.g. public utilities and transport operators) to release data owned by them in machine-readable format."

"35. 除了政府資料外 , 本港亦備有大量經公共機構處理、收集及發放的公共資料 , 這些資料對開發創新服務及產品同樣有用。因此 , 我們建議鼓勵公共機構 ( 例如公用事業及運輸機構 ) 發放以數碼格式編製的資料。 "

Page 29: Local Weather Information and GNOME Shell Extension

Open Data in Taiwan

● Open Weather Data from CWB.● Community – g0v.tw

Page 30: Local Weather Information and GNOME Shell Extension

●Open Weather Data from CWB.

Page 31: Local Weather Information and GNOME Shell Extension

●Open Weather Data from CWB.

Page 32: Local Weather Information and GNOME Shell Extension

●Open Weather Data from CWB.

Page 33: Local Weather Information and GNOME Shell Extension

●Open Weather Data from CWB.

Page 34: Local Weather Information and GNOME Shell Extension

g0v.tw

● Promote information transparency.● Develop information platform and tools for a

society of citizen participation.● Open Source model.● Stackoverflow-like Q&A system for public to

asking for data which they are looking for.

Page 35: Local Weather Information and GNOME Shell Extension

g0v.tw

● Established after Taiwan Yahoo! Open Hack Day in October 2012.

● Hackers, Professors, NGO/NPO, Students, Writers, Visual Media, Legal Professionals.

● Organize 5+ bi-monthly hackathons since December 2012.

Page 36: Local Weather Information and GNOME Shell Extension

Air Pollution Index

Page 37: Local Weather Information and GNOME Shell Extension

Air Pollution Index

● http://g0v.github.io/twgeojson/air.html● Develop a web-based visualized map of air

pollution.● Use Open Data provided by Environmental

Protection Administration (opendata.epa.gov.tw)

● Air Pollution Indexes and Data from different stations.

Page 38: Local Weather Information and GNOME Shell Extension

Moedict 萌典

Page 39: Local Weather Information and GNOME Shell Extension

Moedict 萌典

● Raw data from Ministry of Education (edu.tw)● Community build of web-based chinese

dictionary with 160,000 Chinese items and other items.

● Support auto-completion, searching and offline versions.

● Source codes, other platforms, data are available on 3du.tw (hackpad).

Page 40: Local Weather Information and GNOME Shell Extension

Why ?Web Scraping

Page 41: Local Weather Information and GNOME Shell Extension

Programme List of Paid TVs in 2004

Page 42: Local Weather Information and GNOME Shell Extension

Programme List of Paid TVs in 2004

● I want to know live football match was showing on which channel.

● Paid TV web site = M$ + IIS + ASP + Flash● Slow....... Very Slow...... Extremely Slow!● Couldn't connect at any peak hours!● Wrote my first web crawler in PHP in 2004.

Page 43: Local Weather Information and GNOME Shell Extension

Public Transportation in 2006-2010

● Kowloon Motor Bus (KMB)– No map view for a bus route

● Public Transportation Enquiry System (PTES)– Exteremly Poor, Ugly (or much worse) map UI on

PTES.

Page 44: Local Weather Information and GNOME Shell Extension

HK Observatory and Joint TyphoonWarning Center

● Any typhoon is coming to Hong Kong ? And When will it come ?

● No easy data exchange format.● No RSS nor ATOM.● We aren't check websites everyday.

Page 45: Local Weather Information and GNOME Shell Extension

My Products

● WeatherHK ← ← ← ● TCTrack

Page 46: Local Weather Information and GNOME Shell Extension

WeatherHK● http://twitter.com/weatherhk● hourly current weather report● weather forecast report● tropical signal warning

Page 47: Local Weather Information and GNOME Shell Extension

WeatherHK

● Backend: Python + Scrapy + Database + Twitter + NNTP......

● Frontend: Twitter + Newsgroup

Page 48: Local Weather Information and GNOME Shell Extension

WeatherHK

● http://twitter.com/weatherhk● Interview by MetroPop in 2009.

Page 49: Local Weather Information and GNOME Shell Extension

My Products

● WeatherHK● TCTrack ← ← ←

Page 50: Local Weather Information and GNOME Shell Extension

TCTrack

● http://sammy.hk/projects/tctrack/tctrack.php● Plot TC current and forecast tracks over

Google Map.● Source:

– JTWC

– HKO

Page 51: Local Weather Information and GNOME Shell Extension

TCTrack

● http://sammy.hk/projects/tctrack/tctrack.php● Probably first tctrack map in HK using

GoogleMap● Use of GMap: TCTrack -> Weather

Underground Hong Kong -> HKO

Page 52: Local Weather Information and GNOME Shell Extension

TCTrack

● http://twitter.com/tctrack● Tweet JTWC updates for Northwest Pacific.

Page 53: Local Weather Information and GNOME Shell Extension

Web Scraping

● a computer software technique of extracting

information from websites. (Wikipedia)● for business, hobbies, research purposes.

Page 54: Local Weather Information and GNOME Shell Extension

Web Scraping

● Look for right URLs to scrap.● Look for right content from webpages.● Saving data into data store.● When to run the web scraping program ?

Page 55: Local Weather Information and GNOME Shell Extension

Use of Open Source Software in

Web Scraping

Page 56: Local Weather Information and GNOME Shell Extension

Use of Open Source Software in Web Crawling

● Use Open Source Tools to collect useful and meaningful machine-readable data.

● Doesn't need to wait provider to release data in machine-readable format.

Page 57: Local Weather Information and GNOME Shell Extension

Open Source Tools

● Python programming lanugage● with Regular Expression library● Scrapy web crawling framework

Page 58: Local Weather Information and GNOME Shell Extension

Why python + scrapy ?

● python: my current favourite programming language for few years.

● scrapy: web crawling framework written in Python.

Page 59: Local Weather Information and GNOME Shell Extension

What is Scrapy ?

● An open source web scraping framework for Python.

● Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing.

Page 60: Local Weather Information and GNOME Shell Extension

Scrapy Features

● define data you want to scrapy● write spider to extract data● Built-in: selecting and extracting data from HTML

and XML● Built-in: JSON, CSV, XML output● Interactive shell console● Built-in: web service, telnet console, logging● Others

Page 61: Local Weather Information and GNOME Shell Extension

Starting new Open Source project

hk0weather to create Open Weather Data.

Page 62: Local Weather Information and GNOME Shell Extension

hk0weather

● Open Source.● Web scraping HKO website.● Output datas in standard machine-readable

data format – JSON, XML.● https://github.com/sammyfung/hk0weather● python + scrapy

Page 63: Local Weather Information and GNOME Shell Extension

hk0weather

● 1st version: – from hourly weather report– extracting temperture and humidity from 20+

weather stations, export in json format.

● 2nd version:– From 10-minute update regional weather report.

– Including wind directions, wind speeds, max gusts.

Page 64: Local Weather Information and GNOME Shell Extension

hk0weather

Page 65: Local Weather Information and GNOME Shell Extension

hk0weather

● Current version:– Django web framework.– Added rainfall data.

● Future:– JSON APIs.

– Tropical cyclone data.– Weather Warning Report.

Page 66: Local Weather Information and GNOME Shell Extension

hk0weather

● https://github.com/sammyfung/hk0weather● $ virtualenv hk0weatherenv● $ source hk0weatherenv/bin/activate● $ git clone

https://github.com/sammyfung/hk0weather.git● $ cd hk0weather● $ pip install -r requirements.txt● $ scrapy crawl regionalwx -t json -o /tmp/regionalwx.json

Page 67: Local Weather Information and GNOME Shell Extension

hk0weather

● Python– import re

● Scrapy– web crawling framework written in Python.– HtmlXPathSelector.

– built-in JSON, CSV, XML output.

Page 68: Local Weather Information and GNOME Shell Extension

hk0weather{"reptime": "2014-05-23 09:20:00", "temperturemax": 25.2, "ename": "The Peak", "scraptime": "2014-05-23 09:27:15", "station": "vp1", "cname": "\u5c71\u9802", "temperturemin": 24.1, "temperture": 25.0},{"reptime": "2014-05-23 09:20:00", "temperturemax": 26.3, "ename": "Ta Kwu Ling", "maxgust": 15, "scraptime": "2014-05-23 09:27:15", "humidity": 94, "windspeed": 8, "cname": "\u6253\u9f13\u5dba", "station": "tkl", "temperturemin": 25.0, "temperture": 25.8, "winddirection": "East"},{"reptime": "2014-05-23 09:20:00", "temperturemax": 27.9, "ename": "Lau Fau Shan", "maxgust": 33, "scraptime": "2014-05-23 09:27:15", "humidity": 90, "windspeed": 21, "cname": "\u6d41\u6d6e\u5c71", "station": "lfs", "temperturemin": 26.4, "temperture": 27.1, "winddirection": "South"},{"reptime": "2014-05-23 09:20:00", "temperturemax": 27.6, "ename": "Peng Chau", "maxgust": 27, "scraptime": "2014-05-23 09:27:15", "humidity": 99, "windspeed": 13, "cname": "\u576a\u6d32", "station": "pen", "temperturemin": 26.8, "temperture": 27.6, "winddirection": "South"},{"reptime": "2014-05-23 09:20:00", "ename": "Tap Mun", "maxgust": 6, "scraptime": "2014-05-23 09:27:15", "windspeed": 2, "cname": "\u5854\u9580", "station": "tap", "winddirection": "North"},{"reptime": "2014-05-23 09:20:00", "temperturemax": 28.7, "ename": "Shek Kong", "maxgust": 8, "scraptime": "2014-05-23 09:27:15", "humidity": 96, "windspeed": 1, "cname": "\u77f3\u5d17", "station": "sek", "temperturemin": 26.6, "temperture": 27.4, "winddirection": "Variable"},{"reptime": "2014-05-23 09:20:00", "temperturemax": 28.3, "ename": "Tsing Yi", "maxgust": 28, "scraptime": "2014-05-23 09:27:15", "humidity": 96, "windspeed": 18, "cname": "\u9752\u8863", "station": "ty1", "temperturemin": 26.4, "temperture": 27.4, "winddirection": "N/A"},{"reptime": "2014-05-23 09:20:00", "ename": "Green Island", "maxgust": 42, "scraptime": "2014-05-23 09:27:15", "windspeed": 35, "cname": "\u9752\u6d32", "station": "gi", "winddirection": "South"},{"ename": "Sai Wan Ho", "cname": "\u897f\u7063\u6cb3", "station": "swh", "scraptime": "2014-05-23 09:27:15", "reptime": "2014-05-23 09:20:00"},{"reptime": "2014-05-23 09:20:00", "temperturemax": 28.4, "ename": "Shau Kei Wan", "scraptime": "2014-05-23 09:27:15", "station": "skw", "cname": "\u7b72\u7b95\u7063", "temperturemin": 25.7, "temperture": 27.9},{"ename": "Tai Mo Shan", "cname": "\u5927\u5e3d\u5c71", "station": "tms", "scraptime": "2014-05-23 09:27:15", "reptime": "2014-05-23 09:20:00"},{"reptime": "2014-05-23 09:20:00", "ename": "Tsuen Wan Shing Mun Valley", "scraptime": "2014-05-23 09:27:15", "humidity": 98, "cname": "\u8343\u7063\u57ce\u9580\u8c37", "station": "tw"},.....

Page 69: Local Weather Information and GNOME Shell Extension

GNOME Shell Extensions

Page 70: Local Weather Information and GNOME Shell Extension

GNOME Shell

● Core user interface functions for GNOME– 2 Screenshots followings after this slide.

● Switching to windows● Launching applications● Panel at the top of the screen● the Activities Overview● Message Tray at the bottom of the screen.

Page 71: Local Weather Information and GNOME Shell Extension
Page 72: Local Weather Information and GNOME Shell Extension
Page 73: Local Weather Information and GNOME Shell Extension

GNOME Shell Extensions

● Small pieces of code● Written by third party developers

– That's mean they could be most of you!

● Modify the way GNOME works. ● Similiar: Chrome Extensions or Firefox Addons.● Extensions can be found and installed from

extensions.gnome.org.

Page 74: Local Weather Information and GNOME Shell Extension

What can GNOME Shell Extensions do ?

● Extensions may make small changes.– like moving your clock to the right-hand side of

the screen

● Or make big changes– like arranging the windows in the Activities

Overview in a different way.

Page 75: Local Weather Information and GNOME Shell Extension

Weather related GNOME Shell Extensions

Page 76: Local Weather Information and GNOME Shell Extension
Page 77: Local Weather Information and GNOME Shell Extension

Installation of GNOME Shell Extensions

● "GNOME Shell Integration" plugin is installed and enabled in your browser preferences

● Go to extensions.gnome.org, find and install.– Whitelisted this website or turn off the click-to-

play feature at your browser.

● Make sure Unzip is installed.

Page 78: Local Weather Information and GNOME Shell Extension

Weather (by Neroth)

Page 79: Local Weather Information and GNOME Shell Extension

Weather (by Neroth)

● A simple extension for displaying weather information from several cities in GNOME Shell

● https://github.com/Neroth/gnome-shell-extension-weather

Page 80: Local Weather Information and GNOME Shell Extension

Weather (by Neroth)

● Let's look at its codes.– Data come from Yahoo Weather.

Page 81: Local Weather Information and GNOME Shell Extension

OpenWeather (by jens)

Page 82: Local Weather Information and GNOME Shell Extension

OpenWeather (by jens)

● Weather extension to display weather information from OpenWeatherMap for many cities in GNOME Shell.

● https://github.com/jenslody/gnome-shell-extension-openweather

Page 83: Local Weather Information and GNOME Shell Extension

OpenWeatherMap

Page 84: Local Weather Information and GNOME Shell Extension

Developing next Weather Widget

● With data from cities/town-level weather stations.– Yahoo Weather ?– OpenWeatherMap ?

– Open ''Weather'' Data ?● From Observatories● Web Scraping

Page 85: Local Weather Information and GNOME Shell Extension

Thank [email protected]

http://sammy.hk