Plagger でAWS の課金情報を取得
Web::ScraperでCustomFeed-Script/amazon_s3.plに期待→Plaggerで料金レポートを取得する
Notify-IRC 向け。
#!/usr/bin/perl use strict; use warnings; use DateTime; use DateTime::Format::W3CDTF; use WWW::Mechanize; use Web::Scraper; use YAML; my $url = "https://aws-portal.amazon.com/gp/aws/developer/account/index.html"; my $mail = ''; my $pass = ''; my $mech = WWW::Mechanize->new(); my $response = $mech->get($url); $mech->form_number(1); $mech->set_fields('email' => $mail, 'password' => $pass); $response = $mech->submit; my $aws = scraper { process '//td[@class="bordgreybot txtxsm"]', 'descriptions[]' => 'TEXT'; process '//td[@class="bordgreybot txtxsm alignrt"]', 'prices[]' => 'TEXT'; result qw/descriptions prices/ }->scrape($response->decoded_content); my $output = { title => 'Summary of This Month\'s Activity', entry => [] }; my $date = DateTime->now(time_zone => 'Asia/Tokyo'); for (my $i = 0; $i <= $#{$aws->{'prices'}}; $i++) { push @{$output->{entry}}, { title => $aws->{'descriptions'}[$i*2]." ".$aws->{'descriptions'}[$i*2+1]." => ".$aws->{'prices'}[$i], date => DateTime::Format::W3CDTF->format_datetime($date->add(seconds => $i)), # 時間ずらさないとダメぽい }; } binmode STDOUT, ":utf8"; print YAML::Dump $output;
使い方。
- module: Subscription::Config config: feed: - script:///path/to/assets/plugins/CustomFeed-Script/aws.pl - module: CustomFeed::Script
CustomFeed::Script の場合は無理にPerl で書く必要が無いのね……。
誰かかっこよく添削してください。