Garden Place TOP 技術ガーデン Hey, Scripting kiddy! 結局、欲しいのは結果なのよね

Hey, Scripting kiddy! は皆様のPCを通じた悩みなどをScript kiddyのスクリプトで解決しようという企画です。

Script kiddyさんが色んな人の悩みをスクリプトで解決していく様はまさに痛快。関係のない無駄話も彼の魅力の一つです。

※注
これは、Microsoftがやっている「Hey,scripting guy!」のパクリ企画です。

公開日:2008.07.07

結局、欲しいのは結果なのよね

Hey, Scripting kiddy! は皆様のPCを通じた悩みなどをScript kiddyのスクリプトで解決しようという企画です。

今日のお便りは恋する19歳さんからです。 「Script kiddyさん、こんにちは。前回はありがとうございました。(関係のない話ですがこの前誕生日でした。)あのカッコいいBATファイルを彼女に見せたら、『そんな下らないことよりあなた、デジカメの写真くらい整理しなさいよ。』と言われました。せっかくのチャンスだったのにとても悔しいです。なんとか彼女に男前を見せたいです!」

恋する19歳さん、こんにちは。お誕生日おめでとうございます。 今Script kiddyは26歳です。19歳のころ何を考えていたかというと、アルバイト先の隣にあったパン屋さんで働く女の子をおs(※1)局今もScript kiddyは一人です。今日は妙に画面がかすんで見えます。視力が落ちたのでしょうか。

では汗をぬぐいながら、恋する19歳さんの男前を見せる方法を考えましょう。今、あなたの目の前には散らかったJPGファイルたちという格好のエサがあります。ダサいと言われたBATでは挽回は難しいので、ここはPerlで男前を見せてはいかがでしょうか。

01 : #!/usr/bin/perl
02 : 
03 : use strict;
04 : use warnings;
05 : use File::Copy;
06 : 
07 : my $source = '~/my_sweet_pictures/';
08 : my $storage = '~/my_honeys_order/';
09 : 
10 : opendir DIR, $source or die "Mom, I could not find my folder!!".$!;
11 : 
12 : if ( ! -d $storage) {
13 :   mkdir $storage or die "Mom, I could not make a folder!!".$!;
14 : }
15 : 
16 : foreach ( grep { /\.jpg$/i } readdir(DIR) ) {
17 :   my $mtime = (stat($_))[9];
18 :   my ( undef, undef, undef, $day, $month, $year ) = gmtime($mtime);
19 :   my $moveto = $storage.sprintf("%04d-%02d-%02d", $year+1900, $month + 1, $day);
20 :   if( ! -d $moveto ) {
21 :     mkdir $moveto or die "Mom, I could not make a sub folder!!".$!;
22 :   }
23 :   copy($source.$_, $moveto) or warn "Mom, copy fails!".$!;
24 : }

ついでにpythonの場合も書いておきましょう。

01 : #!/usr/bin/python
02 : 
03 : from os import mkdir, listdir
04 : from os.path import exists, getmtime
05 : from shutil import copy2
06 : from sys import exit
07 : from time import gmtime, strftime
08 : 
09 : source = '~/my_sweet_pictures/'
10 : storage = '~/my_honeys_order/'
11 : 
12 : if not exists(source) :
13 :     print "Mom, I could not find my folder!!"
14 :     exit(1)
15 : 
16 : if not exists(storage) :
17 :     mkdir(storage, 0750)
18 : 
19 : files = listdir(source)
20 : for filestr in files :
21 :     if filestr[-4:] != ".jpg" :
22 :         continue
23 :     storefolder = storage + \
24 :         strftime("%Y-%m-%d", gmtime(getmtime(source + filestr)))
25 :     if not exists(storefolder) :
26 :         mkdir(storefolder, 0750)
27 :     copy2(source + filestr, storefolder)

いかがでしょうか。このスクリプトを使えば、あなたが今までに撮ってきた写真を日付ごとに整理してくれます。$sourceに参照元のファイルパスを、$storageに整理して保存する先のファイルパスを指定してください。pythonの場合はsource、storageで対応します。これでスクリプトに全く興味のない彼女もあなたの事を見直す事でしょう。

ではScripting kiddyは遊郭に行く妄想をしつつ寝ることにします。

※1 本題とは関係がないので、省略されました。


※注 これは、Microsoftがやっている「Hey,scripting guy!」のパクリ企画です。 ご意見、ご要望はお問い合わせよりお願いします。