真・ドルヲタを支える技術
- 2. アツい夏、TIF の夏
• TOKYO IDOL FESTIVAL
• http://www.idolfes.com/
• TOKYO IDOL FESTIVAL(トウキョウ・アイドル・フェスティバ
ル)は、2010年より開催されている日本のアイドルイベントであ
る。略称はTIF(ティフ)。女性アイドルグループを中心に50組以
上の女性アイドルが参加する。参加アイドルの数では日本最大規
模のアイドルイベントである。 (出典: Wikipedia)
- 3. TIF 2012
• 8/4, 8/5 の二日間
• 10 ステージ、111 組 732 名のアイドル
(土曜は 9 ステージ)
• 2012 年の目玉は SKE48
- 8. iCal 系 CPAN モジュール
• http://search.cpan.org/search?
query=ical&mode=all
- 10. 形式
• iCal の形式
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
X-WR-TIMEZONE:Asia/Tokyo
X-WR-CALNAME:カレンダー名
X-WR-CALDESC:説明
(イベントデータ)
END:VCALENDAR
- 14. Let’s Scrape
use strict;
use warnings;
use Web::Scraper;
my $tif = scraper {
process 'section', 'event[]' => scraper {
process 'time', 'time' => 'TEXT';
process 'div > h4', 'title' => 'TEXT';
process 'div > p', 'performer' => [
'HTML', sub { s{<brs*/>s*}{n}g },
];
};
};
- 15. URL
• $date は 0804 か 0805
• $stage は hot とか green とか doll とか
my $url = "http://www.idolfes.com/2012/sp/time${date}_${stage}.html";
- 16. ステージ名
• ちゃんと正式名称がある
• 場所に使える
my %stages = (
hot => 'HOT STAGE',
green => 'GREEN OASYS',
doll => 'DOLL FACTORY',
fantastic => 'FANTASTIC THEATER',
wonder => 'WONDER FUTURE PLANET',
smile => 'SMILE GARDEN',
sky => 'SKY STAGE',
secret => 'SECRET COURT',
fresh => 'FRESH FIELD',
welcome => 'WELCOME MARQUEE',
greeting => 'GREETING SQUARE',
);
- 18. ステージ名
• greeting はパス…
my %stages = (
hot => 'HOT STAGE',
green => 'GREEN OASYS',
doll => 'DOLL FACTORY',
fantastic => 'FANTASTIC THEATER',
wonder => 'WONDER FUTURE PLANET',
smile => 'SMILE GARDEN',
sky => 'SKY STAGE',
secret => 'SECRET COURT',
fresh => 'FRESH FIELD',
welcome => 'WELCOME MARQUEE',
# greeting => 'GREETING SQUARE',
);
- 20. 開始時刻と終了時刻
• 時刻の形式
• HH:MM∼HH:MM
my($from_time, $to_time) = split /x{ff5e}/, $event->{time};
- 21. 開始時刻と終了時刻
• 罠その 1
• 8/4 の HOT STAGE
• http://www.idolfes.com/2012/sp/
time0804_hot.html
- 22. 開始時刻と終了時刻
• 罠その 2
• 8/4 の FANTASTIC THEATER ほか
• http://www.idolfes.com/2012/sp/
time0804_fantastic.html
% perl -MDateTime -e'DateTime->new(hour => 24)'
The 'hour' parameter ("24") to DateTime::new did not pass the 'an
integer between 0 and 23' callback
- 23. 開始時刻と終了時刻
• 罠その 3
• 8/4 WELCOME MARQUEE 9:45∼10:00
• http://www.idolfes.com/2012/sp/
time0804_welcome.html
• 通常 vs ここだけ
- 24. 開始時刻と終了時刻
• 時刻の形式
• HH:MM∼HH:MM
my($from_time, $to_time)
= split /[x{ff5e}x{301c}]/, $event->{time};
- 26. iCal のデータ形式
• 75 文字で改行させないといけない
• 続く次の行は空白かタブではじまる
• は に
• 改行は n に
• , は , に
- 27. iCal で安全な形式
sub ical_safe {
my $str = shift;
$str =~ s///g;
$str =~ s/n/n/g;
$str =~ s/,/,/g;
my @rounded = ();
while ($str =~ s/^(.{1,75})//) {
push @rounded, $1;
}
return join("n ", @rounded);
}
- 30. まとめ
• User-Agent を iPhone は意外に盲点
• Web::Scraper やっぱり便利
• 何事も CPAN に頼らない
• アイドル別のほうが高まれる
• http://www.amazon.co.jp/dp/B008OI71MK