zhaohua 發表於 2013-9-23 21:08

[2個程式分享含原始程式碼]-Flickr照片上傳和照片貼圖URL複...

本文章最後由 zhaohua 於 2014-8-3 12:17 編輯

軟體1====================== FlickrEasyUpload ======================
小弟的照片都是放在Flickr,寫部落格或是在其它論壇分享(Canon Fans也是)照片都是透過Flickr
之前都是用Friendly.Flickr這套軟體,有在用Flickr的人應該也都知道這隻搖擺天枰前輩寫的軟體吧
其實Friendly.Flickr這套軟體已經非常好用了,只是現在天枰大已經沒在更新了,不過到目前為止Friendly.Flickr都還能正常使用中

後來是想說自己也來練習寫看看類似功能的小程式(當然功能和界面的人性化程度都只是幼稚園等級的啦),只是因為之前都是寫VB的程式,所以用C#開發winform的程式還真是一整個不習慣
中間也遇到很多問題,一遇到問題就上網問人找答案,目前總算完成比較基本的功能了

其實要說什麼功能好像也還好,基本上只是符合小弟當初自己的需求
1‧上傳本機照片(JPG檔)到即有的相片集或是新建立的相片集(相片可先變更是否要公開)
2‧搜尋目前選擇的相片集裡的所有照片
3‧複製從該相片集裡被選取的所有照片網址,並依照要貼上的部落格或是論壇的貼圖格式還有照片尺吋(寫部落格或貼文張可以一次把要的照片貼進去,文再慢慢寫)
大概就這樣,哈..................

程式有點亂,因為有時卡住就亂試一通,所以程式沒有什麼架構,也可能有些小bug(自己測試一下該修的都修了)

不過把程式碼放上來主要目的也只是讓想玩玩看Flickr API的初學者可以研究看看(高手前輩們看到本篇請直接按上一頁即可),要功能多的當然還是推薦天坪大的Friendly.Flickr那套軟體
當然也可以自行把它修改的更完整,反正程式碼也是拼拼湊湊的,因為我自己也是新手,有些程式也是google後貼上的,所以程式上面有什麼寫的比較奇怪或是考慮沒那麼周詳的地方就看看就好,不要砲小弟,小弟只是純分享,感謝啦~~~

p.s 程式第一次認證許可後會慢一點,因為要抓每個相片集的標題縮圖,所以相片集越多,第一次執行就會比較久,不過下面的Process Bar條會顯示進度就是了,第一次執行完後縮圖會存在temp目錄裡(按清除暫存檔的按鈕會將所有暫存圖刪掉喔),所以之後重新載入相片集就很快了,另外搜尋一個相片集裡的照片越多也是會越久喔

程式開發環境:VS 2010 C#(.Net framework 2.0以上版本)
FlickrEasyUpload執行檔 (解開後執行exe即可使用,但需安裝.Net framework 2.0或更新的版本喔)
FlickrEasyUpload原始程式碼下載 (不過要寫程式的記得要去Flickr申請APIkeys和APIsecret喔,總不能要我把我的給你吧)

http://farm8.staticflickr.com/7344/9896067295_5014b0d17f_o.jpg

軟體2====================== RAW檔刪除器 ======================
這個是之前有Canon Fans上的前輩寫了一個RAW檔刪除的軟體,不過source已經消失了,所以看到有些人在求檔,不過可能作者已經沒在看回文了
其實之前小弟也也寫過類似的軟體,不過後來電腦重灌後source和執行檔都不見了,後來就再重寫一個,這隻程式很簡單,所以應該不用多說了

這個小程式主要的功能就是能利用JPG檔去刪除不要的RAW檔,像我一般會拍JPG+RAW,回來後會用看圖軟體體(ACDSee之類的),將JPG快速瀏覽第一遍,把過亮或是過暗或是沒什麼內容的照片先刪去
然後再瀏覽第二遍,把重覆的照片留下自己覺的最好的那張,最後就用這個小程式去刪除那些被刪掉JPG同檔名的RAW檔,這樣就可以省去一個一個比對再刪除RAW的時間

程式裡RAW和JPG的副檔名都可以自己key in,所以可以用在其它家的RAW
另外如果RAW路徑不選的話,會預設直接以JPG的路徑為RAW的路徑,所以JPG和RAW檔可以是放在同一個路徑下,也可以是不同的路徑下
還有提供一個選項是用移動到backup目錄下的方式去刪RAW,這樣還有機會反悔,也可以事後把整個backup目錄刪了就好
其實要用RAW檔去刪JPG也是可以,只要把RAW和JPG欄位的裡key in的值對調就可以了

程式開發環境:VS 2005 C#(.Net framework 2.0)
RAW檔刪除器原始程式碼下載
RAW檔刪除器執行檔 (解開後執行exe即可使用,但需安裝.Net framework 2.0喔)

http://farm9.staticflickr.com/8058/8176141111_28e74dbbd0_o.jpg

有興趣的人可以自己研究XD

kisskenlin 發表於 2013-9-23 21:12

~謝謝分享~

雙胞胎爸 發表於 2013-9-23 21:15

CF裡真的是臥虎藏龍

owen7474 發表於 2013-9-23 21:28

很方便的軟體 感謝分享~

iamdc 發表於 2013-9-23 21:55


好厲害

dvchung 發表於 2013-9-23 21:55

太佩服了!

binglien 發表於 2013-9-23 23:21

好閒喔! 好有空喔!

我寫的 flickr0088 只能從 Eclipse 跑呢!

沒 UI

zhaohua 發表於 2013-9-24 21:46

回 binglien 的帖子

binglien:
好閒喔!   好有空喔!

我寫的 flickr0088 只能從 Eclipse 跑呢!  

沒 UI   images/back.gif

binglien大,小弟這個程式也是上網拼拼湊湊出來的,所以是靠大家的分享寫出來的
Java呀............小弟最近工作上也是接觸Java,真是難搞...............

剛剛再花了一點時間把一些讀取Flickr檔時,感覺視窗當在那裡的問題解覺了
還有小小優化一謝使用者等待時的提醒,有興趣的人可能要重新下載原始碼
另外執行檔也重新編譯過了

zhaohua 發表於 2013-9-24 22:02

回 dvchung 的帖子

dvchung: 太佩服了! (2013-09-23 21:55) images/back.gif

小弟也只是拼拼湊湊出來的啦

binglien 發表於 2013-9-25 00:12

回 zhaohua 的帖子

zhaohua:binglien大,小弟這個程式也是上網拼拼湊湊出來的,所以是靠大家的分享寫出來的
Java呀............小弟最近工作上也是接觸Java,真是難搞...............

剛剛再花了一點時間把一些讀取Flickr檔時,感 .. (2013-09-24 21:46) images/back.gif

我本來六七年不寫程式了 從前都寫背景架構或通訊核心程式

GUI 都是屬下寫的 都快忘光光了

剛好新工作    部門人少 才幫忙下來寫一下才會回憶一下

只寫了 從 flickr 抓照片集變成 html 貼圖碼的功能而已就覺得好累

堪用就好

zhaohua 發表於 2013-9-25 01:35

回 binglien 的帖子

binglien:我本來六七年不寫程式了 從前都寫背景架構或通訊核心程式

GUI 都是屬下寫的 都快忘光光了

....... (2013-09-25 00:12) images/back.gif

看來binglien大大才是高手呀,佩服佩服

zhaohua 發表於 2013-9-25 02:15

回 zhaohua 的帖子

哈,大家都一樣是混口飯吃XD

kisskenlin 發表於 2013-9-25 16:46

您好~經研究之後發現下列的問題!看能不能共同研究看看!在享給CANONFANS網友們使用!
bug:
1.
GetPhotoURL_Click裡的
   imgXMLsyntax = new string[] { "," };
要改成
   imgXMLsyntax = new string[] { "", "" };
否則產生canonfans的貼圖碼會因錯誤導致程式當掉

2.
如果帳號裡沒有相片集的話,Combox_PhotoSet_init裡的
   comboBox_PhotoSet.SelectedIndex = 0;
這行會出錯,建議判斷comboBox_PhotoSet.Items.Count為0的時候就不執行此行

3.
radioButton1_CheckedChanged跟radioButton2_CheckedChanged裡也建議先判斷listView1.SelectedItems.Count是否為0否則若在沒有選取圖片的狀態下會出錯

4.
在UploadLocalPhoto裡
   NewPhotoset = Ctrl.CreatePhotoSet(comboBox_PhotoSet.SelectedItem.ToString().Split(SplitKey).Trim(), " ", UploadPhotoID);
這一行的第一個參數是要給新相片集一個名稱,但是在帳號裡沒有相片集的情況下comboBox_PhotoSet.SelectedItem是抓不到東西的


建議:
comboBox_PhotoSize跟comboBox_TargetWeb物件的DropDownStyle屬性建議改成DropDownList,防止使用者不小心改到ComboBox內容

希望這變的更好用!大家集思廣益吧!謝謝!

zhaohua 發表於 2013-9-25 20:43

回 kisskenlin 的帖子

1.
GetPhotoURL_Click裡的
複製代碼

       imgXMLsyntax = new string[] { "," };


要改成
複製代碼

       imgXMLsyntax = new string[] { "", "" };


否則產生canonfans的貼圖碼會因錯誤導致程式當掉

2.
如果帳號裡沒有相片集的話,Combox_PhotoSet_init裡的
   comboBox_PhotoSet.SelectedIndex = 0;
這行會出錯,建議判斷comboBox_PhotoSet.Items.Count為0的時候就不執行此行

3.
radioButton1_CheckedChanged跟radioButton2_CheckedChanged裡也建議先判斷listView1.SelectedItems.Count是否為0否則若在沒有選取圖片的狀態下會出錯

4.
在UploadLocalPhoto裡
   NewPhotoset = Ctrl.CreatePhotoSet(comboBox_PhotoSet.SelectedItem.ToString().Split(SplitKey).Trim(), " ", UploadPhotoID);
這一行的第一個參數是要給新相片集一個名稱,但是在帳號裡沒有相片集的情況下comboBox_PhotoSet.SelectedItem是抓不到東西的


建議:
comboBox_PhotoSize跟comboBox_TargetWeb物件的DropDownStyle屬性建議改成DropDownList,防止使用者不小心改到ComboBox內容


kisskenline大大真是感謝您的測試,當初還真沒想到要用沒有照片集的帳號去測試,結果這麼多小bug
第1,2,3和建議的部份已經修正,目前程式碼和執行檔已更新並重新放上連結

第4點的部份很奇怪,我dubug時,不管有沒有相片集,如過那段有放breakpoint的話就會出現錯誤(C# 函式評估已停用,因為前一個函式評估逾時)
但是breakpoint放在下一行那個新的相片集就會成功被建立,真是見鬼了
難怪當出測試都沒問題,因為我看NewPhotoset有回傳photosetID給我,而且完成上傳照片後,新相片集都正確的出現在Flickr上,所以目前使用編譯出來的執行檔跑是沒問題的

google這個錯誤訊息都不像我遇到的問題,難不成是Thread在搞鬼,看來這個問題又要困擾我一陣子了
繼續研究去~~~~

再次感謝Kisskenlin大的幫忙呀

bennett.tw 發表於 2013-9-27 10:37

z大你好
我是kisskenlin的同事
首先感謝z大大方提供原始碼
因為kisskenlin原本是請我幫他看第一點的問題
後來我稍微run了一下程式
加上我flickr帳號是有註冊但沒在使用
所以才會遇到那邊沒有相片集才會出現的bug
後來想說既然要改不如跟你回報
這樣也可以造福大家
anyway...我來說一下第四點的情況
希望你可以重現
就是開啟程式後,載入本機圖片,然後選擇幾張後,直接點上傳照片
我覺得,應該是我帳號沒有相片集之外,我也並沒有在程式裡先新增相片集才會導致這個錯誤(因為comboBox_PhotoSet的內容是空的)
再請你測試一下囉!
頁: [1] 2
查看完整版本: [2個程式分享含原始程式碼]-Flickr照片上傳和照片貼圖URL複...