CALENDAR
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   
<< May 2017 >>
閲覧数の多い順
<< Superkarambaをインストール ( Debian Sarge ) | main | Superkaramba テーマの作成 2 >>
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - | 編集 |
Superkaramba テーマの作成

作成したSuperkarambaのテーマ(試作版)

天気を表示するウィジェットを作成したいと思ったので色々と調べてみた。

livedoor weather hacks で天気をRSS配信しているみたいなので利用することにした。

  • Karamba API

    参考URL

    SuperKaramba 0.33 API

    Qt 3.3 : QStyleSheet Class QTタグ リファレンス

  • ---PythonでRSS---

    Python Web servicesデベロッパー: Python用のRSS

    KDE-Look.org - Karamba superkarambaのテーマ一覧

    rssparser.py を使用したテーマ
    • 8721-skrssreader-1.0
    • BBC_RSS_karamba

    RSS Parsing Programs 色々なRSSライブラリの説明

    rssparser.py のドキュメントがなかなか見付からなかったけれど、feedparserのドキュメントをみたら使いかたがわかった。 Universal Feed Parser

  • ---Pythonで日本語---

    python-japanese-codecs --- debianパッケージで入手 Japanese Codecs for Python

  • ---文字コード---

    Unicode で『あ』は、『¥u3042』と『¥xa4¥xa2』がある。

    karambaで表示させたときに『¥xa4¥xa2』だと文字化けするが、『¥u3042』は文字化けしない。

    Python2.3 では普通にすると
    >>> u=u"あ"
    >>> u u'¥xa4¥xa2'

    こうなる。

    『¥u3042』は、ISO-10846-1 、UCS-2 という。16進数

    UTF-8 から ユニコード(UCS-2) への変換 print unicode(ustr,'utf-8')

  • --- UCS-2 -> UTF-8 -> UCS-2 ---

    >>> ustr=unicode("日本語の表示サンプルsample","euc_jp")
    >>> ustr u'¥u65e5¥u672c¥u8a9e¥u306e¥u8868¥u793a¥u30b5¥u30f3¥u30d7¥u30ebsample'
    >>> print ustr.encode('utf-8') ・ユ・・・・・;腓冴・泣・潟・・・・ample
    >>> ustr = ustr.encode('utf-8')
    >>> print ustr
    ・ユ・・・・・;腓冴・泣・潟・・・・ample
    >>> print unicode(ustr,'utf-8') 日本語の表示サンプルsample

    >>> ustr=unicode("これ","euc_jp")
    >>> ustr
    u'¥u3053¥u308c'

    参考:

    日本語環境でのPython (for Python 2.3 or later)

    Python チュートリアル 3.1.3 Unicode 文字列

  • ------------------------- Karamba で日本語の表示 -- 成功 -------------------------
    import karamba
    
    #this is called when you widget is initialized
    def initWidget(widget):
        text=u"""<h1>UNICODE Example</h1>
        <h3>Japanese</h3>
        ¥u65e5¥u672c¥u8a9e¥u306e¥u8868¥u793a¥u30b5¥u30f3¥u30d7¥u30ebsample"""
        karamba.resizeWidget(widget, 300, 150)
        richtext = karamba.createRichText(widget, text)
        karamba.setRichTextWidth(widget, richtext, 300)
  • -------------------------- RSS で取得した日本語(UTF-8)をUCS-2に変換して、Karambaで文字化けせずに表示させる。 -- 成功 --------------------------

    text = unicode(content,'utf-8') 最新のrssparser.py(バージョン3.0) をインポートすると、UTF-8からUCS-2に変換しているみたいなので、何もしなくても文字化けせずに表示できた。

    ただし、摂氏度符号など、文字化けする文字は豆腐が表示されずに消去されてしまうようになった。 フォントを変更すれば表示できるようになるかもしれない。

    摂氏度符号 は、数値文字参照 "&#8451;" でも'u"¥u2103"' としても表示できないので、代わりに度記号を使って "&deg;C" としようかな。

  • -------------------------- RSS で取得した画像を表示させる。 --------------------------

    まずは画像のURLの取得

    >>> import rssparser
    >>> d = rssparser.parse("http://weather.livedoor.com/forecast/rss/36/101.xml")
    >>> d['items'][1].image.url
    u'http://image.weather.livedoor.com/img/icon/2.gif'

    Qスタイルシート(Karambaのリッチテキスト)では、Inline Imagesで <img src="http:// ">というように RSSで取得した画像のURLを直接リンクさせて表示させることはできなかった。

    CreateImageを使えばWWW上の画像に直接指定して表示ができた。 karamba.createImage(widget, 0, 0, "http://www.google.com/images/logo_sm.gif")

    でもインラインでの表示ではないので、リッチテキストの下に重なって表示される。背景画像を重ねて表示させるときは使えそうだけど、テーブルの中に表示させたいので別の方法をとることにする。

    ローカルに保存した画像に相対アドレスで指定して表示させることにした。

    <img src=¥"icon/""" +os.path.basename(feed['items'][n+1].image.url) + """¥" width="50" height="31">

    ローカルに保存した画像を表示しているのでマッピングすれば Liquid Weather のアイコンも使えそう。

作成したSuperkarambaのテーマ(試作版)

天気を表示する地域を徳島にしているので、徳島県以外の地域の人は各地域別RSSファイルのURIをこちらLivedoor Weather HacksのRSSフィード一覧で調べてpythonファイルを書き換えて下さい。

そのうちダイアログで地域等の設定ができるようにしたいです。

追記:ダイアログで地域の設定ができるようになりました。

| Debian(Superkaramba) | 23:44 | comments(0) | trackbacks(0) | 編集 |
スポンサーサイト
| - | 23:44 | - | - | 編集 |
コメント
コメントする









この記事のトラックバックURL
http://cafelate.jugem.cc/trackback/51
トラックバック