ホーム > タグ > Pipe

Pipe

機関リポジトリ向け著作権ポリシー更新情報Pipe

今回の記事は、日本で、機関リポジトリの著作権関係の処理に携わってる人にしか役に立たないかと思います。多くて100人くらい?ニッチですね。

なので、細かい説明は省きます。何言ってるかわからんて人には必要のない情報です。


SHERPA/RoMEOSCPJNII-ELSコンテンツの機関リポジトリへの提供許諾条件一覧、の3つのサイトの更新情報をまとめて見られるPipeを作りました。RSSでチェックするのがオススメです(リンク先の「Get as RSS」からRSSのURLが得られます)。

これらの情報は重要なのに、更新に気づきにくいと感じたので作ってみました。

過去に公開できないと判断したものが、条件が変わって、公開できるようになってたり、あんまり考えたくないけどその逆があったり、ということに対応しやすくなります。新しく公開できる雑誌が判明したら、学内の先生方がその雑誌に書いてないか調べたりもできますね。

ただし、あくまで勝手にやってるだけなので、更新情報載せてるページのHTMLが変わったりすると、正しい情報が得られません。公式に提供されるのは時間の問題だと思うので、それまでのつなぎとしてどうぞ。

CiNii簡易検索の結果をRSS等で返すpipe。

仕事で使えるかもと思って作成。Pipes楽しい。

指定したキーワードでCiNiiを簡易検索した結果をRSS等で返してくれるpipe。

pipeについては前記事参照。

Pipes: CiNii Simple Search RSS

ほんとは詳細検索のが便利なんだけど、簡易検索は入力フォームが1つだけだから試作に向いてるかと。

ただ、CiNiiは文字コードがEUCで、PipesはUTF-8なんで、日本語通りません。実用性がた落ち。Pipesのモジュールで文字コード変換ができるか、文字列と変換前後の文字コードを送ったら、文字コード変換して返してくれるWeb APIがあればいいんだけどなあ。(公開してる)サーバがあれば、作るのはすぐできそうなんだけど。


CiNiiは検索の際にJavaScriptで前処理してるので、Googleカスタム検索でクエリ文字列を知ることができない(カスタム検索しても検索できない)。今後のためにもブラウザからpostしたデータを知る方法を探してたら、さすがはFirefox。アドオンで発見。

サイドバーでベースURLとReferer、GETとPOSTのパラメータを表示してくれて、かつ、パラメータを増減・変更して再送信もできる(ここ重要!省略可能なパラメータを見極められるし、パラメータの違いでどう変わるか簡単に試せるのは便利)。

PipesやGreasemonkeyでWebサービスハックする時、Firebugと並ぶ必需品になりそう。


余談ですが・・・。

学術情報だと和洋とりそろえたGoogle Scholarが便利なんですが、Pipesからアクセスすると403エラーを吐いてくださる(アクセス拒否されてる)。しょうがないんで、HTAでシステマチックにデータ取得できないかといろいろ試してたら、突然アクセス拒否!たぶん短時間にリクエスト出しすぎたんだな。その後数時間いっさいアクセスできず冷や汗。Googleはそのへん厳しいのね。

追記 (2009/07/07)

2009/07/07現在、CiNiiのバージョンアップにより、検索したら普通にフィードが取得できるようになっています(もちろん詳細検索でもOK。すばらしい!)。もはやこのPipeは用済みですが、いちおう残しておきます。

PipesでJ-STAGEの野良RSSを作る。

職場の回覧で回ってきた「情報管理」という雑誌がおもしろそうだったので、購読することにした。幸いJ-STAGEで本文を公開しているので、自宅からでも最新号が閲覧できる。

ただ、J-STAGEでは新着記事の情報をRSSでは配信していないらしく(メール配信はしている)、Googleリーダー等でチェックすることができない。もう、フィードリーディングに慣れた身だとRSSないとめんどくさくてめんどくさくて・・・。

そこで、いろいろ調べてたら、米Yahoo!の提供しているPipesというサービスを見つけた。

Webのリソースを、メールアラートやRSS、Badgeなどに整形して出力できるサービスなのだが、UNIX使いにはおなじみのパイプよろしく、モジュールをつないでいくだけで処理ができる。しかもGUIで!

このへんを見ると感じがつかめるかも。

プログラマ諸氏なら触ってるだけでほぼ理解できるだろうし、プログラムやったことない人でもとっつきやすいんじゃなかろうか。デバッグ環境もよくできていて、触ってるだけでも楽しい。

しかも、公開されてるpipeはみんなソースも見れるし、複製もでき、別のpipeをモジュールとして使うこともできる。まさにWeb 2.0!


で。当初の目的だったJ-STAGEの特定の雑誌の新着記事情報を出力するpipeを作ってみた。

J-STAGEの雑誌のトップページのURLを入力し「Run Pipe」をクリックすると、その雑誌の最新号の記事一覧が出力される。

RSSで出力したい場合は、More options – Get as RSSをクリックする。


作成中気づいたことメモ

  • 型が割と厳格で、型が違うとモジュールを接続できないので注意。
  • Fetch pageなどでデータを得るとデータ型がitemsで出力される。これを(たとえばitem.contentを)text型などのデータとして利用したい場合は、Loopモジュールを使う。
  • 型の変換は、上記のLoopモジュールやURL Builderなどを駆使する。

以下、逐次解説。

上記pipeのソースを見ながら(Edit Sourceで見られる)どうぞ。

処理の流れ

J-STAGEの雑誌のトップページには最新号の記事一覧へのリンクがある(が、そのアドレスは最新号が出るたびに変わるっぽい)。

このリンクから最新号の記事一覧を取得して、個々の記事に分けて出力する。

1.URL Input

ユーザに雑誌のURLを入力させる部分。

Promptは入力フィールドの前に表示される文字列。

Defaultはデフォルトで表示される文字列。

Debugはデバッグ時に使用される文字列。

positionはたぶん複数置くときの順番。

Nameはどこで使うのかよくわからん。

出力はURL型。

2.Fetch page

Webページのソースを取得する。

URLは取得するページのURL。1を接続する。

Cut content from/toはページ全体から切り取る開始文字列と終了文字列。ここでは、最新記事のページのURLを取り出したいので、その前後の文字列を指定した。

Split using delimiterは区切り文字列。ここでは、指定しない。

出力はitem型の配列であるitems型。Split using delimiterを指定していると、それで区切って配列にするわけだが、ここでは指定してないので要素1つの配列になる。

3.Regex

正規表現でitemの子要素を置換する。

2で得た部分にはゴミがついてるのでURLの部分だけを取り出す。

出力はさっきと同じくitem型の配列であるitems型。

以下、すべてitem型の配列であるitems型で出力される。

4.Loop

itemsの各要素に対して処理を行う。

ここではitemsの要素数は1つだけなのだが、その場合でもこれを使う。

ここにFetch pageを入れ、item.contentに入っているURLをもとに最新号のページを取得する(ここでURL型への型変換は勝手にやってくれるみたい)。記事一覧の部分だけ取り出し、各記事の区切りをSplit using delimiterに指定した。

5.Rename

この時点ではitem.contentのなかに一記事分のHTMLがまるまる入っているわけだが、最終的には、item.title、item.link、item.descriptionにそれぞれ、タイトル、記事の(抄録の)URL、著者名を格納したい。そのため、item.contentを2つコピーし、それぞれをtitle、link、descriptionと名前をつける。

6.Regex

正規表現による置換で、それぞれの要素から不要な部分を削除する。

7.Pipe Output

最後にここに出力する。

あとはSaveして、Run Pipeでテスト。

問題なければPublishで公開して完了。

ホーム > タグ > Pipe

検索
フィード
メタ情報

ページの上部に戻る