flickrにUPした写真をブログに手作業で貼るのは虚無的に面倒。指定したflickrフォトセットからHTMLコードを生成する簡単な
Perlスクリプトを作っておきまし たので、そのメモ。
DIV要素を使って左側に画像、右側にテキストを配置するようなHTMLを生成します(このあたりは後々デザイン変えるかもしれませんが、面倒なの でやらないかもしれません)。指定したフォトセット内の全ての写真から、小さめのURLを使ってIMG要素を生成し、その画像に大きめサイズの写真へのリ ンクを生成します。というのが、簡単な機能説明。
#!/usr/bin/perl
#use Data::Dumper; # for dubugging use
use Flickr::API;
use LWP;
use HTTP::Request;
use Image::Size;
######################################################
# configurations here
######################################################
# flickr configuration
$key = '* your flickr API key here * ';
$userID = '* your flickr user id here * ';
# size of the photos
# see http://www.flickr.com/services/api/misc.urls.html for more details
$smallSizePhotoChar = "m";
# small, 240 on longest side
$largeSizePhotoChar = "b";
# large, 1024 on longest side
# styles
$divStyleImage = "width: 49%; float: left;
clear: left;"; #CSS for the image
container
$divStyleText = "width: 49%; float:
left;";
#CSS for the text container
$pStyleImage = "text-align:
right;";
#CSS for the image paragraph
$pStyleText = "margin-left:
1em; vertical-align: bottom"; #CSS for the text
paragraph
######################################################
# parse argument
######################################################
# check arg(one photosetID must be specified)
if($#ARGV != 0) {
die("Usage: command photosetID\n");
}
$setID = $ARGV[0]; # photo set ID
######################################################
# retrieving the photos in the specified set
######################################################
# create a Flickr::API object
$flickrAPI = new Flickr::API({'key' => $key,});
# retrieving photos from Flickr
printf(STDERR "retrieving the photos from the set on Flickr ... ");
$res = $flickrAPI->execute_method('flickr.photosets.getPhotos', {
'api_key' => $key, 'photoset_id' => $setID,
});
# check errors
if (! $res->{success}) {
die("could not retrieve from Flickr.\nerror code:
$res->{error_code}\nerror message: $res->{error_message}\n");
}
printf(STDERR "DONE\n");
# parse the response
$tree = $res->{tree};
@photoset = @{$tree->{children}->[1]->{children}};
# Dumper(@photoset); # for
debugging use
######################################################
# generating an HTML for each photo
######################################################
printf(STDERR "generating HTML code ... ");
my $htmlBuffer = "";
# HTML code
foreach my $photo (@photoset) {
if ($photo->{type} eq 'element') {
my $attr =
$photo->{attributes};
my $smallPhotoURL =
"http://farm$attr->{farm}.static.flickr.com/$attr->{server}/$attr->{id}_$attr->{secret}_$smallSizePhotoChar.jpg";
my $largePhotoURL =
"http://farm$attr->{farm}.static.flickr.com/$attr->{server}/$attr->{id}_$attr->{secret}_$largeSizePhotoChar.jpg";
# get the width and height of the
photo
my $userAgent =
LWP::UserAgent->new;
$userAgent->agent('Mozilla/5.0');
my $httpRequest =
HTTP::Request->new(GET => "$smallPhotoURL") or die("could not
create HTTP request for $smallPhotoURL\n");
my $httpResponse =
$userAgent->request($httpRequest) or die("could not get the image
via $smallPhotoURL\n");
my ($width,
$height) = imgsize(\$httpResponse->content);
# generate an HTML code
$htmlBuffer .=
<<END_OF_HTML;
<div style="$divStyleImage">
<p style="$pStyleImage">
<a href="$largePhotoURL"
target="_blank"><img src="$smallPhotoURL" width="$width"
height="$height"></a>
</p>
</div>
<div style="$divStyleText">
<p style="$pStyleText">
text goes here
</p>
</div>
END_OF_HTML
}
}
printf(STDERR "DONE\n");
# print the HTML
print $htmlBuffer . "<div style=\"clear:
left;\"><p> </p></div>\n";
exit(0);
コード中の、"$key"変数の値はflickrのサイトで発行するAPI Keyを、同様に"$userID"には自分のflickrユーザIDを指定します。
Perlと、Flickr::API、LWP、HTTP::Request、Image::SizeのPerlモジュールが必要です。あとは直接
flickrサイトと通信するので、ネットワーク接続が前提です。画像サイズも取得しにいったりするので、結構時間がかかります。。。
で、実行する準備が整ったら、対象とするフォトセットにブラウザでアクセスして、フォトセットIDなるものを調べておきます。
http://www.flickr.com/photos/<ユーザID>/sets/<フォトセット
ID>/
あとは、スクリプトにフォトセットIDを引数にして実行します。
# flickrPhotoset2HTML.pl
<フォトセットID>
で、出てきたHTMLをKompoZer等 のHTMLエディタでコメントなど編集しつつ、最終的なソースをみんカラのブログエディタ画面に貼り付けると、こうなります。
ベイブリッジの今はなきスカイウォー ク。。。
実家の猫。
上から実家の猫。
どことなく色気が漂います(♂)。
Tamron 90mmマクロ。
知床の夕暮れ。
豊洲の夕暮れ。
お台場の夕暮れ。
魚眼レンズで撮った晴海埠頭。
二代目「しらせ」@木更津
先代の相棒。
魚眼レンズで撮った先代の相棒。
オレンジライン。多磨霊園のあたり。
魚眼レンズで撮った鎌倉もみじ谷の紅葉。
Glacier Point
California
Yosemite
Yosemite
サンフランシスコの空。嘘みたいですが後
処理なし。露出マイナス補正でここまで空が青く濃く落ちるのはレンズのおかげでしょうかね(ちなみにSigma 18-50mm f/2.8)。
これは日本です。千葉のローズマリー公園。
現在の相棒。
現在の相棒@千里浜なぎさドライブウェイ。
というわけで、だいぶ作業は楽になりましたが、デザイン的なところは要再考なような気もします。。。ワタクシはプログラマーではないので、これくらいが精一杯かなw
http://www.flickr.com/services/api/misc.urls.html
http://search.cpan.org/~iamcal/Flickr-API-1.08/lib/Flickr/API.pm
http://search.cpan.org/~rjray/Image-Size-3.232/lib/Image/Size.pm
http://www.flickr.com/services/api/
ガラスコーティングのプロフェッショナル「NOJ」の洗車クオリティーがすごい…これ知ったら自分で洗車する気なくなりそう!【PR】 カテゴリ:その他(カテゴリ未設定) 2022/06/28 17:13:12 |
![]() |
北山崎① -空白地帯へ- カテゴリ:その他(カテゴリ未設定) 2017/06/27 17:14:45 |
![]() |
きれいな富士山をご覧になりたい皆様へ♪ カテゴリ:その他(カテゴリ未設定) 2016/02/06 01:03:51 |
![]() |
![]() |
黒パンダ (BMW M3 セダン) 過ぎたるは及ばざるが如しと言いますが、楽しんで行こうと思います。 |
![]() |
420 (BMW 4シリーズ グランクーペ) 実用的 FR で、車幅 1885 以内、かつ AT となるともうこれしかない! |
![]() |
アルパカ号 (BMW 1シリーズ ハッチバック) とりあえず納車! 買い替えの動機が犬だったので、さしずめこいつの制式名称は、和名で陸系だ ... |
![]() |
マツダ ユーノスロードスター 就職してその年の6月くらいに買ったクルマ。自身二代目のロードスターはNA8C B2 Li ... |