2014年1月31日星期五

GapView - Google+ & Picasa Viewer

今天是農曆大年初一,先說一聲新年快樂。
順道放上一個近期的作品,名稱叫做GapView,是一個Google+ Album和Picasa Album的Viewer軟件。
其實大半年前已經著手開始,不過未真正去完成。
現在完成度較高的版本已經完成,所以放出來給大家使用。

我自己對Picasa相簿使用度是很重的,有幾十本相簿,大概已經有5本相簿含超過800張相片。
若使用網頁介面,操作很慢,複製連結亦要一張一張去做,很花時間。
很可惜官方的Picasa軟件介面我實在覺得不好用,而且亦沒有複製連結這個功能。

所以這個軟件的目的就是可以讓你快速選擇相片,並複雜連結做Html或BBCode。
對好像我經常貼圖上討論區或者寫Blog的人都會很方便。

技術上,這次使用WPF的MVVM Pattern去設計軟件,是一個新嘗試。

使用方法很簡單,把Google ID加進我的最愛列表,程式就會自動列出相簿。
而Google ID取得方法就是網址後的數字。
https://plus.google.com/photos/113129480538907711691
https://picasaweb.google.com/113129480538907711691

Google Login方面,軟件使用Google OAUTH2登入,用途是看自己的Private權限相簿。
如果你的相簿沒有設權限或者觀看其他人的相簿,便不需要登入。
軟件以唯讀形式經Http連結讀取,我不會對你的圖片做任何操作。

有疑問可以留言問我。

GapView 1.0下載
http://goo.gl/0tm3ph
需要.NET Framework 4.5

程式截圖:

11 則留言:

  1. 太強大了,很不錯的軟體,利馬來用看看

    回覆刪除
  2. 版主 能不能求助?

    到底要如何用OAuth2.0 与 Picasa 配合呢?
    Picasa到现在还没更新接口,只有AuthSub 和 ClientLogin..
    跪求大神 谢谢!

    回覆刪除
    回覆
    1. 接通Google 的OAuth,其實已經等同接通Picasa,是同一樣東西。因為現在的Picasa等於Google Plus相簿

      刪除
    2. 大大 现在得空帮我么?

      已经用Google.Apis.Auth.OAuth2 下的UserCredential 获得Access Token了
      然后以PicasaService 的 SetAuthenticationToken 设置Token(Oauth 传回来的token)
      但是创建AlbumQuery时却出错了: Execution of request failed

      PS: 大大有木有Facebook 还是什么的 比较容易联络?

      刪除
    3. 我這個程式是用REST方式運作的, 你提及的PicasaService是不是第三方的Library?

      刪除
    4. 在這裡談好一點,個人Facebook不方便.

      刪除
    5. NuGet 上的
      Picasa 是这一个:https://www.nuget.org/packages/Google.GData.Photos/
      OAuth2.0 是:https://www.nuget.org/packages/Google.Apis/ 和 https://www.nuget.org/packages/Google.Apis.Auth/


      PS:这里没能放截图啊..

      刪除
    6. 我的代码差不多是这样的:

      FileDataStore fds = new FileDataStore("AppName");
      UserCredential uc;
      ClientSecrets cs = new ClientSecrets()
      {
      ClientId = "CLIENTID",
      ClientSecret = "CLIENTSECRET"
      };

      uc = GoogleWebAuthorizationBroker.AuthorizeAsync(
      cs,
      new[] { @"https://picasaweb.google.com/data/" },
      "user",
      CancellationToken.None,
      fds).Result;

      PicasaService ps = new PicasaService("AppName-Company-v1");
      ps.setUserCredentials(txtUsername.Text, txtPass.Text);

      Console.WriteLine(uc.Token.AccessToken);

      ps.SetAuthenticationToken(uc.Token.AccessToken);
      Console.WriteLine(PicasaQuery.CreatePicasaUri(txtUsername.Text));

      AlbumQuery aq = new AlbumQuery(PicasaQuery.CreatePicasaUri(txtUsername.Text));

      PicasaFeed pf = ps.Query(aq); //ERROR

      pf.Entries.ToList().ForEach(delegate(AtomEntry item)
      {
      Album a = new Album();
      a.AtomEntry = item;
      Console.WriteLine(a.Id + " " + item.Title.Text);
      });

      刪除
    7. 因為我係用最原生的Google REST API,而唔經第三方Library.
      但我會建議你print PicasaQuery.CreatePicasaUri(txtUsername.Text) 做string睇一睇條URL係咪正確.

      刪除