M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2005年2月28日 00:00

RSSをInDesignCSで自動組版するJavaScriptを吐き出させるCGIを設置してみた

このエントリーをはてなブックマークに追加 mixiチェック

REDHAT 9 のサーバで、RSS を InDesignCS で自動組版する JavaScript を吐き出させる CGI を設置してみました。apache とか perl-XML-* を yum なんかで入れておくと動きます。元の RSS はきのうと同じで TSUTAYA online からとっていますが、週1更新で代わり映えしなくて楽しくないというのならば、変化が激しくて、印刷屋さんだったら内容に興味津々な RSS を教えてくれれば取り替えます。

UTF-8でどうぞ。

#!/usr/bin/perl
 
 
# tu.cgi - RSS から InDesignCS 組版の JavaScriptを吐き出します。
# 参考にした↓
# http://allabout.co.jp/career/cgiperl/closeup/CU20050131A/
#
# 2005.02.28 v0.1    初版(絶版)
 
use strict;
use LWP::Simple;
use XML::RSS;
 
#my $url = $ENV{QUERY_STRING};
my $url = 'http://www.tsutaya.co.jp/rss/ranking/uresuji_music.rdf';
my $data_from_web = get($url);
 
# XML::RSSを使う準備。
my $rss = new XML::RSS;
 
 
# WEBから取得したデータを解析。
$rss->parse($data_from_web);
#$rss->parsefile('./uresuji_music.rdf');
 
 
# アイテムリストのリファレンス
my $item_list = $rss->{'items'};
my $list;
 
# リストの各データを順に処理。
# 各データは、アイテム情報を保存したハッシュへのリファレンス
 
print "Content-Type: text/javascript\n";
print 'Content-disposition: attachment;filename="tsutaya.js"';
print "\n\n";
 
binmode STDOUT, ":encoding(utf16)";
 
print <<'eoff';
pageObj = app.documents.add()
 
    x = 20;
    y = 20;
    i = 0;
eoff
 
foreach my $item ( @{$item_list} ) {
  # リファレンスから値を出力
print <<"endend";
    txtObj = pageObj.textFrames.add();
    txtObj.visibleBounds = [y+i*10,x, y+i*10+10,x+100];
    txtObj.contentType = ContentType.textType;
    txtObj.contents = "$item->{'title'}";
    i++;
endend
}
 

~~~

InDesign CS をお持ちの方は、下のリンクをクリックすると、tsutaya.js がダウンロードできると思いますので、それを InDesign CS の script フォルダ(Windows だったら C:\Program Files\Adobe\Adobe InDesign CS\Presets\Scripts)に入れて、InDesign CS のスクリプトパレットから、実行してみてください。


1週間ごとに更新されるとおもふ。

tu-cgi
▲上のリンクをクリックすると、こんなダイアログがでます。(IE、WinXP SP2の場合)

indd3-scriptfolder
▲保存する場所に、InDesign CS の Scripts フォルダを指定。

indd3-scriptpalette
▲InDesign CS の スクリプトパレットに表示されるので、ダブルクリック。

rss-indd
▲きのうと同じなんだけれども、組み上がりました。来週あたりに同じことをすると内容が変わっているはず。

~~~

これを作ってみたことで、perl 5.8 だと出力のエンコーディングを簡単に変えられるということと、http のヘッダ部まで utf16 にエンコードしちゃうと意味ないということがわかりました。

あと、Mac で CPAN 入るかどうかわからないけれども、Mac 持っている人は報告してくれるとありがたいかもしれません。


(2005.3.1 8.04追記)

昨日0.00に公開してから、tu.cgiにアクセスしてくれた人の数は 7、そのうち 1 は Google Bot でした。昨日のアクセス数は、1100 view/day(昨日に限ってアクセスカウンタ壊れているので正確な数字ではない) ですから、このスクリプトに興味がある人は、ものすごく少ないということが分かりました。

投稿 大野 義貴 [InDesign] | |

トラックバック(1)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/837

窓の杜 - 【NEWS】URLなどの入力だけで記事タイトルをRSS配信するデータを作成「RSS Writer」 RSSはブログにだけあるのではありません。単な... 続きを読む

コメント(1)

えーその数少ないうちの一人となります。笑
管理者様の追記が3/1になりますから
大分、間があいておりますが
つい昨日拝見させていただきました。

私はもともとDTPをやっていて、Webアプリケーション開発に流れていったものです。
それゆえか「自動組版」というものに対しての憧れが強く
なにか自分でも出来ないかなあ常々考えておりました。

インデザでJSが使えるというのも驚きでしたが、
Perl + XMLの良いサンプルを見せていただいた思いです。

コメントする