2013/11/20
¢£ [cygwin] [perl] cygwin ´Ä¶¤Ç¤Î WWW::Mechanize::Firefox
javascript ¤ò´Þ¤à¥Ú¡¼¥¸¤Î¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤ò¤·¤è¤¦¤È»×¤¤ WWW::Mechanize::Firefox ¤ò»È¤ª¤¦¤È¤¹¤ë¤È²¼µ¤Î¥¨¥é¡¼¤¬½Ð¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡¥
command timed-out at /usr/lib/perl5/site_perl/5.14/MozRepl/Client.pm line 186
¾åµ¤Î /usr/lib/perl5/site_perl/5.14/MozRepl/Client.pm 186 ¹Ô¶áÊÕ¤ò¸«¤ë¤È¡¤
### adhoc
$command = join(" ", split(/\n/, $command)) if ($^O eq "cygwin");
¤È¤¤¤¦¥³¡¼¥É¤¬¤¢¤ê¡¤¤Ê¤¼¤« cygwin ¤Î¤È¤¤À¤±ÆÃḚ̂·¤¤¤Ê½èÍý¤¬¤¢¤ê¤Þ¤·¤¿¡¥¤³¤ì¤ò²¼µ¤Î¤è¤¦¤Ë¥³¥á¥ó¥È¥¢¥¦¥È¤¹¤ë¤È̵»öư¤«¤¹¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡¥
# ½¤Àµ¸å
### adhoc
# $command = join(" ", split(/\n/, $command)) if ($^O eq "cygwin");
ref
2011/11/30
¢£ [perl] slideshare api ¤ò perl ¤«¤é»È¤¦
¿¦¾ì¤Ç slideshare ¤Ë¤¢¤ë¥×¥ì¥¼¥ó¥Õ¥¡¥¤¥ë¤ò¸¡º÷¡¤¼èÆÀ¤·¤¿¤¤¤È¤±¤É¤É¤¦¤¹¤ì¤ÐÎɤ¤¤Î¤«¤È¤¤¤¦ÏäˤʤäƤ¤¤¿¤Î¤Ç¡¤Ä´¤Ù¤Æ¤ß¤Þ¤·¤¿¡¥
¤Þ¤º SlideShare ¤ÎSlideShare API > Apply for API Key¤«¤é¿½ÀÁ¤ò¤·¤Æ¡¤api_key ¤È secret ¤ò¼èÆÀ¤·¤Þ¤¹¡¥
¤¢¤È¤Ï¤³¤³¤Ë½ñ¤¤¤Æ¤¢¤ë WebAPI ¤ò»È¤¦¤Î¤Ç¤¹¤¬¡¤perl ¤À¤ÈWWW::SlideShare¤¬ÊØÍø¤½¤¦¤À¤Ã¤¿¤Î¤Ç¤³¤ì¤ò»È¤Ã¤Æ¤ß¤Þ¤·¤¿¡¥
²¼µ¤Î¥³¡¼¥É¤Ï slideshare ¤Ë¤¢¤ë¥Ç¡¼¥¿¤ò¥×¥í¥°¥é¥ß¥ó¥°¤È¤¤¤¦¥¡¼¥ï¡¼¥É¤Ç¸¡º÷¤·¤¿¤·¤¿·ë²Ì¤òɽ¼¨¤¹¤ë¤â¤Î¤Ç¤¹¡¥
#!/usr/bin/env perl
# ss-search.pl
use strict;
use warnings;
use Data::Dumper;
use WWW::SlideShare;
use Unicode::Japanese;
use Unicode::RecursiveDowngrade;
sub main {
my $api_key = 'orzZzz';
my $secret = 'mjgZzz';
my $ss = WWW::SlideShare->new(
'api_key' => $api_key,
'secret' => $secret);
my $kw = "¥×¥í¥°¥é¥ß¥ó¥°";
$kw = Unicode::Japanese->new($kw, "euc")->utf8;
my $h = $ss->search_slideshows({'q' => $kw, page => '1'});
my $rd = Unicode::RecursiveDowngrade->new;
$rd->filter(sub {
Unicode::Japanese->new(shift, 'utf8')->euc
});
$h = $rd->downgrade($h);
print Dumper $h;
}
main;
²¼µ¤Ï¼Â¹Ô·ë²Ì¡Ä
% perl ss-search.pl
$VAR1 = [
bless( {
'_data' => {
'ID' => '4022379
',
'Slideshow' => '
',
'Status' => '2
',
'InContest' => '0
',
'ThumbnailSmallURL' => 'http://cdn.slidesharecdn.com/r-100508200327-phpapp02-thumbnail-2
',
'Format' => 'pdf
',
'Title' => 'ÉáÄÌ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ìR
',
'SlideshowType' => '0
',
'Username' => 'shuyo
',
'ThumbnailURL' => 'http://cdn.slidesharecdn.com/r-100508200327-phpapp02-thumbnail
',
'URL' => 'http://www.slideshare.net/shuyo/r-4022379
',
'Embed' => '<div style="width:425px" id="__ss_4022379"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/shuyo/r-4022379" title="ÉáÄÌ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ìR">ÉáÄÌ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ìR</a></strong><object id="__sse4022379" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=r-100508200327-phpapp02&stripped_title=r-4022379&userName=shuyo" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse4022379" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=r-100508200327-phpapp02&stripped_title=r-4022379&userName=shuyo" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/shuyo">Shuyo Nakatani</a>.</div></div>
',
'Language' => 'ja
',
'Updated' => 'Mon May 10 10:11:23 -0500 2010
',
'Download' => '1
',
'DownloadUrl' => 'http://s3.amazonaws.com/ppt-download/r-100508200327-phpapp02.pdf?response-content-disposition=attachment&Signature=m8OizC9neJu82l41jZSX9C53F%2F4%3D&Expires=1322808380&AWSAccessKeyId=AKIAJLJT267DEGKZDHEQ
',
'Created' => 'Sat May 08 20:03:12 -0500 2010
',
'Description' => 'Tsukuba.R #7
'
}
}, 'WWW::SlideShare::Object' ),
...
¼èÆÀ¤·¤¿¥×¥ì¥¼¥ó¥Õ¥¡¥¤¥ë¤ò¸«¤Æ¤¤¤ë¤È¡¤¥¥ì¥¤¤Ê¥ì¥¤¥¢¥¦¥È¤¬Â¿¤¯¤Æ¼«Ê¬¤Îºî¤ë¥É¥¥å¥á¥ó¥È¤Ë¤â»²¹Í¤Ë¤Ê¤ê¤½¤¦¤Ê¤â¤Î¤¬Â¿¤½¤¦¤Ç¤¹¤Í¡¥
´ØÏ¢¥ê¥ó¥¯
2011/06/02
¢£ [perl] perl ¤Ç youtube ¤Î¸¡º÷
youtube ¤Îư²è¤ò¸¡º÷¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤¿¤éÎɤ¤¤Î¤«¤Èʹ¤«¤ì¤¿¤Î¤Ç¡¤¥µ¥ó¥×¥ë¥³¡¼¥É¤òºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡¥API ¤Ç¸¡º÷¤ò¤¹¤ë¤Ë¤Ï¡¤Ç§¾Ú¤Ê¤É¤¬ÉÔÍפʤ褦¤Ç¤¹¡¥
¥ê¥Õ¥¡¥ì¥ó¥¹ ¥¬¥¤¥É: Data API ¥×¥í¥È¥³¥ë¤ò¸«¤ë¤È¡¤
ư²è¤ò¸¡º÷¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î URL ¤Ë¥ê¥¯¥¨¥¹¥È¤Ë¹ç¤ï¤»¤Æ¥¯¥¨¥ê ¥Ñ¥é¥á¡¼¥¿¤òÉղä·¡¢HTTP GET ¥ê¥¯¥¨¥¹¥È¤òÁ÷¿®¤·¤Þ¤¹¡£
http://gdata.youtube.com/feeds/api/videos
¤¿¤È¤¨¤Ð¼¡¤Î URL ¤Ø¤Î¥ê¥¯¥¨¥¹¥È¤Ç¤Ï¡¢¸¡º÷¥¡¼¥ï¡¼¥É¡Öfootball¡×¤Ë°ìÃפ·¡¢¥¡¼¥ï¡¼¥É¡Ösoccer¡×¤Ë¤Ï°ìÃפ·¤Ê¤¤ºÇ¶á¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤¿Æ°²è¤Î 10 Ëܤº¤Ä¤Î¥»¥Ã¥È¤Î 2 ÈÖÌܤΥ»¥Ã¥È¤ò¸¡º÷¤·¤Þ¤¹¡£
http://gdata.youtube.com/feeds/api/videos?
vq=football+-soccer
&orderby=published
&start-index=11
&max-results=10
¤È¤¤¤¦¤³¤È¤Ç¥µ¥ó¥×¥ë¥³¡¼¥É¤Ï²¼µ¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡¥atom ¤Ç¼èÆÀ¤·¤è¤¦¤È¤·¤¿¤Î¤Ç¤¹¤¬¡¤°·¤¤Êý¤¬Îɤ¯¤ï¤«¤é¤Ê¤«¤Ã¤¿¤Î¤Ç¡¤rss ¤Ë¤·¤Þ¤·¤¿¡¥
#!/usr/bin/env perl
# search-youtube.pl
use strict;
use Data::Dumper;
use URI;
use XML::Simple;
use LWP::Simple;
use Unicode::RecursiveDowngrade;
use Unicode::Japanese;
use Jcode;
sub main {
my $kw = "¹áÀîÂç³Ø";
my $h = search_youtube($kw);
print Dumper $h;
}
sub search_youtube {
my $kw = shift;
my $h;
my $proxy = 'http://gdata.youtube.com/feeds/api/videos';
my $uri = URI->new( $proxy );
my $u_kw = Jcode::convert($kw , "utf8", "euc-jp" );
$uri->query_form(
vq => $u_kw,
orderby => "relevance",
alt => 'rss'
);
my $xml = get($uri->as_string);
my $xs = XML::Simple->new();
my $ref = $xs->XMLin( $xml, forcearray => 1 );
my $count = 0;
foreach my $i (@{$ref->{channel}[0]{item}}) {
$h->{$count}{title} = shift @{$i->{title}};
$h->{$count}{link} = shift @{$i->{link}};
$h->{$count}{description} = $i->{'description'}[0];
$h->{$count}{keywords} = $i->{'media:group'}[0]{'media:keywords'};
$h->{$count}{author} = $i->{author}[0];
$h->{$count}{viewcount} = $i->{'yt:statistics'}[0]{viewCount};
$h->{$count}{pubdate} = $i->{pubDate}[0];
$h->{$count}{thumb} = $i->{'media:group'}[0]{'media:thumbnail'}[1];
$count++;
}
my $rd = Unicode::RecursiveDowngrade->new;
$rd->filter(sub {
Unicode::Japanese->new(shift, 'utf8')->euc
});
$h = $rd->downgrade($h);
return $h;
}
main;
¾åµ¤Î¥³¡¼¥É¤ò search-youtube.pl ¤È¤·¤ÆÊݸ¤·¤Æ¡¤¼Â¹Ô¤¹¤ë¤È²¼µ¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
% perl youtube-search.pl
$VAR1 = {
'11' => {
'link' => 'http://www.youtube.com/watch?v=F_abi4096VQ&feature=youtube_gdata',
'viewcount' => '1697',
'pubdate' => 'Tue, 08 Feb 2011 17:51:56 +0000',
'author' => 'BBRarkaic3',
'description' => '¹áÀîÂç³ØÂè42²óÄê´ü±éÁÕ²ñ¡¢·stage¥á¥¤¥ó¶Ê. ¤Ó¤Ó¤ëÂç¹¥¤¥¹¥¤¡¼¥È¤Ê¥á¥í¥Ç¥£¤È¡¢¤¤é¤Ó¤ä¤«¤Ê¥ê¥º¥à¡£ ÆüËܰì¤Î¥Þ¥ó¥É¥ê¥ó¥¯¥é¥Ö¤È¼«É餷³¤±¤Þ¤¹¡£ ÁÇÀ²¤é¤·¤¤¡ª¡ª¡ª¡ª »Ø´ø¡§»Í¹ñ¤ÎÅÁÀâ¡¢ºÙÀî°ì¼ù»á(¹áÀºß½»㊟2011ǯ¸½ºß) ¢¨¹áÀîÂç³Ø±éÁդΥǥâCD¤Ê¤É¤Î¹ØÆþÅù¤ÎÌ䤤¹ç¤ï¤»¤Ï¡¢¹áÀîÂç³Ø¥Þ¥ó¥É¥ê¥ó¥¯¥é¥Ö¤Þ¤Ç¤Ó¤Ó¤ëÂç¹¥¤',
'thumb' => {
'width' => '120',
'time' => '00:03:45.250',
'url' => 'http://i.ytimg.com/vi/F_abi4096VQ/1.jpg',
'height' => '90'
},
'keywords' => [
'¥Þ¥ó¥É¥ê¥ó, ¹¾Æ¬'
],
'title' => '¡Ö±À¤Î¹ÔÊý¡× ¹áÀîÂç³ØÂ裴£²²óÄê´ü±éÁÕ²ñ 3-3final¥¹¥Æ¡¼¥¸ 2010ǯ12/18'
},
...
- ¥¥à¥ß¥®¥å(Kim Migyu)¤µ¤ó¤Î¤ªÏÃ
´ØÏ¢¥ê¥ó¥¯
2011/03/14
¢£ [perl] Windows ´Ä¶¤Ë¤Æ¥³¥Þ¥ó¥É¤Ç²»Î̤ÎÄ´Àá¤ò¤¹¤ë
Windows ´Ä¶¤Ë¤Æ¡¤¥³¥Þ¥ó¥É¤Ç²»Î̤ÎÄ´Àá¤ò¤·¤¿¤¤¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¡¤Í¸ú¤Ê¥³¥Þ¥ó¥É¤¬¤ï¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡¥
¤É¤¦¤·¤è¤¦¤«¤Ê¤È»×¤Ã¤¿¤¤¤¿¤é¡¤cpan ¤Ç Win32::Sound - cpan ¤È¤¤¤¦¥â¥¸¥å¡¼¥ë¤¬¤¢¤Ã¤¿¤Î¤Ç¤³¤ì¤ò»È¤Ã¤Æ¤ß¤Þ¤·¤¿¡¥
¤µ¤Ã¤½¤¯¤³¤Î¥â¥¸¥å¡¼¥ë¤òÆþ¤ì¤Æ¡¤²¼µ¤Î¥³¡¼¥É¤ò¼Â¹Ô¤·¤Æ¤ß¤ë¤È¡¤¤É¤¦¤âº¸±¦¤Î¥Ð¥é¥ó¥¹¤¬¥º¥ì¤ÆÀßÄꤵ¤ì¤ëÌÏÍ͡ġ¥
use Win32::Sound;
Win32::Sound::Volume('100%');
Ä´¤Ù¤Æ¤ß¤ë¤È¡¤Win32::Sound ¤Î 0.49 °ÊÁ°¤Ë¤Ï¥Ð¥°¤¬¤¢¤ë¤ß¤¿¤¤¤Ç¡¤²¼µ¤Î¤è¤¦¤Ë¤·¤Ê¤¤¤Èº¸±¦¤Î²»Î̤ò¶ÑÅù¤ËÄ´Àá¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡¥²¼µ¤Î¥³¡¼¥É¤Ç
perl vol-set.pl 100
¤Ê¤É¤È¤¹¤ë¤È²»Î̤ò 100% ¤Ë¤·¤¿¤ê 0% ¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡¥
#!/usr/bin/env perl
# vol-set.pl: perl vol-set.pl 50
use strict;
use Win32::Sound;
my $vol = shift @ARGV || 0;
if ($vol > 100 || $vol < 0) {
$vol = 50;
}
$vol .= "%";
print "vol set $vol\n";
win32_volume($vol);
sub win32_volume {
my(@in) = @_;
if (not scalar @in) {
my $volume = Win32::Sound::_Volume();
if (wantarray) {
my $left = ($volume >> 16) & 0x0000FFFF;
my $right = ($volume ) & 0x0000FFFF;
return ($left, $right);
}
return $volume;
}
# Allows '0%'..'100%'
$in[0] =~ s{ ([\d\.]+)%$ }{ int($1*65535/100) }ex if defined $in[0];
$in[1] =~ s{ ([\d\.]+)%$ }{ int($1*65535/100) }ex if defined $in[1];
$in[1] = $in[0] unless defined $in[1];
my $volume = (($in[0] & 0x0000FFFF) << 16) | ($in[1] & 0x0000FFFF);
return Win32::Sound::_Volume($volume, 0);
}
´ØÏ¢¥ê¥ó¥¯
2010/11/01
¢£ [perl] WWW::Mechanize ¤Ç¥¢¥¯¥»¥¹¤·¤¿¤È¤¤Î¥¨¥é¡¼½èÍý
perl ¤«¤é WWW::Mechanize ¤ò»È¤Ã¤Æ¡¤Web ¥Ú¡¼¥¸¤ò²òÀϤ·¤Æ¤¤¤¿¤È¤¤Ë¡¤¥Ú¡¼¥¸¤¬¼èÆÀ¤Ç¤¤Ê¤«¤Ã¤¿¤È¤¤Î¤³¤È¤ò¹Í¤¨¤º¤Ë¥³¡¼¥É¤ò½ñ¤¤¤Æ¤¤¤Þ¤·¤¿¡¥
¤·¤«¤·¼ÂºÝ¤Ï¥µ¡¼¥Ð¤«¤é Temporarily Unavailable ¤¬Ê֤äƤ¯¤ë¤È¥×¥í¥°¥é¥à¤´¤È½ªÎ»¤·¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡¥
¤½¤³¤Ç²¼µ¤Î¤è¤¦¤Ë get ¤·¤¿¤¢¤È¤Ë·ë²Ì¤ò³Îǧ¤¹¤ë¤è¤¦¤Ë¤·¤¿¤Î¤Ç¤¹¤¬¡¤·ë¶É get ¤·¤¿»þÅÀ¤Ç¥¨¥é¡¼¤òÅǤ¤¤Æ½ª¤ï¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡¥
my $mech = WWW::Mechanize->new();
$mech->get("http://whitebase.org/");
if ($mech->success()) {
# code for page access
print "ok\n";
} else {
# code for not success
print "not ok\n";
}
$mech->success() ¼«ÂλȤ¨¤Ê¤¤¤¸¤ã¤Ê¤¤¤«¤È»×¤¤¤Ê¤¬¤é¡¤WWW::Mechanize ¤Î»ÅÍͤò³Îǧ¤·¤Æ¤ß¤ë¤È¡¤²¼µ¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤¢¤ê¡¤¥Ç¥Õ¥©¥ë¥È¤Ç¥¨¥é¡¼»þ¤Ë¤Ï CORE::die ¤¬¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤¬¤ï¤«¤ê¤Þ¤·¤¿¡¥
onerror => \&func Reference to a die-compatible function, such as Carp::croak, that is called when there's a fatal error. If this is set to undef, no errors will ever be shown. If this value is not passed, Mech uses Carp::croak if Carp is installed, or CORE::die if not.
¤È¤¤¤¦¤³¤È¤Ç¡¤mechanize ¤ò new ¤¹¤ë¤È¤¤Ë²¼µ¤Î¤è¤¦¤Ë½ñ¤¯¤È¡¤¥¨¥é¡¼»þ¤Ë¤Ï²¿¤âÀ®¸ù¤¹¤ë¤Þ¤Ç¥È¥é¥¤(´À)¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿... ¼ÂºÝ¤Ë¤Ï retry ¤Î½èÍý¤Ê¤É¤ò½ñ¤«¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Î¤Ç¤¹¤¬¡¤get »þ¤ËÌäÂ꤬¤¢¤Ã¤¿¤é½ªÎ»¤·¤Ê¤¤¤è¤¦¤Ë¤Ï¤Ç¤¤½¤¦¤Ç¤¹¡¥
my $mech = WWW::Mechanize->new(onerror => undef);
until (my $response = $mech->get("$url")) {}
´ØÏ¢¥ê¥ó¥¯
2010/01/15
¢£ [perl] YouTube ¤«¤é¹â²è¼Á¤Ê flv ¤ò¼èÆÀ¤¹¤ë perl ¥¹¥¯¥ê¥×¥È
¿¦¾ì¤ÇÃΤê¹ç¤¤¤«¤é flv ¤À¤±¤ò¼èÆÀ¤¹¤ë¥×¥í¥°¥é¥à¤òºî¤Ã¤ÆÍߤ·¤¤¤È¸À¤ï¤¿¤Î¤Çºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡¥get-youtubeflv.pl(¸å½Ò) ¤ò²¼µ¤Î¤è¤¦¤Ë¼Â¹Ô¤·¤Þ¤¹¡¥¼Â¹Ô¤Ë¤Ï WebService::YouTube::Util ¤¬É¬ÍפǤ¹¡¥Ubuntu ¤ä debian ¤Ê¤É¤Ç¤Ï libwebservice-youtube-perl ¤È¤¤¤¦¥Ñ¥Ã¥±¡¼¥¸¤¬¤¢¤ë¤è¤¦¤Ç¤¹¡¥
% perl get-youtubeflv.pl videoid > output.flv
videoid ¤Ï http://www.youtube.com/watch?v=ETnQ2TDqCZM ¤È¤¤¤Ã¤¿ url ¤Î v= ¤Ë³¤¯Ê¸»úÎó¤Ç¤¹¡¥
#!/usr/bin/env perl # get-youtubeflv.pl use strict; use WebService::YouTube::Util; use LWP::Simple; my $video_id = shift @ARGV or "ETnQ2TDqCZM"; my $uri = WebService::YouTube::Util->get_video_uri($video_id); $uri .= "&fmt=35"; my $content = get($uri); print $content;
¹â²è¼Á¤Ê flv ¤Î¼èÆÀ¤Ë¤Ï¤³¤³¤Ë½ñ¤«¤ì¤Æ¤¤¤ë fmt ¤Î¼ïÎà¤Î¤Þ¤È¤á¤«¤é¼êº¢¤Ë»È¤¨¤ë fmt=35 ¤òÁª¤Ó¤Þ¤·¤¿¡¥
- fmt=35
- ¼¡´ü "¹â²è¼Á"
- flv: H264+AAC
- fmt=22
- HD²è¼Á
- mp4: H264+AAC
¤È¤Æ¤â´Êñ¤Ê¥×¥í¥°¥é¥à¤Ê¤Î¤Ç¡¤¼èÆÀ¤ÎÅÓÃæ·Ð²á¤Ïɽ¼¨¤·¤Þ¤»¤ó¡¥¥µ¥¤¥º¤ÎÂç¤¤Ê flv ¤Î¼èÆÀ»þ¤Ë¤Ï¤Á¤ç¤Ã¤ÈÉÔÊØ¤«¤â¤·¤ì¤Þ¤»¤ó¤Í¡¥
´ØÏ¢¥ê¥ó¥¯
2009/01/31
¢£ [perl] flickr API ¤Î flickr.tags.getClusters
¿¦¾ì¤Ç flickr API ¤Î flickr.tags.getClusters ¤ò»È¤Ã¤Æ¥¿¥°¤«¤é´ØÏ¢¤¹¤ëÊ̤Υ¿¥°¤òÆÀ¤¿¤¤¤Î¤Ç¥µ¥ó¥×¥ë¤òºî¤Ã¤ÆÍߤ·¤¤¤È¸À¤ï¤ì¤Þ¤·¤¿¡¥
flickr API ¤Ï»È¤Ã¤¿¤³¤È¤¬¤Ê¤«¤Ã¤¿¤Î¤Ç¡¤API Key¤òºî¤Ã¤Æ¤µ¤Ã¤½¤¯»î¤·¤Æ¤ß¤Þ¤·¤¿¡¥
Flickr ¤Î¥µ¥ó¥×¥ë¤ÏÂô»³¤¢¤ë¤À¤í¤¦¤È»×¤Ã¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¤¼êº¢¤Ê¥µ¥ó¥×¥ë¤¬¤Ê¤¯¤ÆFlickr and Perl¤¬°ìÈ֤ޤȤâ¤Ê´¶¤¸¤Ç¤·¤¿¡¥
ÌäÂê¤Î flickr.tags.getClusters ¤Ï¥µ¥ó¥×¥ë¥³¡¼¥É¤ò Web ¸¡º÷¤Ç¸«¤Ä¤±¤é¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç¡¤¼«Ê¬¤ÇŬÅö¤Ëºî¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡¥flickr.tags.getClusters ¤ÇÆÀ¤é¤ì¤ë·ë²Ì¤ò xpath ¤Ç¥´¥ê¥´¥ê¤Ç¤¤ë¤«¤È»×¤Ã¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¤¤ä¤êÊý¤¬¤ï¤«¤é¤Ê¤«¤Ã¤¿¤Î¤Ç¡¤·ë²Ì¤Î $response ¤ò¤½¤Î¤Þ¤Þ¥´¥ê¥´¥ê¤·¤Þ¤·¤¿¡¥¤³¤Î¤ä¤êÊý¤ÏÀäÂдְã¤Ã¤Æ¤¤¤½¤¦...
²¼µ¤Î¥³¡¼¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¤Ìµ»ö¥¿¥°¤Î¥¯¥é¥¹¥¿¤¬ÆÀ¤é¤ì¤Þ¤·¤¿¡¥
% perl get-tagclust.pl schubert
tag: schubert
$VAR1 = {
'1' => {
'musica' => 1,
'music' => 1,
'piano' => 1
},
'0' => {
'wien' => 1,
'austria' => 1,
'vienna' => 1
},
'2' => {
'mozart' => 1,
'haydn' => 1,
'beethoven' => 1
}
};
·ë²Ì¤ò¸«¤ë¤È¤ª¤½¤é¤¯¶¦µ¯ÉÑÅ٤ι⤤¤â¤Î¤ò¥¯¥é¥¹¥¿¥ê¥ó¥°¤·¤Æ¤¤¤ë¤Î¤Ç¤·¤ç¤¦¤Í¡¥
#!/usr/bin/env perl
# get-tagclust.pl
# usage:
# get-tagclust.pl <tag>
use strict;
use Data::Dumper;
use Flickr::API;
local $Data::Dumper::Indent = 1;
my $tag = shift @ARGV || "cows";
my %tagclust = get_flickrtagclust($tag);
print "tag: $tag\n";
print Dumper \%tagclust;
sub get_flickrtagclust {
my $tag = shift;
my $api_key = 'xxx';
my $api_secret = xxx'';
my $api = new Flickr::API(
{
'key' => $api_key,
'secret' => $api_secret,
});
my $response = $api->execute_method('flickr.tags.getClusters',
{
'key' => $api_key,
'tag' => $tag,
});
my @tmp = @{$response->{tree}{children}[1]{children}};
my $count = 0;
my %clust;
foreach my $i (@tmp) {
my @list = ();
if ($i->{name} eq "cluster") {
foreach my $j (@{$i->{children}}) {
if ($j->{children}[0]->{content}) {
push @list, $j->{children}[0]->{content};
}
}
}
if (@list > 0) {
foreach (@list) {
$clust{$count}{$_}++;
}
$count++;
}
}
return %clust;
}
´ØÏ¢¥ê¥ó¥¯
- Flickr API
- Flickr and Perl by Jimmy O'Regan
- Perl»È¤Ã¤ÆFlickrAPI¤Ç¤Îǧ¾ÚË¡¤¬¤ä¤Ã¤È¤ï¤«¤Ã¤¿: »ä¤ÈƱ¤¸¤è¤¦¤Ë $response ¤ò¤½¤Î¤Þ¤Þ½èÍý¡Ä
2008/02/08
¢£ [perl] perl ¤Ç¥¨¥¯¥»¥ë¥Õ¥¡¥¤¥ë¤«¤é¥Æ¥¥¹¥È¤òÃê½Ð¤¹¤ë
¿¦¾ì¤Ç¤Ê¤¼¤«ËÄÂç¤Ê¥¨¥¯¥»¥ë¥Õ¥¡¥¤¥ë¤ò Web ¥Ú¡¼¥¸¤Ë¤·¤¿¤¤¤È¸À¤ï¤ì¤Þ¤·¤¿¡¥
perl ¤Ç¤Ï Spreadsheet::ParseExcel ¤È¤¤¤¦¥â¥¸¥å¡¼¥ë¤ò»È¤¦¤È¤Ç¤¤ë¤é¤·¤¤¡¥
¤µ¤Ã¤½¤¯¤³¤Î¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¡¤¥µ¥ó¥×¥ë¥³¡¼¥É¤ò¼Â¹Ô¤¹¤ë¤È
Weak references are not implemented in the version of perl at /usr/....
¤È¤¤¤¦¥¨¥é¡¼¤Ç¼Â¹Ô¤Ç¤¤Ê¤¤¡¥¥¨¥é¡¼¤ò¤½¤Î¤Þ¤Þ¸¡º÷¤·¤Æ¤ß¤ë¤È¡¤Scalar::Util ¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¤Ê¤ª¤ë¤È¤Î¤³¤È¡¥¤½¤³¤Ç¡¤
cpan> install Scalar::Util
¤¹¤ë¤Èº£Å٤ϡ¤
Cannot forceunlink /usr/lib/perl5/5.8/cygwin/auto/List/Util/Util.dll Permission denied
¼Â¹ÔÃæ¤Î¥Õ¥¡¥¤¥ë¤À¤«¤é¾å½ñ¤¤Ç¤¤Ê¤¤¤È¤¤¤¦¤³¤È¤é¤·¤¤(cygwin ¤À¤«¤é¤Ê¤Î¤Ç¤¹¤¬)¡¥
¾åµ¤Î Util.dll ¤ò¾Ã¤¹¤È cpan ¼«ÂΤ¬»È¤¨¤Ê¤¯¤Ê¤ë¤Î¤Ç¡¤¤É¤¦¤·¤è¤¦¤«¤È cpan ¾å¤ÇºÆ¹½ÃÛ¤¹¤ë¤³¤È¤ÇÂнè¤Ç¤¤¿¡¥
% cpan cpan> look Scalar::Util Scar::Util ¤Î¥Ó¥ë¥É¤ËÆþ¤ë % perl Makefile.PL % make uninstall % perl Makefile.PL -xs % make % make install % exit
cygwin ¤ÏÊѤʤȤ³¤í¤Ç¤Ä¤Þ¤Å¤¯¤Î¤Ç¡¤ÌÌÅݤǤ¹¤Í¡¥¥µ¥¯¥µ¥¯Æ°¤¯ coLinux ¤ÎÊý¤¬Îɤ¤¤Î¤Ç¤·¤ç¤¦¤«¡¥
ºÇ½ªÅª¤Ë¥¨¥¯¥»¥ë¥Õ¥¡¥¤¥ë¤«¤é¥Æ¥¥¹¥È¤òÃê½Ð¤¹¤ë¥³¡¼¥É¤Ï²¼µ¤Î¤â¤Î¤ò»²¹Í¤Ë¤µ¤»¤Æ¤â¤é¤¤¤Þ¤·¤¿¡¥ÆüËܸì¤â¥ª¥±¤é¤·¤¤...
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtJapan;
my $oExcel = new Spreadsheet::ParseExcel;
#sjis¡¢jis¤Ê¤É¤Î¥³¡¼¥É
my $oFmtJ = Spreadsheet::ParseExcel::FmtJapan->new(Code => 'euc');
my $oBook = $oExcel->Parse('Excel/Test97.xls', $oFmtJ);
#¾ðÊó¤Î¼è¤ê½Ð¤·Îã
my($iR, $iC, $oWkS, $oWkC);
print "FILE :", $oBook->{File} , "\n";
print "COUNT :", $oBook->{SheetCount} , "\n";
print "AUTHOR:", $oBook->{Author} , "\n";
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++) {
$oWkS = $oBook->{Worksheet}[$iSheet];
print "--------- SHEET:", $oWkS->{Name}, "\n";
for(my $iR = $oWkS->{MinRow} ;
defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {
for(my $iC = $oWkS->{MinCol} ;
defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {
$oWkC = $oWkS->{Cells}[$iR][$iC];
print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
}
}
}
2007/01/03
¢£ [perl] ¸¡º÷¥¨¥ó¥¸¥ó Web ¥µ¡¼¥Ó¥¹
ºÇ¶á¸¡º÷¥¨¥ó¥¸¥ó¤Ø¤Î¸¡º÷¼°(¸¡º÷¥¡¼¥ï¡¼¥É)¤ò³ÈÄ¥¤¹¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤¤¤Þ¤¹¡¥
»÷¤¿¤è¤¦¤ÊÏÃ¤Ç Google ¤ä Yahoo! ¤Î´ØÏ¢¸¡º÷¤¬¤¢¤ê¤Þ¤¹¡¥¸¡º÷¥¡¼¥ï¡¼¥É¤Ë¡Ö11n¡×¤ÈÆþ¤ì¤ë¤È²¼µ¤Î¤è¤¦¤Ë¡Ö̵Àþ 11n¡×¤È¤¤¤¦¸¡º÷¥¡¼¥ï¡¼¥É¤Ë´ØÏ¢¤·¤¿¥¡¼¥ï¡¼¥É¤òÉÕ¤±¤Æ¤¯¤ì¤ë¤â¤Î¤Ç¤¹¡¥
Google ¤ä Yahoo! ¤Î´ØÏ¢¸¡º÷¤Ë¤Ä¤¤¤Æ¤Ï²¼µ¤Ë¾¯¤·Ê¬ÀϤ¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¤¥æ¡¼¥¶¤Î¸¡º÷¥¡¼¥ï¡¼¥É¥Ù¡¼¥¹¤« Web ¥³¥ó¥Æ¥ó¥Ä¥Ù¡¼¥¹¤«¤È¤¤¤¦°ã¤¤¤¬¤¢¤ë¤è¤¦¤Êµ¤¤¬¤·¤Þ¤¹¡¥
»ä¤â¤¢¤ë¥¡¼¥ï¡¼¥É¤ËÂФ·¤Æ´ØÏ¢¸ì¤òÍѰդ·¤Æ¡¤¤½¤Î͸úÀ¤òÄ´¤Ù¤Æ¤ß¤è¤¦¤È»×¤Ã¤Æ¸¡º÷¥¨¥ó¥¸¥ó¤Ë¿§¡¹¤ÊÌ䤤¹ç¤ï¤»¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤¿¤È¤³¤í¡¤¤¢¤ë»þµÞ¤Ë¸¡º÷¥¨¥ó¥¸¥ó¤«¤éÀܳ¤òµñÈݤµ¤ì¤Þ¤·¤¿¡¥
¤É¤¦¤ä¤é¥×¥í¥°¥é¥à¤Ç¤ä¤¿¤é¸¡º÷¥¨¥ó¥¸¥ó¤òÍøÍѤ¹¤ë¤Î¤Ï¥¤¥±¤Ê¤«¤Ã¤¿¤è¤¦¤Ç¤¹...¤¹¤¤¤Þ¤»¤ó¡¥
¤½¤³¤Ç³«È¯¼ÔÍѤθ¡º÷¥¨¥ó¥¸¥ó¤Î Web ¥µ¡¼¥Ó¥¹¤È¤¤¤¦¤Î¤ò»È¤Ã¤Æ¤ß¤Þ¤·¤¿¡¥¤½¤ì¤¾¤ì²¼µ¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
- ¥¢¥¯¥»¥¹ÊýË¡: REST
- ¸¡º÷À©¸Â²ó¿ô: 50000 /24h
- 1 ¸¡º÷¤Ë¤ª¤±¤ëºÇÂ縡º÷·ë²Ì¿ô: 50
- 1 ¥¯¥¨¥ê¤Ë¤ª¤±¤ëºÇÂ縡º÷¸ì¿ô: ?
- ¥¢¥¯¥»¥¹ÊýË¡: SOAP
- ¸¡º÷À©¸Â²ó¿ô: 1000 /1day
- 1 ¸¡º÷¤Ë¤ª¤±¤ëºÇÂ縡º÷·ë²Ì¿ô: 10
- 1 ¥¯¥¨¥ê¤Ë¤ª¤±¤ëºÇÂ縡º÷¸ì¿ô: 32
Google ¤ÎÊý¤ÏÍøÍѲÄǽ¤Ê¸¡º÷²ó¿ô¤¬¾¯¤Ê¤¤¾å¤Ë¡¤¸½ºß¤Ï¿·µ¬ÍøÍѼԤòÂǤÁÀڤꤷ¤Æ¤¤¤ë¤Î¤Ç Yahoo! ¤ÎÊý¤ò»È¤Ã¤Æ¤ß¤Þ¤·¤¿¡¥
¤Þ¤º¤³¤Î¥Ú¡¼¥¸¤«¤é¥¢¥×¥ê¥±¡¼¥·¥ç¥ó ID ¤òÅÐÏ¿¤·¤Æ¡¤²¼µ¤Î¥³¡¼¥É¤ò¼Â¹Ô¤·¤¿¤é Web ¸¡º÷·ë²Ì¤¬ÆÀ¤é¤ì¤Þ¤·¤¿¡¥
#!/usr/bin/env perl
# yapi_test.pl:
# usage:
# yapi_test.pl <kw>
use strict;
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
my $kw = shift;
$kw =~ s/([^0-9A-Za-z_])/'%'.unpack('H2',$1)/ge;
$kw =~ s/ /+/g;
my $appid = "your appid";
my $top = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?";
my $url = $top . "appid=$appid&query=$kw&results=50";
my @ranking = map {$_->{Url}} @{get_results($url)};
print Dumper @ranking;
sub get_results {
my ($url) = @_;
my $yahoo_response = get($url);
my $xmlsimple = XML::Simple->new();
my $yahoo_xml = $xmlsimple->XMLin($yahoo_response);
if (ref($yahoo_xml->{Result}) eq "ARRAY") { # found: many
return $yahoo_xml->{Result};
} elsif (ref($yahoo_xml->{Result}) eq "HASH") { # found: 1
return [$yahoo_xml->{Result}];
}
return []; # not found
}
¼Â¹Ô¤¹¤ë¤È²¼µ¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤ì¤Ç°ìÆü 5 Ëü²ó¤Þ¤Ç¼Â¸³¤¬¤Ç¤¤½¤¦¤Ç¤¹¡¥
% perl yapi_test.pl 'som_pak vsom' $VAR1 = 'http://mikilab.doshisha.ac.jp/dia/research/report/2005/0822/007/report20050822007.html'; $VAR2 = 'http://www.okada.jp.org/RWiki/index.php?R%A4%C7SOM(%BC%AB%B8%CA%C1%C8%BF%A5%B2%BD%A5%DE%A5%C3%A5%D7)'; $VAR3 = 'http://www.cis.hut.fi/research/som_pak/som_doc.txt'; $VAR4 = 'http://hpux.connect.org.uk/hppd/cgi-bin/wwwtar?/hpux/NeuralNets/som_pak-1.2/som_pak-1.2-src-9.01.tar.gz+som_pak-1.2/makefile.bsd+text'; $VAR5 = 'http://www.cis.hut.fi/somtoolbox/package/docs2/som_sompaktrain.html'; ....


