しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Facebook C# SDK を使ってアップロード済みのだるやなぎ画像を全てダウンロードする

これは だるやなぎ Advent Calendar 2014 - Adventar 15 日目の記事です。

これまで地道に撮影してきただるやなぎ画像は、全て Facebook のアルバムにアップロードしていたので利用するのに手間がかかっていました。なので、今回は Facebook にアップロード済みのだるやなぎ画像を一括でダウンロードするアプリをサクッと作成しました。

f:id:shiba-yan:20141214234210p:plain

ちなみに Facebook のアルバムはこんな感じです。

Facebook C# SDK を使うと、簡単に Graph API を呼び出せるので以下のようなコードを用意しました。{アルバムのID}/photos という形で API を呼び出せば、全てのデータが返ってきます。

var client = new FacebookClient("ACCESS_TOKEN")
{
    AppId = "APP_ID",
    AppSecret = "APP_SECRET"
};

client.SetJsonSerializers(JsonConvert.SerializeObject, JsonConvert.DeserializeObject);

// だるやなぎアルバムから画像を全てダウンロードする
var result = client.Get<FacebookConnection>("346516728747680/photos", new { limit = 200 });

var webClient = new WebClient();

var directory = @"C:\Users\shibayan\Documents\daruyanagi";

// オリジナル画像だけをダウンロードする
foreach (var photo in result.Data)
{
    var image = photo.Images.First();

    webClient.DownloadFile(image.Source, Path.Combine(directory, Path.ChangeExtension(Path.GetRandomFileName(), ".jpg")));
}

このコードのために用意したモデルクラスは以下のような最低限のものです。

public class FacebookConnection
{
    public IList<FacebookPhoto> Data { get; set; }
}

public class FacebookPhoto
{
    public IList<FacebookImage> Images { get; set; }
}

public class FacebookImage
{
    public string Source { get; set; }
}

このアプリケーションを実行すると、指定したディレクトリにオリジナルサイズのだるやなぎ画像がダウンロードされていきます。

f:id:shiba-yan:20141214234935p:plain

既に OneDrive にて公開しているので、どうぞご自由にお使いください。

だるやなぎよ、これからも常にフリーであれ。