<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>橋本商会 &#187; moblog</title>
	<atom:link href="http://shokai.org/blog/archives/author/moblog/feed" rel="self" type="application/rss+xml" />
	<link>http://shokai.org/blog</link>
	<description>なんか作ったりした記録を忘れないうちに書くblog</description>
	<lastBuildDate>Sun, 20 May 2012 10:50:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com/" />
			<item>
		<title>はがしたコンパス</title>
		<link>http://shokai.org/blog/archives/1511</link>
		<comments>http://shokai.org/blog/archives/1511#comments</comments>
		<pubDate>Sat, 29 Mar 2008 03:25:02 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1511</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<div class="caption">無事に実装された</div>
<div class="photo"><img src="http://shokai.org/old/moblog/blog-photo-1206760992.9-0.jpg" /></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1511/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>評価基盤からはがした</title>
		<link>http://shokai.org/blog/archives/1510</link>
		<comments>http://shokai.org/blog/archives/1510#comments</comments>
		<pubDate>Sat, 29 Mar 2008 01:52:45 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1510</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<div class="caption">コンパスがどこも売り切れなのよ</div>
<div class="photo"><img src="http://shokai.org/old/moblog/blog-photo-1206755455.36-0.jpg" /><br />
<img src="http://shokai.org/old/moblog/blog-photo-1206755455.36-1.jpg" /></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1510/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>隣の人が論文を音読しているので</title>
		<link>http://shokai.org/blog/archives/1508</link>
		<comments>http://shokai.org/blog/archives/1508#comments</comments>
		<pubDate>Fri, 28 Mar 2008 08:15:55 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1508</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<div class="caption">俺もデータシートを読みつつ機械臭を撒き散らすなどする</div>
<div class="photo"><img src="http://shokai.org/old/moblog/blog-photo-1206692037.6-0.jpg" /></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1508/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>秋月FT232RL基盤</title>
		<link>http://shokai.org/blog/archives/1502</link>
		<comments>http://shokai.org/blog/archives/1502#comments</comments>
		<pubDate>Fri, 14 Mar 2008 10:30:12 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1502</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<div class="caption">動いた</div>
<div class="photo"><img src="http://shokai.org/old/moblog/blog-photo-1205490610.7-0.jpg" /></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1502/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>サーバーきた</title>
		<link>http://shokai.org/blog/archives/1492</link>
		<comments>http://shokai.org/blog/archives/1492#comments</comments>
		<pubDate>Fri, 01 Feb 2008 04:27:58 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1492</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<div class="caption"></div>
<div class="photo"><img src="http://shokai.org/old/moblog/blog-photo-1201839970.65-0.jpg" /></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1492/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>τに進出した</title>
		<link>http://shokai.org/blog/archives/1489</link>
		<comments>http://shokai.org/blog/archives/1489#comments</comments>
		<pubDate>Tue, 29 Jan 2008 09:33:35 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1489</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<div class="caption"></div>
<div class="photo"><img src="http://shokai.org/old/moblog/blog-photo-1201599105.91-0.jpg" /></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1489/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tシャツを作る</title>
		<link>http://shokai.org/blog/archives/1485</link>
		<comments>http://shokai.org/blog/archives/1485#comments</comments>
		<pubDate>Sun, 20 Jan 2008 16:47:49 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Pileus]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1485</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<p>アイロンプリントでTシャツを作った。<br /><br />
<a href="http://www.flickr.com/photos/shokai/2205826529/" title="Pileus T-shirt by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2278/2205826529_0d3f9f0daa.jpg" width="500" height="375" alt="Pileus T-shirt" /></a></p>
<p>材料はこれ。10枚入りで1000円ちょっと。<br /><br />
インクジェットプリンタで印刷したガラを転写できる。<br /><br />
<a href="http://www.flickr.com/photos/shokai/2206610034/" title="はやい！アイロンプリントペーパー by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2025/2206610034_6a33e0d520.jpg" width="375" height="500" alt="はやい！アイロンプリントペーパー" /></a></p>
<p><span id="more-1485"></span><br /><br />
まずTシャツ買ってきて、吊して、図案を考えます<br /><br />
<a href="http://www.flickr.com/photos/shokai/2206601538/" title="DSCF0113 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2241/2206601538_46f335a04b_m.jpg" width="240" height="180" alt="DSCF0113" /></a><a href="http://www.flickr.com/photos/shokai/2205817213/" title="DSCF0116 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2106/2205817213_43a2f51487_m.jpg" width="240" height="180" alt="DSCF0116" /></a><br /><br />
とりあえず普通の紙に印刷して配置してみるか、プロジェクションしてみるといい。</p>
<p>んでアイロンプリントペーパーに左右反転させて印刷する（転写するので）<br /><br />
<a href="http://www.flickr.com/photos/shokai/2205819589/" title="DSCF0118 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2405/2205819589_201152940a.jpg" width="500" height="375" alt="DSCF0118" /></a></p>
<p>グッとガッツポーズして、台紙はがして、さらに同梱されてた「しあげ紙」をあててもう一度グッとガッツポーズすれば綺麗に転写されます<br /><br />
<a href="http://www.flickr.com/photos/shokai/2206613388/" title="Amagatana T-shirt by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2171/2206613388_f4e11aef09.jpg" width="500" height="375" alt="Amagatana T-shirt" /></a></p>
<p><a href="http://www.flickr.com/photos/shokai/2205826529/" title="Pileus T-shirt by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2278/2205826529_0d3f9f0daa_m.jpg" width="240" height="180" alt="Pileus T-shirt" /></a><a href="http://www.flickr.com/photos/shokai/2206612522/" title="Pileus T-shirt by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2108/2206612522_739cb5c678_m.jpg" width="240" height="180" alt="Pileus T-shirt" /></a><br /><br />
ペンマークはベクターデータ作った。</p>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1485/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>変圧器とデジカメ買った</title>
		<link>http://shokai.org/blog/archives/1483</link>
		<comments>http://shokai.org/blog/archives/1483#comments</comments>
		<pubDate>Sat, 19 Jan 2008 00:06:40 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1483</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
<p>海外に行く機会が増えたので、自分用の変圧器を買った。<br /><br />
といっても、最近はほとんどのガジェットがUSB充電か、ACアダプタも100~240Vまで対応してるのでほぼはんだごて用として使われる予定。</p>
<p>ヨドバシで4500円ぐらいだったが、デジカメ買った時にたまったポイントで買えた。<br /><br />
<a href="http://www.flickr.com/photos/shokai/2199596044/" title="変圧器 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2146/2199596044_3f1b4188a3.jpg" width="500" height="375" alt="変圧器" /></a></p>
<p>あと最近買ったデジカメ。</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000UBLRL0/shokai-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/21lf78HaJuL.jpg" alt="FUJIFILM デジタルカメラ FinePix (ファインピクス) F50fd ブラック 1200万画素 光学3倍ズーム FX-F50FDB" style="border: none;" /></a></div>
<div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000UBLRL0/shokai-22/ref=nosim/" name="amazletlink" target="_blank">FUJIFILM デジタルカメラ FinePix (ファインピクス) F50fd ブラック 1200万画素 光学3倍ズーム FX-F50FDB</a><br />
<div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B000UBLRL0/shokai-22" title="FUJIFILM デジタルカメラ FinePix (ファインピクス) F50fd ブラック 1200万画素 光学3倍ズーム FX-F50FDB" target="_blank">amazlet</a> on 08.01.19</div>
</div>
<div class="amazlet-detail">富士フイルム (2007/09/20)<br />売り上げランキング: 6897</div>
<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5.0" /></div>
<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> コンパクトでも思ったより多機能</div>
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000UBLRL0/shokai-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p>前に買ったのが<a href="http://web.sfc.keio.ac.jp/~shokai/archives/2005/05/cybershot_l1_sn.html">2年半以上前</a>で、17000枚ぐらい撮った。もうボタン押してもメニューが出たり出なかったりする。</p>
<p>最後の写真<br /><br />
<a href="http://www.flickr.com/photos/shokai/2187832728/" title="DSC07203 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2414/2187832728_f12717a54d.jpg" width="500" height="375" alt="DSC07203" /></a></p>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1483/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# &#8211; Flickr.NETでFlickrアップローダ</title>
		<link>http://shokai.org/blog/archives/1482</link>
		<comments>http://shokai.org/blog/archives/1482#comments</comments>
		<pubDate>Sun, 13 Jan 2008 17:59:18 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Flickr.NET]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[VS2005]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1482</guid>
		<description><![CDATA[前の記事に続き、Flickr.NETを使う。 今度はFlickr Uploaderを作ってみた。Flickr.NETには ・Flickr APIへの認証（read/write/delete権限の取得） ・ファイル名を指定 [...]]]></description>
			<content:encoded><![CDATA[<p>
<p><a href="http://web.sfc.keio.ac.jp/~shokai/archives/2008/01/cs-flickr-net-search-tag.html">前の記事</a>に続き、<a href="http://www.codeplex.com/FlickrNet">Flickr.NET</a>を使う。</p>
<p>今度はFlickr Uploaderを作ってみた。Flickr.NETには<br /><br />
・Flickr APIへの認証（read/write/delete権限の取得）<br /><br />
・ファイル名を指定してアップロード<br /><br />
などの機能が揃っているのでさくっと作れた。</p>
<p>できたもの => <a href="http://shokai.org/archive/cs2.0/0801_FlickrAPI/">Archive</a><br /><br />
ドラッグアンドドロップした写真1枚をアップロードする<br /><br />
<a title="uploader by shokai, on Flickr" href="http://www.flickr.com/photos/shokai/2189326366/"><img src="http://farm3.static.flickr.com/2021/2189326366_e924e883a6_o.png" alt="uploader" width="369" height="336" /></a></p>
<p>tagやtitleなどが適当に付いている<br /><br />
<a title="using Flickr.NET by shokai, on Flickr" href="http://www.flickr.com/photos/shokai/2188583024/"><img src="http://farm3.static.flickr.com/2019/2188583024_b8fa19bc1c.jpg" alt="using Flickr.NET" width="500" height="401" /></a></p>
<p>■oAuthでの認証のためのtoken発行<br /><br />
今回はAPI keyに加えて、secretも使ってfrobを作ってtokenの発行を行わないといけない。<br /><br />
まずkeyとsecretを取りに行く→<a href="http://flickr.com/services/api/keys/">Flickr Services</a><br /><br />
その辺の仕組みは<a href="http://web.sfc.keio.ac.jp/~shokai/archives/2008/01/cs-flickr-net-search-tag.html">1つ前の記事</a>と、<br /><br />
・<a href="http://www.machu.jp/diary/20051101.html#p01">Flickr API の認証 &#8211; まちゅダイアリー (2005-11-01)</a><br /><br />
・<a href="http://web.sfc.keio.ac.jp/~shokai/archives/2006/09/flickrupload.html">s.h.log: Flickr::Uploadで写真をアップロード</a><br /><br />
を参考に。</p>
<p>■プログラムを書く<br /><br />
まずfrobを作る。あとで使うのでとっておく（2回作ると違う値ができてしまうので）</p>
</p>
<blockquote><p><p>Flickr flickr = new Flickr();<br /><br />
flickr.ApiKey = &#8220;your-api-key&#8221;;<br /><br />
flickr.ApiSecret = &#8220;your-api-secret&#8221;;<br /><br />
String flickr_frob = flickr.AuthGetFrob(); // frobの作成</p></p></blockquote>
<p>
<p>で、認証画面をwebブラウザで開いて「OK」ボタンを押してもらう</p>
</p>
<blockquote><p><p>System.Diagnostics.Process.Start(flickr.AuthCalcUrl(flickr_frob, AuthLevel.Write)); // 認証画面をブラウザで開く</p></p></blockquote>
<p>
<p>OK押してもらってから、さっき作ったfrobを使ってtokenを取りに行く。</p>
</p>
<blockquote><p><p>try{<br /><br />
Auth auth = flickr.AuthGetToken(flickr_frob);<br /><br />
flickr.AuthToken = auth.Token; // token取得<br /><br />
}<br /><br />
catch (FlickrApiException ex)<br /><br />
{<br /><br />
Console.WriteLine(ex.Message);<br /><br />
}</p></p></blockquote>
<p>
<p>無事tokenを取って、Flickrオブジェクトにセットできたら、ファイル名を指定すればアップロードできる。tagやtitleやdescriptionを適当に付けてみた。</p>
</p>
<blockquote><p><p>Photo p = new Photo();<br /><br />
p.PhotoId = flickr.UploadPicture(&#8220;PhotoFileName&#8221;, &#8220;test photo&#8221;, &#8220;これはてすとです&#8221;, &#8220;test,uploadertest&#8221;);<br /><br />
p.UserId = auth.User.UserId;<br /><br />
System.Diagnostics.Process.Start(p.WebUrl);</p></p></blockquote>
<p>
<p>uploadされた写真のphotoIdが返ってくるので、それを使ってWeb上でのURLを求めることも出来る。今回はまたブラウザで開いてみた。</p>
<p>UploadPictureメソッドはどうやら内部でThread.Sleep()を呼んでいるみたいなので、そのままThreadで実行すればマルチスレッド化できる。<br /><br />
uploadを途中で止めるメソッドが無いみたいだけど、途中で止めたい時はスレッドで実行してAbort()してしまえば止まった。</p>
<p>詳しくは今回作ったアプリのソース参照</p>
<p><span id="more-1482"></span></p>
<p>手順を強制するGUIのコードは長くなりがちだな。認証前にuploadボタンを押せないようにしておくとか。2回認証しないようにするとか。<br /><br />
<a href="http://shokai.org/archive/cs2.0/0801_FlickrAPI/FlickrAPI/FlickrUploadTest/FormFlickrUpload.cs">FormFlickrUpload.cs</a></p>
</p>
<blockquote><p><p>using System;<br /><br />
using System.Collections.Generic;<br /><br />
using System.ComponentModel;<br /><br />
using System.Data;<br /><br />
using System.Drawing;<br /><br />
using System.Text;<br /><br />
using System.Windows.Forms;<br /><br />
using System.IO;<br /><br />
using System.Threading;</p>
<p>using FlickrNet;</p>
<p>namespace FlickrUploadTest<br /><br />
{<br /><br />
public partial class FormFlickrUpload : Form<br /><br />
{<br /><br />
private Flickr flickr;<br /><br />
private String flickr_apikey = &#8220;cce8e143a8b4fd19c1e4026909643c67&#8243;;<br /><br />
private String flickr_secret = &#8220;5b58a24a5826ce2a&#8221;;<br /><br />
private String flickr_frob;<br /><br />
private String fileName;<br /><br />
/// <summary><br /><br />
/// Uploadするファイル<br /><br />
/// </summary><br /><br />
public String FileName<br /><br />
{<br /><br />
get<br /><br />
{<br /><br />
return this.fileName;<br /><br />
}<br /><br />
set<br /><br />
{<br /><br />
if (!new FileInfo(value).Exists) return;<br /><br />
panelDD.BackgroundImage = Image.FromFile(value);<br /><br />
this.fileName = value;<br /><br />
buttonUpload.Enabled = true;<br /><br />
}<br /><br />
}<br /><br />
private Auth auth;<br /><br />
private Thread threadUpload;</p>
<p>public FormFlickrUpload()<br /><br />
{<br /><br />
InitializeComponent();<br /><br />
buttonUpload.Enabled = false;<br /><br />
progressBar.Visible = false;<br /><br />
panelDD.AllowDrop = true;</p>
<p>flickr = new Flickr();<br /><br />
flickr.ApiKey = flickr_apikey;<br /><br />
flickr.ApiSecret = flickr_secret;<br /><br />
flickr_frob = flickr.AuthGetFrob();</p>
<p>System.Diagnostics.Process.Start(flickr.AuthCalcUrl(flickr_frob, AuthLevel.Write)); // 認証画面をブラウザで開く</p>
<p>flickr.OnUploadProgress += new Flickr.UploadProgressHandler(flickr_OnUploadProgress);<br /><br />
}</p>
<p>private void buttonGetToken_Click(object sender, EventArgs e)<br /><br />
{<br /><br />
try<br /><br />
{<br /><br />
auth = flickr.AuthGetToken(flickr_frob);<br /><br />
flickr.AuthToken = auth.Token;<br /><br />
buttonGetToken.Visible = false;<br /><br />
groupBoxDrop.Text = &#8220;Drop Photo here&#8221;;<br /><br />
if (auth.User.Username != null) Text = &#8220;Flickr Upload Test &#8211; &#8221; + auth.User.Username;<br /><br />
else Text = &#8220;Flickr Upload Test &#8211; &#8221; + auth.User.UserId;<br /><br />
}<br /><br />
catch (FlickrApiException ex)<br /><br />
{<br /><br />
Console.WriteLine(ex.Message);<br /><br />
}<br /><br />
}</p>
<p>#region Drag and Drop<br /><br />
private void panelDD_DragEnter(object sender, DragEventArgs e)<br /><br />
{<br /><br />
if (e.Data.GetDataPresent(DataFormats.FileDrop))<br /><br />
e.Effect = DragDropEffects.All;<br /><br />
else<br /><br />
e.Effect = DragDropEffects.None;<br /><br />
}</p>
<p>private void panelDD_DragDrop(object sender, DragEventArgs e)<br /><br />
{<br /><br />
string[] items = (string[])e.Data.GetData(DataFormats.FileDrop, false);<br /><br />
FileName = items[0]; // 1つ目のファイル<br /><br />
}<br /><br />
#endregion</p>
<p>#region Upload<br /><br />
private void buttonUpload_Click(object sender, EventArgs e)<br /><br />
{<br /><br />
if (FileName == &#8220;&#8221;) return;<br /><br />
buttonUpload.Enabled = false;<br /><br />
panelDD.AllowDrop = false;<br /><br />
progressBar.Visible = true;<br /><br />
progressBar.Maximum = (int)(new FileInfo(this.FileName).Length/1000);<br /><br />
try<br /><br />
{<br /><br />
Photo p = new Photo();<br /><br />
threadUpload = new Thread(delegate()<br /><br />
{<br /><br />
p.PhotoId = flickr.UploadPicture(fileName, &#8220;test photo&#8221;, &#8220;これはてすとです&#8221;, &#8220;test,uploadertest&#8221;);<br /><br />
p.UserId = auth.User.UserId;<br /><br />
System.Diagnostics.Process.Start(p.WebUrl);<br /><br />
this.Invoke((MethodInvoker)delegate()<br /><br />
{<br /><br />
buttonUpload.Enabled = true;<br /><br />
panelDD.AllowDrop = true;<br /><br />
progressBar.Visible = false;<br /><br />
});<br /><br />
});<br /><br />
threadUpload.Start();<br /><br />
}<br /><br />
catch (FlickrApiException ex)<br /><br />
{<br /><br />
Console.WriteLine(ex.Message);<br /><br />
buttonUpload.Enabled = true;<br /><br />
}<br /><br />
}</p>
<p>void flickr_OnUploadProgress(object sender, UploadProgressEventArgs e)<br /><br />
{<br /><br />
if (e.UploadComplete) // アップロード完了<br /><br />
{<br /><br />
this.Invoke((MethodInvoker)delegate()<br /><br />
{<br /><br />
progressBar.Value = 0;<br /><br />
});<br /><br />
}<br /><br />
else<br /><br />
{<br /><br />
this.Invoke((MethodInvoker)delegate()<br /><br />
{<br /><br />
progressBar.Value = e.Bytes / 1000;<br /><br />
});<br /><br />
}<br /><br />
}<br /><br />
#endregion</p>
<p>private void FormFlickrUpload_FormClosed(object sender, FormClosedEventArgs e)<br /><br />
{<br /><br />
if(threadUpload != null) threadUpload.Abort(); // スレッド強制終了<br /><br />
}</p>
<p>}<br /><br />
}</p></p></blockquote>
<p>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1482/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# &#8211; Flickr.NETでtag検索</title>
		<link>http://shokai.org/blog/archives/1481</link>
		<comments>http://shokai.org/blog/archives/1481#comments</comments>
		<pubDate>Sun, 13 Jan 2008 17:30:11 +0000</pubDate>
		<dc:creator>moblog</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Flickr.NET]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[VS2005]]></category>

		<guid isPermaLink="false">http://shlog.sakura.ne.jp/blog/?p=1481</guid>
		<description><![CDATA[Flickr.NETという.NET Framework用のライブラリを使って、Flickr APIからタグ検索してみた。2年ぐらい前に使った時より、dllのファイルサイズが1.5倍に増えててた。 できたもの => Arc [...]]]></description>
			<content:encoded><![CDATA[<p>
<p><a href="http://www.codeplex.com/FlickrNet">Flickr.NET</a>という.NET Framework用のライブラリを使って、Flickr APIからタグ検索してみた。2年ぐらい前に使った時より、dllのファイルサイズが1.5倍に増えててた。</p>
<p>できたもの => <a href="http://shokai.org/archive/cs2.0/0801_FlickrAPI/">Archive</a><br /><br />
<a title="using Flickr.NET by shokai, on Flickr" href="http://www.flickr.com/photos/shokai/2188281686/"><img src="http://farm3.static.flickr.com/2350/2188281686_8713b5eb04_o.png" alt="using Flickr.NET" width="473" height="416" /></a></p>
<p>■dllを手に入れる<br /><br />
<a href="http://www.codeplex.com/FlickrNet">FlickrNet API Library &#8211; Home</a><br /><br />
[Release]から2.1.5をダウンロードしてきた。<br /><br />
んで、[参照の追加]でリンクして、</p>
</p>
<blockquote><p><p>using FlickrNet;</p></p></blockquote>
<p>
<p>する。</p>
<p>■API keyを手に入れる<br /><br />
<a href="http://flickr.com/services/api/keys/">Flickr Services</a>からAPI keyを手に入れないといけない。メールアドレスを登録してすぐ発行してもらえる。<br /><br />
今回は「デスクトップアプリ用」を選択。<br /><br />
（検索だけなら、secretとtokenを使ってoAuthで認証する必要は無い）</p>
<p>■プログラムを書く<br /><br />
<a href="http://www.flickr.com/services/api/">Flickr API</a>のラッパーなので、基本的な仕様はFlickr APIの方を見た方が良い。<br /><br />
今回は<a href="http://www.flickr.com/services/api/flickr.photos.search.html">flickr.photos.search</a>を叩いてみた。</p>
<p>まずFlickrというクラスが全ての根になっている</p>
</p>
<blockquote><p><p>using FlickrNet;<br /><br />
Flickr flickr = new Flickr(&#8220;your-api-key&#8221;);</p></p></blockquote>
<p>
<p>flickr.photos.searchでは色々なパラメータを渡すが、Flickr.NETではPhotoSearchOptionsクラスで集約されている。今回はタグだけでeveryoneから検索するのでこれだけだけど、もっと色々パラメータが指定できる。</p>
</p>
<blockquote><p><p>PhotoSearchOptions opt = new PhotoSearchOptions();<br /><br />
opt.Tags = &#8220;food, sfc&#8221;;<br /><br />
opt.TagMode = TagMode.AllTags;<br /><br />
Photos photos = flickr.PhotosSearch(opt); // 検索</p></p></blockquote>
<p>
<p>Photosクラスで返ってきた結果からURLを取り出して、表示する。<br /><br />
PictureBox.Imageにストリームから読み込ませるための関数 DownloadPicture(&#8220;URL&#8221;) を利用してダウンロードする。</p>
</p>
<blockquote><p><p>Photo p = photos.PhotoCollection[0]; // 1枚目<br /><br />
pictureBox.Image = Image.FromStream(flickr.DownloadPicture(p.MediumUrl));<br /><br />
textBoxPhotoUri.Text = p.WebUrl;</p></p></blockquote>
<p>
<p><span id="more-1481"></span></p>
<p>今回のメインクラス => <a href="http://shokai.org/archive/cs2.0/0801_FlickrAPI/FlickrAPI/FlickrDotNetTest/FormFlickrSearch.cs">FormFlickrSearch.cs</a></p>
</p>
<blockquote><p><p>using System;<br /><br />
using System.Collections.Generic;<br /><br />
using System.ComponentModel;<br /><br />
using System.Data;<br /><br />
using System.Drawing;<br /><br />
using System.Text;<br /><br />
using System.Windows.Forms;<br /><br />
using System.IO;<br /><br />
using System.Net;</p>
<p>using FlickrNet;</p>
<p>namespace FlickrDotNetTest<br /><br />
{<br /><br />
public partial class FormFlickrDotNetTest : Form<br /><br />
{<br /><br />
private Flickr flickr;<br /><br />
private String flickr_apikey = &#8220;17bd602a83ec433b0ed9fafd93549e1a&#8221;;<br /><br />
private Photos photos;<br /><br />
private int index;</p>
<p>public FormFlickrDotNetTest()<br /><br />
{<br /><br />
InitializeComponent();</p>
<p>buttonNext.Enabled = false;<br /><br />
buttonPrev.Enabled = false;<br /><br />
index = 0;</p>
<p>flickr = new Flickr(flickr_apikey);<br /><br />
}</p>
<p>public void reloadPhoto()<br /><br />
{<br /><br />
try<br /><br />
{<br /><br />
Photo p = photos.PhotoCollection[index];<br /><br />
pictureBoxResult.Image = Image.FromStream(flickr.DownloadPicture(p.MediumUrl));<br /><br />
textBoxPhotoUri.Text = p.WebUrl;<br /><br />
this.Text = &#8220;Flickr Search Test (&#8221; + index + &#8220;/&#8221; + photos.PhotoCollection.Length + &#8220;)&#8221;;<br /><br />
if (index < 1) buttonPrev.Enabled = false;<br /><br />
else buttonPrev.Enabled = true;<br /><br />
if (index >= photos.PhotoCollection.Length &#8211; 1) buttonNext.Enabled = false;<br /><br />
else buttonNext.Enabled = true;<br /><br />
}<br /><br />
catch (Exception ex)<br /><br />
{<br /><br />
Console.WriteLine(ex.Message);<br /><br />
}<br /><br />
}</p>
<p>private void buttonLoad_Click(object sender, EventArgs e)<br /><br />
{<br /><br />
buttonLoad.Enabled = false;<br /><br />
textBoxTags.Enabled = false;<br /><br />
PhotoSearchOptions opt = new PhotoSearchOptions();<br /><br />
opt.Tags = textBoxTags.Text;<br /><br />
opt.TagMode = TagMode.AllTags;<br /><br />
photos = flickr.PhotosSearch(opt);</p>
<p>index = 0;<br /><br />
reloadPhoto();<br /><br />
buttonLoad.Enabled = true;<br /><br />
textBoxTags.Enabled = true;<br /><br />
}</p>
<p>private void buttonPrev_Click(object sender, EventArgs e)<br /><br />
{<br /><br />
index&#8211;;<br /><br />
reloadPhoto();<br /><br />
}</p>
<p>private void buttonNext_Click(object sender, EventArgs e)<br /><br />
{<br /><br />
index++;<br /><br />
reloadPhoto();<br /><br />
}</p>
<p>private void textBoxTags_TextChanged(object sender, EventArgs e)<br /><br />
{<br /><br />
if (textBoxTags.Text == &#8220;&#8221;) buttonLoad.Enabled = false;<br /><br />
else buttonLoad.Enabled = true;<br /><br />
}<br /><br />
}<br /><br />
}</p></p></blockquote>
<p>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/1481/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

