• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
真・ドルヲタを支える技術
 

真・ドルヲタを支える技術

on

  • 564 views

 

Statistics

Views

Total Views
564
Views on SlideShare
564
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    真・ドルヲタを支える技術 真・ドルヲタを支える技術 Presentation Transcript

    • 真・ドルヲタを支える技術 @nipotan
    • アツい夏、TIF の夏• TOKYO IDOL FESTIVAL• http://www.idolfes.com/ • TOKYO IDOL FESTIVAL(トウキョウ・アイドル・フェスティバ ル)は、2010年より開催されている日本のアイドルイベントであ る。略称はTIF(ティフ)。女性アイドルグループを中心に50組以 上の女性アイドルが参加する。参加アイドルの数では日本最大規 模のアイドルイベントである。 (出典: Wikipedia)
    • TIF 2012• 8/4, 8/5 の二日間• 10 ステージ、111 組 732 名のアイドル (土曜は 9 ステージ)• 2012 年の目玉は SKE48
    • お気に入り• お気に入りのアイドルを見たい!• タイムテーブルを見よう • http://www.idolfes.com/2012/timetable/
    • WTF• 画像かよ!!
    • 否• iPhone, Androidで見ると • http://www.idolfes.com/2012/sp/
    • タイムテーブル• もっと検索しやすく • やっぱ iCal
    • iCal 系 CPAN モジュール• http://search.cpan.org/search? query=ical&mode=all
    • iCal 形式• テキストベースだから何となくわかるね• 適当なイベントを作って、iCal で export してみよう
    • 形式• iCal の形式 BEGIN:VCALENDAR METHOD:PUBLISH VERSION:2.0 X-WR-TIMEZONE:Asia/Tokyo X-WR-CALNAME:カレンダー名 X-WR-CALDESC:説明 (イベントデータ) END:VCALENDAR
    • 形式• イベント BEGIN:VEVENT : : END:VEVENT
    • 形式• イベントの見てもよくわからんデータ UID:ランダム文字列 SEQUENCE:0 STATUS:CONFIRMED TRANSP:OPAQUE
    • 形式 • イベントの見りゃわかるデータDTSTART:開始日時 (%Y%m%dT%H%M%SZ)DTEND:終了日時 (%Y%m%dT%H%M%SZ)SUMMARY:イベントのタイトルLOCATION:場所DESCRIPTION:説明
    • Let’s Scrapeuse 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 },        ];    };};
    • URL• $date は 0804 か 0805• $stage は hot とか green とか doll とかmy $url = "http://www.idolfes.com/2012/sp/time${date}_${stage}.html";
    • ステージ名• ちゃんと正式名称がある • 場所に使える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,);
    • greeting• 自由すぎる • http://www.idolfes.com/2012/sp/ time0804_greeting.html
    • ステージ名• 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,);
    • 開始時刻と終了時刻• そもそも iCal の日時は UTC • DateTime でちゃんと取り扱おう
    • 開始時刻と終了時刻• 時刻の形式 • HH:MM∼HH:MMmy($from_time, $to_time) = split /x{ff5e}/, $event->{time};
    • 開始時刻と終了時刻• 罠その 1 • 8/4 の HOT STAGE • http://www.idolfes.com/2012/sp/ time0804_hot.html
    • 開始時刻と終了時刻• 罠その 2 • 8/4 の FANTASTIC THEATER ほか • http://www.idolfes.com/2012/sp/ time0804_fantastic.html% perl -MDateTime -eDateTime->new(hour => 24)The hour parameter ("24") to DateTime::new did not pass the aninteger between 0 and 23 callback
    • 開始時刻と終了時刻• 罠その 3 • 8/4 WELCOME MARQUEE 9:45∼10:00 • http://www.idolfes.com/2012/sp/ time0804_welcome.html • 通常 vs ここだけ
    • 開始時刻と終了時刻• 時刻の形式 • HH:MM∼HH:MMmy($from_time, $to_time) = split /[x{ff5e}x{301c}]/, $event->{time};
    • 出演ユニット• イベントタイトルと出演者が別の場合 • performer に
    • iCal のデータ形式• 75 文字で改行させないといけない • 続く次の行は空白かタブではじまる• は に• 改行は n に• , は , に
    • 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);}
    • 最終的に• https://gist.github.com/3282049
    • 取り込んだ例• DEMO
    • まとめ• User-Agent を iPhone は意外に盲点• Web::Scraper やっぱり便利• 何事も CPAN に頼らない• アイドル別のほうが高まれる• http://www.amazon.co.jp/dp/B008OI71MK
    • 糸冬了• QUESTIONS?