パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

ubuntu exif情報から撮影日を取得してファイル名に付加

2018-09-11 | Python
docomoのガラケーで撮った画像、回転させたのはいいが撮影日がわからない。
ファイル名は連番でメモリがいっぱいになってファイルを削除すると、
困ったことにその空いた番号を探して追加していくので時系列がバラバラになってしまう。
ファイルを閲覧する時も。

これをなんとかしようとする。ガラケーを使っていて、ubuntuでこんなことをしようとするのは、
世界でもただ一人かもしれず、さらにカスタマイズしていてなんの役にも立たなそうな案件。

いろいろとはまったのでその情報だけでも
①identify -verbose ./filenameが追加情報を取得するコマンド
②python3でコマンド実行の結果を利用する場合、python2.7とは違ってsubprocessを利用する。
③コマンドは区切りごとに配列にしないといけない。result=subprocess.check_output(commandText.split(" "))
④結果はstrではなくbytes 改行は\n
⑤exif:UserComment:に日付情報が入っているが一般的ではなさそう

import os
import subprocess

def rename(filename):
    #JPGファイルのexif情報を取得
    baseComm="identify -verbose ./filename"
    baseComm=baseComm.replace("filename",filename)
    #subprocess.check_outputのコマンドはスペースの区切りで配列化にしないといけない
    result=subprocess.check_output(baseComm.split(" "))
    #実行結果は
    for r in str(result).split("\\n"):
        #UserCommentに撮影日時の情報がカンマ区切りのchrコードとして入っているので文字列化
        if -1<r.find("exif:UserComment:"):
            adddate=""
            for n in r.replace("exif:UserComment:","").replace(" ","").split(","):
                if 0<int(n):
                    adddate+=chr(int(n))
            renameComm="mv ./filename ./adddate_filename"
            renameComm=renameComm.replace("filename",filename).replace("adddate",adddate)
            print(renameComm)
            os.system(renameComm)

#該当するファイル名を取得する
#絶対path取得(利用なし)
path=os.path.dirname(os.path.abspath(__file__))

fileNames = os.listdir("./")
for f in fileNames:
    #renameするファイル名には"270_"が先頭にある
    if f.find("270_")==0:
        rename(f)



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。