Nokia の携帯電話 702NK 上で動く Python には、簡単ながらもなかなかなサンプルがついています。weather_maps.py はアメリカの天気予報画像をダウンロードするサンプルです。コードがあまりにも簡単で驚き。
# Copyright (c) 2004 Nokia
# Programming example -- see license agreement for additional rights
# Simple GUI example
#
# commented by Toru Furukawaimport socket
import urllibimport e32
import appuifw# List of triplets "Name", "URL", "extension"
choices=[(u"US Graphical Forecast", "http://weather.gov/forecasts/graphical/images/thumbnail/Thumbnail_Wx4_conus.png", "png"),
(u"US Radar Image", "http://weather.gov/mdl/radar/rcm1pix_b.gif", "gif"),
(u"US Satellite Image", "http://weather.gov/satellite_images/national.jpg", "jpg") ]
tempfile_without_extension = "c:\\weather"# リファレンスより...
# The appuifw module offers an interface to Series 60 UI application
# framework. The services of this interface may only be used in the
# context of the main thread (the initial thread of a UI application
# script).
old_title = appuifw.app.title
appuifw.app.title = u"Weather forecast"L = [ x[0] for x in choices ]
# popup_menu はポップアップメニューのダイアログを表示して、
# 選択したインデックスを返す。
# 第1引数は選択肢のリスト。各要素は文字列、または文字列のタプル。
# ユーザが選択しなければ None を返す。
index = appuifw.popup_menu(L, u"Select picture")if index is not None:
# ダウンロードする URL と、その画像の拡張子を取り出す
url = choices[index][1]
ext = choices[index][2]
tempfile = tempfile_without_extension + "." + exttry:
print "Retrieving information..."
# urllib が入ってる!
urllib.urlretrieve(url, tempfile)# e32 モジュールは Symbian OS 関係のユーティリティ。UI は含まれない。
# Ao_lock は、UI イベントをブロックしないで動くようにするのに使う。
# Ao_lock.wait() で待ち状態に入る。
# Ao_lock.signal() で待ち状態から抜け出す。
lock=e32.Ao_lock()# appuifw.Content_handler は、MIME タイプに応じて、ファイルを処理する。
# 引数には処理終了時に呼び出すコールバックを指定する。
# ここでは画像表示が終わると、lock の待ち状態を解除する。
content_handler = appuifw.Content_handler(lock.signal)
content_handler.open(tempfile)
# Wait for the user to exit the image viewer.
lock.wait()
print "Image viewer finished."
except IOError:
print "Could not fetch the image."
except:
print "Could not open data received."appuifw.app.title = old_title