Python

2017年7月15日 (土)

Python: 睡眠導入器スクリプト PyRainDrop を更新した V_101_0

2017-07-15(土)晴れ

 睡眠導入器と題するPythonスクリプト PyRainDrop を、Nokia E7-00でも動くように更新しました。

 作成したが実用にすることはなかった睡眠導入器ですが、元は50年以上前の子供向け(中学生向けくらいかな)の科学雑誌に掲載された電気回路でした。(名称は記憶になかったので、スクリプトで作成する際に付けたものです)。睡眠導入器とは、、夜、なかなか眠りに入れないときに使うもので、ヒツジが一匹、ヒツジが二匹、、的なものです。
 具体的に言うと、ポツっ、ポツっ、という雨だれに近い音を、ぼんやりと聴いていると眠くなるので、そういう音を出す電気回路を作る記事でした。
機能:「ポツっ、ポツっ、という音を出し、徐々に間隔が長くなり、徐々に音が小さくなります。ある時間経つと音が出なくなります。この間に、眠りにつこうというものです。」
 スクリプトで作成時の説明記事 「睡眠導入器をPythonで作る

 PyRainDropはこの機能をスクリプトで実施するものです。
 機能:「雨だれ(単発)の音を、間隔をおいて再生します。段々、間隔を長くし、音を小さくし、一定時間後に終了させます。」
 ただ、それだけの動作です。

 実用にはしていなかったのですが、Nokia E7-00 で動かなかったので、気がついたときに修正しておくことにしたものです。
変更概要:
 ・E7-00に対応させた。
  (音量指定範囲を1~10とし、音量指定値10を各機種のmax_volume()の値に
   割り付けるようにした)。
 ・Python 2.0.0 での対策を入れた。
  (setdefaultencoding)
 ・E:\Python\Libのパス挿入が複数にならないよう改良した。

--------------------------------------------
  「PyRainDrop_1_01_0.zip」

--------------------------------------------
 

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

2017年7月13日 (木)

Python: メトロノームアプリ Musician_mを更新 V3_4

2017-07-13(木)晴れ/曇り、いちじ小雨

 Nokia 携帯電話用の、Pythonによるメトロノームアプリ Musician_mを V3_4 に更新しました。 この Musician_m というのは Musician というメトロノーム スクリプトに触発されて、Musicianを自分用に改良したものです。 Musician はオープンソースなので、差分記述にして、上記WEBサイトにフィードバックすればいいのですが、手を加えすぎてしまったので自分用としてMusician_m としています。

  Musician_m 作成に関しては、下記のリンクに関連記事があります。
   「Python スクリプト 雑記」の  「42.メトロノームアプリ Musician_m
--------
 Musician という Python スクリプトはメトロノームのスクリプトです。オリジナルは Steve Litchfield 氏の作で、下記にあります。
   Musician:http://stevelitchfield.com/musician.htm
--------

 今回の変更のメインは、E7-00などのタッチ画面携帯電話(画面サイズの大きい携帯電話)に対応させました。
変更の詳細内容は
 ・E7-00に対応させた。
  (音量指定範囲を1~10とし、音量指定値10を各機種のmax_volume()の値に
   割り付けるようにした)。
 ・E7-00画面サイズのPianoキー画像を追加した。
 ・Python 2.0.0 での対策を入れた。
  (setdefaultencoding)
 ・E:\Python\Libのパス挿入が複数にならないよう改良した。

モジュールや詳細は下記にリンク先をを記述しています。
  「Python スクリプト 雑記」 の 「42.メトロノームアプリ Musician_m

 

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

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)

より以前の記事一覧