2009年9月17日 星期四

Get picasa web album list by c#

在 C# 要使用 picasa web album data api , 在下在完 google api 後, 記得 include 以下的 dll

  • Google Data API Access Control Library
  • Google Data API Core Library
  • Google Data API Extansions Library
  • Google Data API Picasa Library
下面這個 例子 就是 輸入 google 帳號和密碼後就可以取得所有的相簿清單

註1 、 其中要注意的就是 query 的用法, 預設 可以使用 "default" 來取得自己的相簿清單
但是可以取代成其他使用者,用這語法來找到你想知道的人的相簿(僅限於他公開或分享給你的)


例如 朋友的帳號為 xxxxx@gmail.com
FriendAccountName = "xxxxx";

語法可以 轉成
AlbumQuery query = new AlbumQuery(PicasaQuery.CreatePicasaUri(FriendAccountName));


註2 、 取得後 entry.FeedUri 可以取得 相簿的 uri 位址, 可利用這個位址取得在這相簿所有的圖片資訊

code 如下




/**
* @Name GetAlbumList
*
* Get album list from the picasa web album
*
* @param Account [in] - the google accpount
* @param Password [in] - the google accpount's password
*
*
*/
public void GetAlbumList(string Account, string Password)
{


/// Set Service
PicasaService service = new PicasaService("Get_Album_List");

/// Set Account and Password
service.setUserCredentials(Account, Password);

/// Set Query , default is the account user,
/// "default" can chang other user name to get other album (if that user set public or share with you)
AlbumQuery query = new AlbumQuery(PicasaQuery.CreatePicasaUri("default"));


/// Set proxy
GDataRequestFactory requestFactory = (GDataRequestFactory)service.RequestFactory;

IWebProxy iProxy = WebRequest.DefaultWebProxy;

WebProxy myProxy = new WebProxy(iProxy.GetProxy(query.Uri));

// /potentially, setup credentials on the proxy here
myProxy.Credentials = CredentialCache.DefaultCredentials;
myProxy.UseDefaultCredentials = true;
requestFactory.Proxy = myProxy;


/// Get feed
PicasaFeed feed = service.Query(query);


/// Get Album count
int count = feed.Entries.Count;
Console.WriteLine(count);


foreach (PicasaEntry entry in feed.Entries)
{
/// Get album title
string title = entry.Title.Text;
Console.WriteLine(title);

/// Get Album feed uri , by this uri can get the photo information in this album
string Uri = entry.FeedUri;
Console.WriteLine(Uri);

}

}



2 則留言:

路人甲 提到...

謝謝你的分享

不過好像要加上 service.SetAuthenticationToken(service.QueryAuthenticationToken()); 才能正常運作

另外請問
Set proxy
以下6行的功能是 ??
小弟對網路不熟 謝謝指導

Cc 提到...

嗯,service.SetAuthenticationToken(service.QueryAuthenticatio)
我在驗證看看

至於
Set proxy 以下六行是因為在公司有proxy 設定,所以必須透過那六行取的IE中的 proxy 設定, 為何是IE 因為我在寫這篇的電腦是windows 而且是 visual stduio 開發的