PowerShell から Flickr の写真を検索

by kusakari 29. 5月 2010 15:26

前回に引き続き、Flickr.Net を使って Flickr 上の写真を検索してみます。

http://flickrnet.codeplex.com/
※今回はバージョン2.2です。

 

まずは、PowerShell から「Flickr.dll」を読み込みます。

[System.Reflection.Assembly]::LoadFile("C:\Temp\FlickrNet.dll"); 

 

 

APIKEYを渡して、FlickrNet.Flickrを作ります。

$fckr = New-Object FlickrNet.Flickr($apiKey); 

 

 

ココまでは前回と同じです。
今回はココから、PhotoSearchOptions を作り、この各プロパティに検索したい情報をセットします。

$searchOpt = New-Object FlickrNet.PhotoSearchOptions; 

 

 

例えば、写真についてるタグで検索したい場合は、下記のような感じになります。

$searchOpt.Tags = "タグ"; 

 

 

条件にあった写真は PhotosSearch に PhotoSearchOptions を入れることで取得出来ます。

$fckr.PhotosSearch($searchOpt) 

 

 

■サンプル
$userName で指定したユーザーが投稿し、タグが「ネコ」とついている写真のURLを出力します。

$apiKey = "<取得したAPIKEY>"
$dllPath = "C:\Temp\FlickrNet.dll"
$tagName = "ネコ"
$userName = "<ユーザー名>"

#DLL読み込み 
[void][System.Reflection.Assembly]::LoadFile($dllPath);

#検索内容作成 
$fckr = New-Object FlickrNet.Flickr($apiKey); 
$searchOpt = New-Object FlickrNet.PhotoSearchOptions; 
$searchOpt.UserId = $fckr.PeopleFindByUsername($userName).UserId; 
$searchOpt.Tags = $tagName;

$fckr.PhotosSearch($searchOpt).PhotoCollection | % { Write-Host $_.MediumUrl; } 

 

 

■ 結果
2010529_15136_781

 

 

 

IMG_100513_110439

PowerShell で Flickr の写真をダウンロードする

by kusakari 26. 5月 2010 23:51

今回の内容は先に明記しますが、実用的なものではありません。あくまで個人のメモ内容です。

下記 CodePlex にて公開されている Flickr API のライブラリを使って、PowerShell から Flickr に写真をアップロードしてみたいと思います。
http://flickrnet.codeplex.com/
※今回はバージョン2.2です。

 

 

API Key を取得していない場合は、だいたい下記のような流れになります。
1. yahoo.comで ID の作成。
2. Flickr Servicesにて申請し取得。
http://www.flickr.com/services/apps/create/apply

 

 

上記、CodePlexからダウンロードしたファイルを解凍して、”Release”フォルダにある「Flickr.dll」ファイルを適当な場所(今回はC:\Tempフォルダ )に保存しておきます。

 

PowerShell から 「Flickr.dll」 を読み込みます。

[System.Reflection.Assembly]::LoadFile("C:\Temp\FlickrNet.dll"); 

 

 

取得したAPIKEYを渡して、FlickrNet.Flickrを作ります。

New-Object FlickrNet.Flickr($apiKey); 

 

 

PhotosGetInfo で、URLに関するプロパティ、MediumUrlなどがありますので、このプロパティ情報をもとに、WebClientなどを使ってダウンロードします。

 

 

また、ダウンロードする写真のIDに関しては今回は、FlickrのサイトのURLで事前に確認しておきます。
※下図の場合は、写真のIDは「4626070597」になります。
2010524_20184

 

 

■サンプル
下記のサンプルは、Flickr上で保存されている写真を、C:\Temp フォルダに test.jpg という名前で保存します。

$apiKey = "<取得したAPIKEY>" 
$photoId = "写真ID"
$dllPath = "C:\Temp\FlickrNet.dll" 
$savePath = "C:\Temp\test.jpg"

#DLL読み込み 
[void][System.Reflection.Assembly]::LoadFile($dllPath);

#写真情報取得 
$fckr = New-Object FlickrNet.Flickr($apiKey); 
$photo = $fckr.PhotosGetInfo($photoId);

#画像ダウンロード 
$wc = New-Object Net.WebClient 
$wc.Credentials = [System.Net.CredentialCache]::DefaultCredentials 
$wc.DownloadFile($photo.MediumUrl, $savePath) 
$wc.Dispose(); 

Hyper-V 上の仮想マシンの複製

by kusakari 18. 5月 2010 22:42

Hyper-V上の仮想マシンを複製しようとした時、単純にVHDや構成ファイルをコピーして・・・とやると、マシンごとに存在する固有情報で重複等が発生します。
そのため sysprep を使って固有の情報などを書き直しして、仮想マシンのコピーを作成する実験してみたいと思います。


SIDが重複してても、下記のtechnetの記事を読む限り(おそらく)問題はないみたいです。ので、今回はSIDの再生成は行わずに実施します。
http://technet.microsoft.com/ja-jp/windows/ff363109.aspx



■環境

  • Hyper-V 2.0
  • WindowsServer 2003 R2 x64
  • Sysprep 2.0

 

 

■sysprepの実行
OSのメディアにsysprepがありますので、下記のパスにあるキャビネットファイルを解凍します。

<"ドライブ名">:\support\tools\deploy.cab


2010518_10305_770

 


解凍して出来たファイルの中に「sysprep.exe」がありますので、複製元となる仮想マシン(ココではWindowsServer 2003 R2)上で実行します。
sysprepを実行するとウィンドウが表示されますので、オプション欄「セキュリティ識別子を再生成しない」にチェックを入れて、シャットダウンモードを「シャットダウン」にして「再シール」ボタンを押します。 
2010518_103745_774

しばらくするとシャットダウンします。

 

 

■Hyper-Vマネージャーでエクスポート/インポート
Hyper-Vマネージャー上で、複製元の仮想マシンをエクスポートします。
2010518_10445_775


エクスポート終了後、エクスポート先のフォルダを、新しく作成するマシン名などにリネームします。
そして、Hyper-Vマネージャーでインポートを選択して、先程エクスポートしたフォルダを選択し、インポートの設定で「仮想マシンをコピーする(新しい一意なIDを作成する)」を選びます。
2010518_114230_777

 

 

■sysprep ふたたび
インポートによって出来上がった仮想マシンを起動すると、sysprerpが実行されますので、セットアップウィザードを実行して完了です。
2010518_12258_778

PowerShell からサムネイル画像を作成

by kusakari 13. 5月 2010 17:20

PowerShell から サムネイル画像を作成してみたいと思います。

 

まず、下記のようにSystem.IO.FileクラスのOpenReadで、FileStreamを作成します。

$fileStream = [System.IO.File]::OpenRead("c:\temp\0001.jpg"); 

 

次に、System.Drawing.Imageクラスの、FromStreamでImageを作成します。

$image = [System.Drawing.Image]::FromStream($fileStream, $false, $false); 

 

そして、ImageのGetThumbnailImageに、拡大縮小したいサイズなどを渡して、サムネイルを作成します。

$image.GetThumbnailImage(100, 100, $null, [System.IntPtr]::Zero); 

 

 

■サンプル
c:\temp\0001.jpgファイルを縦横それぞれ100ピクセルに縮小して、ファイル名の頭に「thumb_」をつけ同じフォルダに保存しています。

 

$picturePath = "c:\temp\0001.jpg";
$width = 100;
$height = 100;

$stream = [System.IO.File]::OpenRead($picturePath);
$img = [System.Drawing.Image]::FromStream($stream, $false, $false);
$thumb = $img.GetThumbnailImage($width, $height, $null, [System.IntPtr]::Zero);

$saveThumbPath = [System.String]::Format("{0}\\thumb_{1}", [System.IO.Path]::GetDirectoryName($picturePath), [System.IO.Path]::GetFileName($picturePath));
$thumb.Save($saveThumbPath, [System.Drawing.Imaging.ImageFormat]::Jpeg);

$thumb.Dispose();
$img.Dispose();
$stream.Close();
$stream.Dispose();

Calendar

<<  9月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

RecentComments

Comment RSS