• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

90@黒 G80のブログ一覧

2013年07月23日 イイね!

html test

flickrにUPした写真をブログに手作業で貼るのは虚無的に面倒。指定したflickrフォトセットからHTMLコードを生成する簡単な Perlスクリプトを作っておきまし たので、そのメモ。

DIV要素を使って左側に画像、右側にテキストを配置するようなHTMLを生成します(このあたりは後々デザイン変えるかもしれませんが、面倒なの でやらないかもしれません)。指定したフォトセット内の全ての写真から、小さめのURLを使ってIMG要素を生成し、その画像に大きめサイズの写真へのリ ンクを生成します。というのが、簡単な機能説明。

flickrPhotoset2HTML.pl

#!/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>&nbsp;</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

簡易WF

  • Apertureでブログ用の写真を選んでflickrにアップロード(新しいフォトセットで、サイズは「Webイメージ」)
  • F-Stopでフォトセット内の写真の順番を並替え(Apertureでのreorderの仕方がわからない。。。)
  • フォトセットにブラウザでアクセスしてフォトセットIDをURLから取得(F-StopでのフォトセットIDの見方がわからない。。。)
  • スクリプト実行
  • 出てきたHTMLソースをKompoZerに貼り付けてコメントを編集
  • HTMLコードをみんカラBlogのエディタに通常編集モードで貼り付け(このとき改行は無効にしておく)

参考サイト

Posted at 2013/07/23 20:10:17 | コメント(1) | トラックバック(0) | その他

プロフィール

「(体の)慣らし運転 http://cvw.jp/b/1787802/46308714/
何シテル?   08/10 12:46
90(きゅーまる)です。車歴は、NA ロードスター、S14 シルビア、NA ロードスター、RX-8、NC ロードスター、BMW 130i、BMW 420i GC...

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2013/7 >>

 123456
789101112 13
1415 16171819 20
2122 23242526 27
28293031   

リンク・クリップ

ガラスコーティングのプロフェッショナル「NOJ」の洗車クオリティーがすごい…これ知ったら自分で洗車する気なくなりそう!【PR】 
カテゴリ:その他(カテゴリ未設定)
2022/06/28 17:13:12
北山崎① -空白地帯へ- 
カテゴリ:その他(カテゴリ未設定)
2017/06/27 17:14:45
きれいな富士山をご覧になりたい皆様へ♪ 
カテゴリ:その他(カテゴリ未設定)
2016/02/06 01:03:51

愛車一覧

BMW M3 セダン 黒パンダ (BMW M3 セダン)
過ぎたるは及ばざるが如しと言いますが、楽しんで行こうと思います。
BMW 4シリーズ グランクーペ 420 (BMW 4シリーズ グランクーペ)
実用的 FR で、車幅 1885 以内、かつ AT となるともうこれしかない!
BMW 1シリーズ ハッチバック アルパカ号 (BMW 1シリーズ ハッチバック)
とりあえず納車! 買い替えの動機が犬だったので、さしずめこいつの制式名称は、和名で陸系だ ...
マツダ ユーノスロードスター マツダ ユーノスロードスター
就職してその年の6月くらいに買ったクルマ。自身二代目のロードスターはNA8C B2 Li ...

過去のブログ

2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation