mieki256's diary



2012/06/14(木) [n年前の日記]

#2 [web] Picasaウェブアルバムにアップロードした画像をローカルにダウンロードしようとしてハマる

Picasaウェブアルバムにアップロードした画像を、アルバム単位(フォルダ単位)でダウンロードしようとしたら、方法が分からなくて困ったり。1ファイルずつ表示してダウンロードすることはできるらしいが…。何十枚もあったら、とてもやってられない。

調べたところ、Picasa (Picasaウェブアルバムじゃなくて、ローカルで動作するPicasaというアプリのほう) をインストールしないと、アルバム単位でダウンロードできないようで。…何だその仕様。呆れた。

たしか以前、Picasaをインストールした際は、バックグラウンドでゴソゴソとファイル検索してるから処理は重くなるわ、監視しないでほしいフォルダも平気で監視対象にするわで、ウンザリした記憶もあり。だから、できればインストールしたくない。しかし、それしか手が無いのでは仕方ない。

インストールして、アルバム単位でダウンロードしてみたが、ファイル名を見て目が点に。日本語ファイル名が全部文字化け。というか、おそらくはURLエンコードされた状態になっている。英語圏で作られているソフトだろうから、仕方ないのかなあ…。

解決策を調べてみたが見当たらず。1年前にバグ報告されているのにガン無視っぽい。ダメだこりゃ…。サービスもダメなら、ソフトもダメだ…。

仕方ないので、ファイル名を変換するRubyスクリプトを書いた。
#!/usr/bin/ruby -Ks
#
# Picasaでアルバムダウンロードした際に
# 文字化けしてしまったファイル名を
# 元に戻すRubyスクリプト.
#
# * 元に戻しきれない場合もある.
# * 場合によっては、リネーム後のファイル名が衝突して途中で止まるかも

require 'cgi'
require 'kconv'

flist = Array.new

Dir::foreach('.') {|f|
    next if File::ftype(f) != "file"
    next unless f =~ /\.(gif|png|jpg)$/
    if f.index("%") != nil
        # 文字化けしてそうなファイル名
        flist.push(f)
    end
}

flist.each {|f|
    fn = CGI.unescape(CGI.unescape(f))
    fn = fn.tosjis
    errfg = FALSE
    begin
        errfg = File.exist?(fn)
    rescue
        errfg = TRUE
    end
    
    if errfg
        # 既にリネーム後のファイル名が存在するか、存在チェックすらできなかった
        puts "Error : " + fn
    else
        File.rename(f, fn)
        puts fn
    end
}
カレントフォルダ内の gif,png,jpgファイルに対して、URLデコード(?)してファイル名をリネームするスクリプト。しかし、ある程度はそれらしくリネームできたけど、一部のファイル名が正しいファイル名に戻ってくれない。かなりあてにならない。が、手作業で全部直すよりマシかなと。おかしなファイル名だけ、手作業でリネームして済ませた。

とりあえず、今後は、Picasaウェブアルバムも、Picasaも、使わないことにしたい。アップロードはすんなり出来るけど、ダウンロードは面倒臭いなんて、性質が悪いように思う。まるでブラックホールじゃないか。

以上です。

過去ログ表示

Prev - 2012/06 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project