●Cosmic Tripper Ver1.10(2002/05/26) ○概要 WWWページを巡回し、そこから必要な部分をテキストファイルとして切り出 すソフトです。巡回するページや、必要な部分の切り出し方などは CosmicScript(コズミックスクリプト)と呼ばれるスクリプトによって指定し ます。 ○使用上の注意事項 本ソフトはフリーソフトです。個人的な目的のための利用・再配布は自由に 行っていただいてかまいません(ただし転載は無断で行わないでください)。 これ以外の目的で再配布する際には事前に(事後でもかまいませんが)知らせ てください(連絡先は文末にあります)。 本ソフトを利用したことにより発生した損害等について、作者は一切責任を 負いません。この点に同意いただける場合のみご利用ください。 ★制限・注意事項 ・本体データにはアクセスしませんが、念のためバックアップをとってからお 試しください。 ○対応機種 ソケットライブラリの動作制限からMI-10では動作しません。 動作確認はMI-E1でのみ行っています。 ○準備 スクリプトファイルを用意する必要があります。次項をよく読んで、ザウル ス上でエディタを使って作成するか、PCで作成後ザウルスに入れてください。 ファイル名はWME3DEF.LSDで、本体→カードの順にこの名前のファイルを探 し見つかったものが読み込まれます。 将来的にはGUIで簡単にスクリプトを作れるようにしたいのですが、現状は HTMLの知識も必要です。自信のない方はとりあえずサンプルのものを試してみ てください。サンプルはZACファイル内にWME3SMPL.LSDという名前で入ってい るので、これをWME2DEF.LSDという名前に変更して使ってください。 ○スクリプトファイル スクリプトファイルの形式は以下のとおりです。 ・改行コードは0x0dのみ、0x0d,0x0a、0x0aのみのいずれでもかまいません。 ・文字コードはSJISです。 ・先頭が#で始まる行はコメントとみなします。 ・1行目が必ず以下である必要があります。 #CosmicScript Ver1.0 スクリプトファイルには、組み込みコマンドを列挙していきます。 ★コマンド 使えるコマンドは以下のとおりです。<>で囲んだ部分は必須パラメータで、 []で囲んだ部分は省略可能なパラメータです。 ファイル名の記述に関してはすべてドライブ名から含めて指定してください。 そのままZaurusOSのファイルAPIに渡しますので、異常なファイル名を書いた 場合に不都合が生じる可能性もあります。ご注意ください。 ●connect インターネット接続を行う [形式] connect[,pppfile] [説明] pppfileでPPP接続設定ファイル名を指定できます。省略時には F0:MPGPPPP.DATが使われます。このファイルの作成はMOREイン ターネット設定を使えば簡単に行えます。 ●disconnect インターネット接続を切断する [形式] disconnect [説明] インターネット接続を切断します。 ●setvar 組み込み変数の値をセットする [形式] setvar,, [説明] variableで指定した組み込み変数にvalueで指定した値をセット します。 組み込み変数については後述します。 [例] setvar,char_code,EUC ●go ページを取得するWWWサーバを指定する [形式] go, [説明] 以後に続くget/getindexコマンドで利用するWWWサーバを wwwserverで指定します。wwwserverは"www.asahi.com"のように 指定します。先頭の"http://"や最後の"/"はつけてはいけません ん。 [例] go,www.asahi.com ●get 指定HTMLからテキストを抜き出してファイルへ保存する [形式] get,,[,+] [説明] goコマンドで指定されたWWWサーバ上からhtmlで指定したドキュ メントを取得し、ここからテキストを抽出します。抽出したテキ ストはfileで指定したファイルに格納します。指定ファイルへ追 記する場合には最後のパラメータに+をつけて指定します。 htmlはgoコマンドで指定したWWWサーバ上のもので、ドキュメン トルートからのパスで指定してください(つまり/ではじめる)。 抽出するテキストの範囲などは組み込み変数によって指定します。 [例] get,/index.html,F1:NEWS.TXT ●getindex 指定HTMLにあるリンク先からテキストを抜き出してファイル へ保存する [形式] getindex,,[,+] [説明] goコマンドで指定されたWWWサーバ上からhtmlで指定したドキュ メントを取得し、ここに書かれたリンク先からテキストを抽出し ます。テキストはfileで指定したファイルに格納します。指定ファ イルへ追記する場合には最後のパラメータに+をつけて指定しま す。 htmlはgoコマンドで指定したWWWサーバ上のもので、ドキュメン トルートからのパスで指定してください(つまり/ではじめる)。 抽出するリンクや、テキストの範囲などは組み込み変数によって 指定します。 [例] getindex,/index.html,F1:NEWS.TXT,+ ★組み込み変数(★はVer1.00で追加したものです) 変数はすべてsetvarで値をセットします。setvarで値をセットした時点から 以降のコマンドに関してその値が利用されます。 ■idx_start getindexで指定するページで、リンクを抽出するのを開始す るキーワード。この部分は抽出対象には含まれません。 ■idx_end getindexで指定するページで、リンクを抽出するのを終了す るキーワード。この部分は抽出対象には含まれません。 ■txt_start getで指定するページ、あるいはgetindexのリンク先となる ページで、テキストを抽出するのを開始するキーワード。 この部分は抽出対象には含まれません。 ■txt_end getで指定するページ、あるいはgetindexのリンク先となる ページで、テキストを抽出するのを終了するキーワード。 この部分は抽出対象には含まれません。 ■title_start getで指定するページ、あるいはgetindexのリンク先となる ページで、タイトルとしてテキスト抽出するのを開始するキー ワード。この部分は抽出対象には含まれません。 ■title_end getで指定するページ、あるいはgetindexのリンク先となる ページで、タイトルとしてテキスト抽出するのを終了するキー ワード。この部分は抽出対象には含まれません。 ■title_prefix タイトルとして抽出するテキストの前につけるマーク文字列。 ■char_code ページの文字コード。デフォルトはSJIS。EUCのページを抽 出する際にこれをEUCに指定するとEUC→SJIS変換が行われま す。文字コードに関しては自動判別しませんので、必ずEUC で書かれたページでは指定するようにしてください。 ■time_out ページを取得する際のタイムアウト時間。単位はms(ミリ秒)。 デフォルトは40秒(40000)。ニュースサイトは重たいこと が多いので、うまくいかないようなら大きい数字(例えば2 分:120000)を指定してみてください。 ■max_links getindexで指定したページから抽出するリンクの数。 デフォルトは0で、すべての抽出されたリンク先からテキス トを抽出します。 正の値を指定すると抽出されたリンクの先頭から指定数だけ リンク先のテキストを抽出します。負の値を指定するとリン クの最後から指定数だけを対象とします。 ★buf_size getindex,getでHTMLページを取得する際に用意するバッファ のサイズを指定します。デフォルトは102400バイトです。取 り込もうとするページのサイズがこれで不足している場合に 必要なサイズを指定してください。 ★update_type getindexで抽出したリンクを取得してそのページを取り込む 際に、前回取得した情報を元にして新しいページだけを取り 込むようにするためのものです。セットする値によって、以 下のようになります。いずれの場合にもmax_linksの指定は 有効で、指定したリンクの数に対して以下の動作をします。。 デフォルトは0です。 0: 無条件にページを取り込みます。従来の動作です。 1: 前回にgetindexで指定したページ(つまりリンクが書か れてあるページ)を取得した時間から更新されたページ だけを取り込みます。 詳しく書くと、サーバに対してIf-Modified-Sinceとい うHTTPヘッダを追加します。ただしニュースサイトなど 広告が入っているページではこの指定に関係なく常に更 新されたページとして情報が帰ってくるので、結局は0 を指定したのと同じになってしまう場合があります。そ のような場合には次に述べる2を指定してください。 2: 前回に取得した「最新の」ページ以降のページだけを取 り込みます。getindexで指定したページ(つまりリンク が書かれてあるページ)内でリンクが更新順に並んでい る場合に有効です(通常そうだと思いますが)。新しい 順に並んでいるか、古い順にならんでいるかは is_uptodown変数で指定します。 ★is_uptodown リンクが書かれてあるページのリンクが新しい順に並んでい るかどうかを指定します。デフォルトは1です。 1で新しいものが上に並び、0で新しいものが下に並ぶことを 意味します。update_typeを2にした場合の動作のために指定 します。例えばis_uptodownが1の場合だとupdate_typeを2に している場合、リンクの先頭から前回取得した最初の(つま り前回先頭にあった)リンクが見つかるまでのページだけを 取り込むようになります。 ★ファイル名の指定について ファイル名の中に[ID02]という文字列を含めると、この部分をすでに存在す るファイルと重複しない2桁の数字に展開したファイル名を自動生成します。 例えば、TRIP[ID02].TXT と指定した場合は TRIP00.TXT,TRIP01.TXT,TRIP02.TXT,...という順番でファイルが存在している かどうか調べ、存在していなければその名前でファイルを生成します。必ず2 桁の数字になるので全体で8.3形式のファイル名の長さをこえないように注意 してください。 この形式を使った場合のgetindexの動作は以下のようになります。 getindex,html,F0:TRIP[ID02].TXT →リンク先毎に新たなファイル名を生成してそこに格納する。つまり取得 するリンクの数だけファイルができる。 getindex,html,F0:TRIP[ID02].TXT,+ →このインデックスにあるリンクについて、新たなファイル名を生成しす べてをそこに格納する。生成されるファイルは一つ。 また、ファイル名はそのままZaurusOSのファイルAPIに渡されます(上記 [ID02]の処理後)。このためサブディレクトリなどの指定も機種によっては有 効です。MI-E1では確認しましたが、F1:\BOOKS2\TRIP.TXT と指定すればカー ドのルートディレクトリ直下のBOOKS2というディレクトリにTRIP.TXTが作成さ れます。 ○スクリプトファイル例 以下のスクリプトはASAHI.COMの社会ニュースの最新の5つの記事ををカー ドのASAHI.TXTというファイルに格納します。このファイルが存在する場合は 追記されます。 #CosmicScript Ver1.0 #asahi.comから記事を取得する connect setvar,idx_start, setvar,idx_end, setvar,txt_start, setvar,txt_end, setvar,title_start, setvar,title_end, setvar,title_prefix,● setvar,time_out,120000 setvar,char_code,EUC setvar,max_links,5 go,www.asahi.com getindex,/national/index.html,F1:ASAHI.TXT,+ disconnect  また、以下はZDNETのアンカーデスクをカードのZDNET.TXTというファイルへ 格納します。このファイルがすでに存在する場合には一度削除されます。 #CosmicScript Ver1.0 connect setvariable,idx_start, setvariable,idx_end,src="http://www.zdnet.co.jp/news/graphics/column_index_150.gif" setvar,txt_start, setvar,txt_end, setvar,title_start, setvar,title_end, setvar,title_prefix,● setvar,time_out,120000 go,www.zdnet.co.jp getindex,/news/anchordesk/,F1:ZDNET.TXT disconnect  もちろん、connectとdisconnectの間のものを一つのスクリプトに続けて書 くことも可能です。 ○画面・操作説明 [メイン画面] スクリプトを実行する画面です。 ・[情報]バージョン情報を表示します。 ・[終了]本アプリケーションを終了します。 ・[接続/実行]読み込まれたスクリプトファイルを実行します。 ○プロキシ対応について HTTPプロキシに対応してきます。HTTPプロキシを使う方法は以下のとおりで す。 (1)MOREインターネット設定を使っている場合 MOREインターネット設定 Ver1.40ではプロバイダ設定にHTTPプロキシを 設定できるようになっています。これを使えばCosmicTripper側でHTTP プロキシを使うことができます。 (2)PPP設定ファイル(MPGPPPP.DAT)を自分で用意している場合 PPP設定ファイル内に以下の1行を追加してください(プロキシサーバの 部分は書き換えてください)。この例ではプロキシサーバは www.proxy.co.jpです。 #Proxy_HTTP=www.proxy.co.jp またプロキシサーバに:をつけてポート番号を指定することもできます。 #Proxy_HTTP=www.proxy.co.jp:3000 ○制限事項 ・スクリプトの内容によっては実行に時間がかかります。ACアダプタを接続 して利用することをおすすめします。 ○履歴 Ver1.10(2002/05/26) ・disconnectを指定しない場合は、PPP接続を切断しないようにしました。ス クリプト内にdisconnectを書き忘れた場合でも接続を維持してしまいますの で、十分ご注意ください。 ・getindexのリンクが"./news/latest.html"のように、"./"で始まるものの場 合にエラーになっていたバグを修正しました。 ・HTTPステータスコード300番台(移転通知)に対応しました。 Ver1.00(2001/04/29) ・getindexコマンドでリンクをたどる際に、そのインデックスページに前回ア クセスした時間以降変更されたものだけを取得できるようにしました。 update_type,is_uptodownの変数の説明をご覧ください。 ・ページ取得用のバッファの大きさを指定する変数buf_sizeを追加しました。 ・ファイル名に重複しない新しいファイル名を自動生成するための指定子を指 定できるようにしました。 ・タイトルなどの開始パターンを指定しなったときの動作が怪しかったのを修 正しました。 ・スクリプトのデバッグなどのために、ログを出力する機能を追加しました。 機能+[接続/実行]ボタンを押すと本体の"WME3LOG.TXT"にログが出力され ます。 ・最後の行に改行がない場合に「コマンド名が違う」エラーになるバグを修正 しました。 Preview1版(2001/04/12) ・スクリプトのエラー処理など、かなり甘いと思います。無茶をしたい場合は バックアップなどとってから実行させるようにしてください。 ○今後の予定(いつできるかは未定) ・スクリプトをGUIで作成できるように ・他のアプリケーションを起動するなどのコマンドを追加 ○連絡先(感想・要望・質問等もどうぞ) ウクレレとりっぷ ukulele_trip@yahoo.co.jp