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; }
■ 結果


9327424a-fbea-4668-ac31-486ae2afa56e|0|.0
Category: PowerShell
Tags: 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」になります。

■サンプル
下記のサンプルは、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();
b2f043e5-5d37-4a91-9a05-fcbd818fcd2d|0|.0
Category: PowerShell
Tags: Flickr
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

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

しばらくするとシャットダウンします。
■Hyper-Vマネージャーでエクスポート/インポート
Hyper-Vマネージャー上で、複製元の仮想マシンをエクスポートします。

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

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

4ebdb3c6-826e-4175-915a-6c8a4d8da0f3|0|.0
Category: システム管理
Tags: Hyper-V
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();
7c79de5a-eb91-4eda-b969-c98bc311d3c0|0|.0
Category: PowerShell
Tags: