アーカイブ

投稿者のアーカイブ

microSD Ubuntu壊れる

2009 年 4 月 30 日

ついに壊れました。

rw2rw1

とはいっても、microSDカード自体はまだ無傷ですが、カードのリーダ・ライタが逝きました。

USBケーブルの根元(本体との接合部分)が切れています。(下写真中央の黒い裂け目)

約6ヶ月間ほぼ毎日ケーブルを出し入れしていました。

90度ワイヤーを折り曲げて使用するタイプなので、耐久性については仕方がありません。

さっそく次期リーダ・ライタを調達しなければなりませんが、

今までのものがとてもコンパクトだったため、

同じ位の大きさのものがあるのか心配です。

yokoyama スタッフブログ

F-Spotなどで、重複インポートしてしまった画像を削除する

2009 年 4 月 23 日

デジカメなどで撮影した画像をアルバム化するツールとしてF-Spotは便利なのですが、

インポートの際に、誤って過去にインポートしたファイルをコピーインポートしてしまうと、

ファイルが重複してしまいます。

同じ年月日で、a.jpgと言うものがあったとすると、コピーインポートしてしまった結果、

a-1.jpgやa-2.jpgといったファイルができてしまいます。

そこで、 F-Spotのデータ全体をスキャンして、重複ファイルを削除するpythonスクリプトを作りました。

適当なファイル名を付けて保存し、読み込みと実行属性を付けてください。

#! /usr/bin/env python
# -*- coding:UTF-8 -*-
#
# 概要:
# f-spotなどで画像を重複で取り込んでしまったときに、
# 重複ファイルを削除する
#
# 処理内容:
#  -???というファイル名がある場合(???は1桁以上の数字)、
# それを取り除いたファイルが同じディレクトリに存在し、
# かつファイルサイズが同じなら削除する

# モジュールの読み込み
import re   # 正規表現用
import os   # ファイル・ディレクトリアクセス用
import sys  # コマンドライン引数の取得用

# 引数チェック
if len(sys.argv) < 2:
 print "usage: %s path" % sys.argv[0]
 quit()

# ディレクトリの存在チェック
rootpath = sys.argv[1]
if not os.access(rootpath, os.F_OK):
 print "dirctory %s is not found." % rootpath
 quit()

# ディレクトリ内を全走査
print "start"
for root, dirs, files in os.walk(rootpath):
 # ファイル名を得る
 for name in files:
 # -???.というファイル名を検索
 if re.search("-\d+\.", name) != None:
 print root, name
 path = os.path.join(root, name)
 # -???を削除したファイル名が存在するかチェック
 orgname = re.sub("-\d+\.", ".", name)
 orgpath = os.path.join(root, orgname)
 if os.access(orgpath, os.F_OK):
 # 元ファイルとファイルサイズが同じなら削除
 org_s = os.stat(orgpath)
 s = os.stat(path)
 if s.st_size == org_s.st_size:
 os.remove(path)
 print path, " is removed"
print "done"

引数にF-Spotの画像ルートディレクトリを指定すれば処理を行います。

yokoyama プログラム小技 , ,