寫了一個script來備份picasa album, source在這

基本上應該可以備份你有權限看到的, 只是目前還有點bug, 已知的bug是針對沒設定file name的photo會有問題

使用方式是, 在跟這個script同一目錄下建一個 conpig.py 內容是:

email = ’[email protected]

password = ‘yourpassword’

用Browser找到你要備份的相簿, copy下URL (URL格式大多像是這樣: https://picasaweb.google.com/12223123123213/kKNvm )

然後執行 python pgrab.py album_URL 

這樣就可以了 (必須要有安裝python gdata module才可以執行)

Bug以後再改….

用了Google+之後就有種感覺…Flickr總有一天會撐不下去的, 但我在Flickr五年來已經放有數千張照片了呀~~因此萌生了搬家的念頭, 至少多一個避風頭的地方

找了找, 似乎好像沒有一個好的工具…..加上這幾天學到了一句話, 想奉為座右銘: “How hard it is”…其實想想也不會很難啦…所以DIY DIY一下應該就有了

這個東西還可以順便驗證Google說的:

Free storage limits

Photos up to 2048 x 2048 pixels and videos up to 15 minutes won’t count towards your free storage.

Automatic resizing

All photos uploaded in Google+ will be automatically resized to 2048 pixels (on their longest edge) and won’t count towards your free storage quota.

第一點, 那是對的….不過第二點, 實在是騙人, 我把Flickr上的原始大小的圖往Picasa塞, 果然還是碰到塞爆的狀況了, 所以這次要release的這個版本就是會先resize到2048再上傳

看來看去Python最簡單, 事實上我也花一個多小時就而已, 不過太久沒寫, 我也不常寫, 不是跟他很熟, 就寫得不是很漂亮

Source code 底家啦!!

首先, 你必須要有:

  1. Beej’s Python Flickr API : “easy_install flickrapi” 安裝即可
  2. Gdata API : “easy_install gdata” 安裝
  3. Python Imaging Library (PIL) : “easy_install pil” (不過mac Leopard下, 用原本的python會裝不起來)
  4. Flickr API key : 請自行去 http://www.flickr.com/services/api/ 申請一把
  5. Gmail account (就Picasa account)

如果在Mac Leopard下, 建議用MacPort的Python2.6

使用方法:

  1. 在config.py內, 把API key, API secret以及Gmail的帳號密碼設定好
  2. 用python flickr_listsets.py 列出你帳號下所有的Photo sets, 以及他們的photoset_id
  3. 用python flickr2picsa.py photoset_id即可搬家了, 如果要一次搬多個photo sets就指定多個, 用空白隔開即可

Ok, 就寫到這, 這只是私用的小工具, 沒寫的很好, 不過目前應該夠我用了, 很歡迎有高手可以改造.. :P

    前篇提到利用CutyCapt來產生Web page thumbnail, 不過畢竟CutyCapt是C++寫的, build出來也是一個執行檔, 寫完上一篇就有股衝動想用PyQt來做, 反正一樣可以利用Qt/WebKit, 原理應該相同的

    沒想到, 真的那麼簡單, 只用了二十幾行code就可以辦到了

    這邊主要利用到的一個class就是 QWebPage , 透過這個class我們就可以很簡單的達成這任務

    為了程式的重複利用性, 我把它包裝成一個class PageRender:

    class PageRender(QObject):

        def __init__(self, url, outfile, scale):

           QObject.__init__(self)

           self.outfile = outfile

           self.scale = scale

           self.web = QWebPage()

           self.web.mainFrame().load(QUrl(url))

           self.connect(self.web, SIGNAL(“loadFinished(bool)”) ,self.loadFinished)

        def loadFinished(self, b):

            print “load finished”

            self.web.setViewportSize(self.web.mainFrame().contentsSize())

            image = QImage(self.web.viewportSize(), QImage.Format_ARGB32);

            painter = QPainter(image)

            self.web.mainFrame().render(painter)

            painter.end()

            thumbnail = image.scaledToWidth(self.scale)

            thumbnail.save(self.outfile)

            app.exit(0)

     在Constructor那邊做的就是把loadFinished跟我們實際處理save to thumbnail的function connect在一起

    而在loadFinished那邊就是實際render到image的部份, 這邊要注意的是:

    self.web.setViewportSize(self.web.mainFrame().contentsSize())

    這是把QWebPage的View port size設成跟實際content一樣大, 後面接著我們就可以建立QImage跟其相對映的painter, 然後用QWebFrame的"render()“把它實際輸出到image

    最後scale到我們想要的大小(pixels)

    這邊是一個實際call它的範例:

    p = PageRender("http://www.yahoo.com.tw”, “sssss.png”, 200)

    結果:

    實際的程式可以在此下載

    這是兩年前用PyQt寫的一個簡單的查詢Google map的程式, 是以Google static map API達成的, 當時是拿來當練Python的

    本來有寫了一兩篇blog文章, 不過之前碰到大災難, 所以文章都不見了, 後來居然讓我在自己的Facebook note看到(Facebook真是充滿驚奇呀!), 就再去把code挖出來

    懶得再把以前的文章復原, 也懶得一一解釋了

    source code在這邊

    其實也不用拿source自己編, 用MacPort就可了, 很簡單:

    install PyQt4:

    sudo port install py26-pyqt4

    install Py-gtk

    sudo port install py26-gtk