0

C# – Flickr.NETでFlickrアップローダ

前の記事に続き、Flickr.NETを使う。

今度はFlickr Uploaderを作ってみた。Flickr.NETには

・Flickr APIへの認証(read/write/delete権限の取得)

・ファイル名を指定してアップロード

などの機能が揃っているのでさくっと作れた。

できたもの => Archive

ドラッグアンドドロップした写真1枚をアップロードする

uploader

tagやtitleなどが適当に付いている

using Flickr.NET

■oAuthでの認証のためのtoken発行

今回はAPI keyに加えて、secretも使ってfrobを作ってtokenの発行を行わないといけない。

まずkeyとsecretを取りに行く→Flickr Services

その辺の仕組みは1つ前の記事と、

Flickr API の認証 – まちゅダイアリー (2005-11-01)

s.h.log: Flickr::Uploadで写真をアップロード

を参考に。

■プログラムを書く

まずfrobを作る。あとで使うのでとっておく(2回作ると違う値ができてしまうので)

Flickr flickr = new Flickr();

flickr.ApiKey = “your-api-key”;

flickr.ApiSecret = “your-api-secret”;

String flickr_frob = flickr.AuthGetFrob(); // frobの作成

で、認証画面をwebブラウザで開いて「OK」ボタンを押してもらう

System.Diagnostics.Process.Start(flickr.AuthCalcUrl(flickr_frob, AuthLevel.Write)); // 認証画面をブラウザで開く

OK押してもらってから、さっき作ったfrobを使ってtokenを取りに行く。

try{

Auth auth = flickr.AuthGetToken(flickr_frob);

flickr.AuthToken = auth.Token; // token取得

}

catch (FlickrApiException ex)

{

Console.WriteLine(ex.Message);

}

無事tokenを取って、Flickrオブジェクトにセットできたら、ファイル名を指定すればアップロードできる。tagやtitleやdescriptionを適当に付けてみた。

Photo p = new Photo();

p.PhotoId = flickr.UploadPicture(“PhotoFileName”, “test photo”, “これはてすとです”, “test,uploadertest”);

p.UserId = auth.User.UserId;

System.Diagnostics.Process.Start(p.WebUrl);

uploadされた写真のphotoIdが返ってくるので、それを使ってWeb上でのURLを求めることも出来る。今回はまたブラウザで開いてみた。

UploadPictureメソッドはどうやら内部でThread.Sleep()を呼んでいるみたいなので、そのままThreadで実行すればマルチスレッド化できる。

uploadを途中で止めるメソッドが無いみたいだけど、途中で止めたい時はスレッドで実行してAbort()してしまえば止まった。

詳しくは今回作ったアプリのソース参照

Read more

0

C# – Flickr.NETでtag検索

Flickr.NETという.NET Framework用のライブラリを使って、Flickr APIからタグ検索してみた。2年ぐらい前に使った時より、dllのファイルサイズが1.5倍に増えててた。

できたもの => Archive

using Flickr.NET

■dllを手に入れる

FlickrNet API Library – Home

[Release]から2.1.5をダウンロードしてきた。

んで、[参照の追加]でリンクして、

using FlickrNet;

する。

■API keyを手に入れる

Flickr ServicesからAPI keyを手に入れないといけない。メールアドレスを登録してすぐ発行してもらえる。

今回は「デスクトップアプリ用」を選択。

(検索だけなら、secretとtokenを使ってoAuthで認証する必要は無い)

■プログラムを書く

Flickr APIのラッパーなので、基本的な仕様はFlickr APIの方を見た方が良い。

今回はflickr.photos.searchを叩いてみた。

まずFlickrというクラスが全ての根になっている

using FlickrNet;

Flickr flickr = new Flickr(“your-api-key”);

flickr.photos.searchでは色々なパラメータを渡すが、Flickr.NETではPhotoSearchOptionsクラスで集約されている。今回はタグだけでeveryoneから検索するのでこれだけだけど、もっと色々パラメータが指定できる。

PhotoSearchOptions opt = new PhotoSearchOptions();

opt.Tags = “food, sfc”;

opt.TagMode = TagMode.AllTags;

Photos photos = flickr.PhotosSearch(opt); // 検索

Photosクラスで返ってきた結果からURLを取り出して、表示する。

PictureBox.Imageにストリームから読み込ませるための関数 DownloadPicture(“URL”) を利用してダウンロードする。

Photo p = photos.PhotoCollection[0]; // 1枚目

pictureBox.Image = Image.FromStream(flickr.DownloadPicture(p.MediumUrl));

textBoxPhotoUri.Text = p.WebUrl;

Read more

0

Pipes: soup.ioからpost/repostのみのフィードを作る

soup.ioのフィードから、自分がsoup.ioへpost/repostしたものだけを抜き出すYahoo Pipesを作った。

Pipes: soup.io – remove imported feeds

これで作ったfeedをtumblrに読み込ませるようにしておいた。

soupをtumblrのバックアップとして使う

tumblr以外にもFlickrやdel.icio.usからも読み込ませているので、そのままsoup.ioのフィードをtumblrに読み込ませると、reblogの純度が落ちてしまうので。

でもこれって循環しちゃうのかな?

0

Adobe AIRの開発環境を整えて、カメラで撮影してJPEGで保存するソフトを作った

AIRを使うと、flash.filesystemやflash.desktopなどのデスクトップアプリ用のクラス群が使えるようになるので、やってみた。

Air beta3で開発する環境を作って、前からやってみたかった

  • 半透明で変な形をしたウィンドウ
  • USBカメラで撮影してJPEGにエンコードしてファイル出力

0

C# on Mono でLinux上にFlash用XMLSocketServerを作る

OpenSourceの.NET FrameworkであるMonoをインストールして、C#で作ったXMLSocketServer.exeをcoLinux上のDebian 3.2で動かしてみた。

VisualStudioでコンパイルしてできた.exeのままで、ちゃんとdllも読み込んで動作してくれるのが凄い。

(.NETなので、VB.NETで書いたプログラムも同じようにLinuxで動くはず)

C# on Mono

Flash Media Serverは高いので、flvのストリーミング以外ならサーバーサイドも自分で全部作った方がよさげ。

ちなみにMonoいれてみたきっかけは、きょろさんがおすすめしてたから

New Generation Chronicle:井上恭輔——電子工作より生まれし巫女萌えバイナリアン (1/10) – ITmedia エンタープライズ

■インストール

.NETFramework on Linux (Mono) (TORIGOE DESIGN. doc)を参考に、最新版1.2.6をダウンロードしてインストールした

wget ftp://www.go-mono.com/archive/1.2.6/linux-installer/6/mono-1.2.6_6-installer.bin

chmod +x mono-1.2.6_6-installer.bin

./mono-1.2.6_6-installer.bin

aptから入れる事は出来ないけど、インストールはとても簡単だった。

■プログラムの作り方

普通に「コンソールアプリケーション」を選んで、コンパイルしてできた .exe がそのままLinuxで動くようになる。

できたもの => MonoTest (Visual Studio2005 / C#2.0)

■作ったプログラム

まず最初に、スレッドでループし続けて1秒ごとに現在の時刻を表示するプログラムを作った => SourceCode

C# on Mono - Thread and DateTime

次に、正月にDLL化したXMLSocket.NETの機能を使って、Flash(Windows上)とXMLSocketServer(Debian上)とで、XMLSocketCommandのやりとりをやってみた。

C# on Mono - XMLSocketServer

=> SourceCode

Read more