Python

2017年6月21日 (水)

Python:ノートデータベース PyNotePad とPyNoteNdb 更新 V.005_0

2017-06-21(水)雨(午後半ばまでは激しい雨だった)

 昨日の PyShopper に続いて、ノートデータベース PyNotePad と PyNoteNdb をE7-00でのスライドスクロールに対応させる変更を入れました。これも、リスト最後の項目まではスライドスクロールさせられないという同じ制限がありますが、メニューの「Goto Top /Goto End」で移動させる事にします。

ノートデータベース PyNotePad とPyNoteNdb を V.005_0 に更新しました。
 主な変更点は下記の2点です。
   ・Nokia E7-00 でスライドスクロールが使用できるようにた。
   ・Python 2.0.0 への対策を入れた。

取りあえずは、E7-00でも、キーボードを出さずに使用することができるようになりました。

モジュールは例によって 「Python スクリプト 雑記」 の
 「4.ノートデータベース PyNoteNdb」、「5.ノートデータベース PyNotePad」に載せました。
 

| | コメント (0) | トラックバック (0)

2017年6月20日 (火)

Python: ショッピングリスト PyShopper を更新しました V_002_0

2017-06-20(火)晴れ

 暫く前から Nokia E7-00 を持ち歩いて使っています。通話用の携帯電話は別の小型の携帯電話を使用しているので、 Nokia E7-00は、PDAとしての使い方です。

Dscn2306a
(ブックカバー型のケースを使用してみました)

 大きくて重いのですが、セキュアなWEBサイトもアクセス出来ること、繁体中国語の手書き入力だと日本語の入力も簡単なので、E52に替えて、こちらを持ち歩いています。
 そこで、良く利用するPython スクリプトのリスト画面で、スライドスクロール(画面で指をスライドさせてスクロールさせる)が使用できるように対策を入れつつあります。暫く前にPyMyShellなどの簡単なスクリプトは変更したのですが、PyShopperとかPyNoteNdb、PyNotePadなどの、データベースを使用するスクリプトは保留にしていました。それは、下記のような理由でした。
==
 スライドスクロールでスクロールさせた場合、リストの最後の項目が表示できない制限がある(カーソルキーで移動させた場合は表示できる)。以前の簡単なリストのスクリプトでは、最後にダミー項目を入れることで対策した。しかし、データベースを使うスクリプトでは、迂闊にリストに追加すると、データベースアクセスをおかしくしてしまうかもしれない(スクリプトの詳細を忘れているので、迂闊なところは触れないというのが本音かも)。
==
 ということで、リストそのものは触らず、スクロールを有効にする対策だけ入れることにしました。最後の項目へ移動させるのは、メニューに「Goto Top/Goto End」を追加することで可能にしました。

 PyMyShopper をV002_0に更新しました。
主な変更点は下記の2点です。
   ・Nokia E7-00 でスライドスクロールが使用できるようにた。
   ・Python 2.0.0 への対策を入れた。

 これで、食品の買いものに、E7-00のショッピングリストを簡単に使用することができるようになりました。

 モジュールは例によって 「Python スクリプト 雑記」 の
                 「10.ショッピングリスト」  に載せました。
 


| | コメント (0) | トラックバック (0)

2017年6月16日 (金)

Python: WEB小説のデータ取得スクリプト PyBookGet 更新 V107_0

2017-06-16(金)曇り/晴れ

 「小説家になろう」サイトからWEB小説のテキストを纏めてダウンロードするスクリプト「PyBookGet」を更新しました。これも、自分で使っているからと変更を行い、忘れないように記事にしておくものです。
 変更内容は、大きくいうと2点です。
 (1)連載が1000回以上になったもののために、ファイル名に入れる連番を4桁化しました。
 (2)連載毎の各テキストから、固定フレーズ以降の文章を削除する機能を入れました。

(1)は連載毎のテキストファイルとしてダウンロードするモードの場合の、ファイル名に入れる連番の桁数です。現実的には使用しなくなったモードですが、機能が入っているので修正しておくことにしました。修正しなくても、ファイル名としておかしくなることはありません。ただ、001~999、1000、、、と3桁から4桁になるだけです。この場合、嫌なのはファイル名ソートが期待値と変わることですね。

Scre000048a Scre000047a

 変更前だと左のように998や999の前に1000が来てしまいます。これは上位桁の文字からソートしてゆくのでやむを得ない順番です。
右は修正後のファイルの並びです。最初から4桁にしておけば問題ないわけです。5桁になったらどうするか?ですか。そんな長いのは今まで無かったし、あっても読まないですね。というか、マージしてファイルを纏めるモードしか使用していないですから、このモードは死にモードです。

(2)は、毎回記入されているような、たとえば「お読みいただきありがとう、、、、、、」というような文章から始まる追加文などを削除する機能です。連続で読んでゆくときには鬱陶しいので、削除する機能を入れました。
 固定フレーズから後ろの削除だけですが、サブルーチンの中を弄ることで簡単に変更できるので、後々のために入れておくことにしました。今まで、2タイトルに対して使用しました。

変更詳細(変更来歴から)
 ・連載が1000以上のときの対策として、ファイル連番を4桁化した。
  (個別ファイルモードのときのファイル名の連番を4桁にした。
   マージファイルの場合の、テキスト中に入れるテキスト連番は
   001--999、1000--で今までどおりとした。)
 ・モード3(html形式、マージファイル)のヘッダにcharset=UTF-8 を追加した。
 ・連載の各テキスト中から固定フレーズを削除する処理を呼べるように
  サブルーチンをコールするようにした。
 ・サブルーチンとして、固定フレーズの行以降を削除するルーチンを入れた。
  (固定フレーズはグローバル変数定義部分に記述する。)


-----------------------------------------------
モジュール
  「「PyBookGet_107_0.zip」
 

| | コメント (0) | トラックバック (0)

2017年5月12日 (金)

Python: ファイル転送スクリプトを更新した PyMyFTP V001_0

2017-05-12(金)晴れ

 PyMyFTP は、画像ファイルなどをFTPサイトに転送するスクリプトです。使用法としてはPyResizeJpgなどでリサイズした写真ファイルを、自分のFTPサーバにアップすることを想定しています。これは、旅行先からブログ更新のため、写真ファイルを簡単に転送することを目的にしています。fubuki などの、他のスクリプトと連動して使用する、シリーズものの一つです。
  参考: Pythonスクリプト雑記 「fubuki で WEB 作成

 先日からスクリプトを更新している、タイムアウト検出と終了対策をいれて更新しました。まあ、今までも特に問題は出ていないのですが、他のスクリプトと合わせて対策しておくことにしました。

■:変更概要
 WEBデータ待ちのまま終了できなくなることがあったので、タイマ監視で強制終了させる処理を入れました。なお、以前のバージョンでも、Nokia E7-00以外では問題は出ていません。合わせて、Python 2.0.0 などの対策を入れました。
  ・WEBデータ取得時のタイムアウト監視を入れた。
  ・Python 2.0.0 での対策を入れた。(setdefaultencoding)
  ・E:\Python\Libのパス挿入が複数にならないよう改良した。
  ・スクリプトの構造を綺麗にする改造を行った。

モジュールは、「Python スクリプト 雑記」の
  「6.fubuki で WEB 作成」に載せました。
 

| | コメント (0) | トラックバック (0)

2017年5月11日 (木)

Python: 太陽と月の出入り時刻、月齢表示のスクリプトを更新した PySunMoon V002_0

2017-05-11(木)晴れ

 国立天文台のWEBサイトからデータを読んで太陽や月の出入りの時刻、南中の時刻、月齢などを数字で表示するスクリプトを更新しました。先日から更新しているスクリプトと同じで、WEBアクセスのタイムアウト検出がメインです。その他、Python 2.0.0対応を入れました。

■変更概要
  WEBデータ待ちのまま終了できなくなることがあったので、タイマ監視で強制終了させる処理を入れました。なお、以前のバージョンでも、Nokia E7-00以外では問題は出ていません。合わせて、Python 2.0.0 などの対策を入れました。
 ・WEBデータ取得時のタイムアウト監視を入れた。
 ・Python 2.0.0 での対策を入れた。(setdefaultencoding、btsocket)
 ・E:\Python\Libのパス挿入が複数にならないよう改良した。

作成時の記事の画像を貼り付けてみました。
Ssce0709a
 日の出、日の入りを見るより、月齢を見るのに重宝しています。


モジュールは例によって「Python スクリプト 雑記」に載せました。
  「44.太陽、月の出入り時刻を見る PySunMoon
 

 

| | コメント (0) | トラックバック (0)

2017年5月10日 (水)

Python: WEB小説のデータ取得スクリプト PyBookGet 更新 V106_0

2017-05-10(水)雨、曇り

 「小説家になろう」サイトから、WEB小説のテキストを纏めてダウンロードするスクリプト「PyBookGet」を更新しました。これも、自分で使っているからと変更を行い、忘れないように記事にしておくものです。変更内容は、概ね一昨日のPyStnシリーズの変更と同じで、メインはWEBアクセス時のタイムアウト監視です。改造は四月に終わっていたのですが、ドキュメントを修正するのを面倒がっていて保留になっていました。記述内容を忘れかけてきたので、慌てて記述しました。

変更概要
  WEBデータ待ちのまま終了できなくなることがあったので、タイマ監視で強制終了させる処理を入れました。なお、以前のバージョンでも、Nokia E7-00以外では問題は出ていません。
  合わせて、Python 2.0.0 などの対策、ダウンロード途中で中止出来るようにする等の対策を入れました。
  ・WEBデータ取得時のタイムアウト監視を入れた。
  ・Python 2.0.0 での対策を入れた。(setdefaultencoding、btsocket)
  ・E:\Python\Libのパス挿入が複数にならないよう改良した。
  ・ダウンロード途中で中断できるよう Quit メニューを設けた。
  ・ダウンロード途中でも終了できるようにした。

-----------------------------------------------
モジュール
   「PyBookGet_106_0.zip」   
-----------------------------------------------
 


| | コメント (0) | トラックバック (0)

2017年5月 8日 (月)

Python: PyStnシリーズのスクリプトを更新した

2017-05-08(月)晴れ

 相変わらず、「相変わらずの携帯電話機種=Nokia携帯電話」のためにPythonスクリプトを弄っています。まあ、自分で使っているから仕方がないのですが。
 PyStnシリーズは、WEBサイトからデータを取得して表示するもののシリーズです。天気予報とか花粉予報、株価、ニュース速報などです。
 今までは特に問題無かったのですが、E7-00で使ったときに、何回かWEBからのデータ待ちになったまま、キー入力も受け付けなくなり、終了も出来ず困ったことがありました。電波状態が微妙なときだったようです。まあ、スクリプトのコーディングが悪かったですね。待ちの状態でもキーを受け付けられるような処理構造にすべきだったのですが、今まで問題がなかったことや、今までの機種はキーもあり強制終了できるので気がつきませんでした。今までの機種は通話終了(切断)キーでソフトを強制終了できるのですが、E7-00ではそれらもディスプレイ上のソフトキーなので、強制終了できず苦労することになります。バッテリーも内蔵だからバッテリー抜きも出来ないし、、。
 ということで、PyStnシリーズを纏めて更新しました。
 (1)PyStnWeather_J V_0_04_0
 (2)PyStnNews      V_0_04_0
 (3)PyStnNews2     V_0_05_0
 (4)PyStnCurrency  V_0_04_0
 (5)PyStnPollen    V_0_04_0


ドキュメントからの抜粋で、変更概要です。
  WEBデータ待ちのまま終了できなくなることがあったので、タイマ監視で強制終了させる処理を入れました。なお、以前のバージョンでも、Nokia E7-00以外では問題は出ていません。 合わせて、Python 2.0.0 などの対策を入れました。
 ・WEBデータ取得時のタイムアウト監視を入れた。
 ・終了時に終了報告ダイアログを出すようにした。
 ・Python 2.0.0 用の対策を入れた。
  (setdefaultencoding、btsocket)
 ・E:\Python\Libのパス挿入が複数にならないよう改良した。

 モジュールや交信の記事は例によって「Python スクリプト 雑記」のそれぞれの項に貼り付けました。
 
 とりあえず、PyStnシリーズは纏め終わりましたが、WEBアクセスするスクリプトは、まだまだあるんですよね。
 

| | コメント (0) | トラックバック (0)

2017年4月24日 (月)

Python:リストのスライドスクロールを有効にする対策をした

2017-04-24(月)曇り

 Nokia E7-00でのPythonスクリプトのテストの件で、残っていた対策の幾つかを実施しました。残っている対策は、前回の記事でリストアップしました。
 前回の記事「Nokia E7-00でのPythonスクリプトのテストを始めた その5

 今回の対策の項目は、リスト画面でのスライドスクロールを有効にする対策です。ここでスライドスクロールと言っている動作とは、リスト画面で指をスライドさせてリストをスクロールさせる動作です。今風の言い方で言うとスワイプですか?用語については、あまり良く知らないのですが、、。

 タッチ画面式の携帯電話(Nokia 5800XM やE7-00)では、OSや内蔵アプリではスライドスクロールは動作するのですが、Pythonで表示しているリストでの、指をスライドさせてのスクロールはうまく動きませんでした。Nokia 5800XMではバーチャルキーボードを導入していたので我慢していましたが、一応キーボードがあるE7-00にはバーチャルキーボードを導入したくなかったので対策を考えてみることにしたものです(バーチャルキーボードが動くかどうか不明だったし)。

 一応操作してみて、一つの事実が分かっています。それは、Pythonが制御している内部的なリストはスクロールしているらしいことです。

Scre000043a
 指をスライドさせても画面上のリストは変化しないのですが、その後、画面に指を振れてみると、その行だけ表示が変わって青く(選択された状態に)なります。その表示をみると番号が進んでいるからスクロールはされているようです。あちこち触ると上記画像のように、おかしな事になります。画面全体の表示が更新されていないからです。
 ということで、画面表示を更新すれば良いのではないかと考えました。余りよい手は思いつかなかったのですが、下記のように対策を入れてみました。

 ・10ミリ秒~50ミリ秒位のタイマをループさせて、タイムアウト毎に画面更新の命令
  を出すことにする。(appuifw.app.body = self.listbox_list)
 これで、とにかく画面更新をすると、画面上のリストをスクロールさせることが出来ました。ただ、機種(OS)やPythonのバージョンに寄って動作が違っています。とりあえずは、E7-00で使えればいいかなと考えました。

----- 機種(OS)やPythonのバージョンでの相違 -------------
     E7-00 (OS :Belle)
       Python 1.4.5  ○
       Python 2.0.0  -  (未テスト、多分大丈夫と期待)

     5800 XM (OS : S60 5th)
       Python 1.4.5  ×(スクロールしない) 注1
       Python 2.0.0  △(スクロールするが反応良くない)

 注1:appuifw2 を導入すると動作が変わるかもしれない
-------------------------------------------------------

Scre000044a_2 Scre000045a
 一つ制限事項が出てしまいました。スライドでのスクロールでは、左のように最後の項目でスクロールが止まりますが、実際はもう一つダミー行がないと、ここまで表示できないのです。右はカーソルキーで最後の行に移ったところです。最後にダミー行を入れています。この行をクリックしても何も動作しないようにはしていますが、、。一応、ここが項目の最後であること表示する行ということにしています。
 リストボックスを使ったスクリプトは多くあるのですが、全部対策する元気はないので、下記の3つを対策することにしました。

 PyMyShell は色々なスクリプトを起動するためのスクリプトですが、メニュー画面と同じようにキーボードを出さなくても良いようにしたかったので対策しました。

 PyFbuiutilは、ファイルやディレクトリ操作が必要なときに、色々なスクリプトがインポートして使うモジュールです。これが対策されていれば対策済みになるスクリプトが多いので対策しました。

 Filebrowser はその名の通りファイルブラウザ(ファイルマネージャ)ですが、これもファイルに対して色々なアプリを動作させるシェルみたいに使うことも多いので対策しました。

 ついでに、以前から分かっている、Python 2.0.0 での問題点も対策しました。

モジュールは例によって「Python スクリプト 雑記」の各々の項目のところに入れました。
 

| | コメント (0) | トラックバック (0)

2017年4月17日 (月)

Nokia E7-00でのPythonスクリプトのテストを始めた その5

2017-04-17(月)晴れ、のち雨

 暫く前から、もう少し手持ちのNokia E7-00を活用してみようと、メイン携帯で使っているPythonスクリプトをE7-00でテストしたり改造したりしてきました。
 前回の記事「Nokia E7-00でのPythonスクリプトのテストを始めた その4

 前回の記事までの問題点で対策してきたスクリプトについては、既に個別記事で書いてきました。既に5~6個のスクリプトを修正してきましたが、手を付け始めると色々と直したくなってきます。直さないと使えない内容から、とりあえずは問題ないけど、少し気になる内容とか色々です。

今まで修正した内容は以下のとおりでした。

(1)WEBデータを使用するスクリプトについて、サイトの変更に対応させたもの。
   これは対応させないと動かないので、仕方がないですね。
(2)フルスクリーン表示を使用しているものは、ソフトキーが表示されないのでメニュー操作や
   終了が出来ないので対策が必要だったもの。
(3)サムネイル画像を複数表示するスクリプトが、うまく動かなかったもの。
   これも、対策しないと使えない内容でした。
(4)E7-00の写真画像の縦横比が今までのカメラと違うので、リサイズ時に
   縦横比が変わらないように対策したもの。
(5)ブログ用記事作成スクリプトで画像指定時に、E7-00カメラの画像に縦横比に対応できるようにした。

 その後も色々検討していたら、まだまだ修正したい内容が出てきてしまいました。改造しないと困る内容から、”将来”のために改造しておきたい内容まで色々です。因みに、この携帯電話の使用に”将来”があるかどうかは、、、微妙なところですね。ま、使えなくなるまで使うことにします。

 これから対策したい内容は以下の通りです。

(1)リストを表示した画面のとき、指をスライドさせてスクロールさせたい。今風に言うとスワイプ?ですかね。
(2)Python2.0.0でも動くようにしておきたい。
(3)色々なスクリプトを連続使用しているときに、ライブラリ用ディレクトリのパスが
  どんどん肥大化してゆくのを防止する。
(4)WEBアクセス時にうまくデータを送受信できなくて、ずっと待ちになってしまい
   ハングアップしたようにみえることが発生した。このため、タイマ監視することにした。

 こんな内容で洗い出したら、最低でも10個も改造対象がリストアップされました。面倒だなと思う反面、スクリプトを弄るのが増えて楽しい面もあります。
 暖かくなってきたし、部屋で作業していても寒くないので、少しずつ改造する予定です。
 

| | コメント (0) | トラックバック (0)

2017年4月 8日 (土)

Python:サムネイル画像で一覧する PyMyViewer を更新した V003_0

2017-04-08(土)曇り/雨

 選択したフォルダ内の画像ファイルを、サムネイル画像で一覧するスクリプト  PyMyViewer を更新しました。これは、先日からやっているE7-00でのテストで動かなかったものを対策したものです。
 先日の記事「Nokia E7-00でのPythonスクリプトのテストを始めた その4

 画像ファイルをサムネイル画像の一覧で見るといえば、内蔵の「ギャラリー」に似ていますが、ギャラリーは全部のフォルダから画像ファイルを引っ張ってきますが、 PyMyViewer は選択したフォルダ内のファイルだけを対象とします。どちらが必要かは時と場合に寄りますので、動くようにしておくことにしました。

 動かない大きな理由は、以前対策したPyResizeJpgと同じく、graphicsモジュールを使うときに redraw callback 処理を用意してないせいでしょう。Nokia 5800XMのときは動いたのですが、新しいE7-00の方は、その辺はきっちりとしているのかもしれません。

(1)img.rectangle を使う方式
  これは最初、 img.rectangleで1枚のカンバス上に、リサイズした写真で塗りつぶした四角(rectangle)を配置して、 redraw callback 処理も含めて描画時には、そのカンバスを出力するようにしたものです。これだと、グローバル変数にした1枚のカンバスを持ち回りするだけで済むからです。

-----これを画像枚数分ループさせてから出力する--------
img.rectangle(((pos_x,pos_y), (pos_x1,pos_y1)), width=1,
  outline=(255,255,255), pattern=self.disp_img_list[i])
---------------------------------------------------

Scre000034a

 結果の画像です。一見、うまくいったかと喜んだのですが駄目でした。各々の画像を見ると分かりますが、縦や横に切り取って左右、あるいは上下に入れ換えたような画像になっています。縦、横に不自然な線で色が変わっているところが切り口です。どうやっても駄目で、私の知識、技術では分かりませんでした。

(2)今までの個別blit方式
  今までの方式(画像ファイルを個別にblitで画面に出力する方式)で、処理をきちんと作成しました。

-----これを画像枚数分ループさせる------------------------
self.canvas.blit(self.disp_img_list[i], target=(pos_x,pos_y), \
                                 source=((0,0), self.disp_img_list[i].size))
--------------------------------------------------------

Scre000042b Scre000041b

 左の画像のとおりうまくいきました。(1)の画像と同じ画像があるので比較すると、(1)の画像のおかしなところが分かります。合わせて、画像処理中の画面を右のように変更しました。今までは「画像処理中」だけ表示していましたが、処理枚数とファイル名を表示するようにしました。

(3)QVGA画面(240*320)機種への対応
  今まではNokia 5800XMやE7-00などの、360*640ピクセルの画面の機種を対象としていました。上下左右の幅の数値を決めうちしていました。なので、QVGA画面の機種でも動きはするものの、表示される画像がはみ出したりしてしまった訳です。今回の改造のついでに、QVGA画面のサイズ数値にも対応させました。

Ssce0725a(E52での表示)
 

 これで、やっと対策できました。(1)の方式で随分と足踏みしていましたが、何とかなって、ほっとしました。

例によって、「Pythonスクリプト雑記」 の
        「13. 5800 XM 用画像一覧アプリ PyMyViewer」を更新しました。
モジュールもそちらに載せました。
 

| | コメント (0) | トラックバック (0)

より以前の記事一覧