# ATPhotoのEXIF情報をふぃるたりんぐ(取りあえずDSCのやつだけ) #### Define Function ##### def get_src_item( src_dict, name ) : return src_dict.get( name, 'None' ) def set_tgt_item( tgt_dict, name, val, chgdict='None' ) : setval = val if (chgdict != 'None') and (setval != 'None') : setval = chgdict.get( val, val ) if setval != 'None' : tgt_dict[name] = setval #### Define Function ##### new_data = {} #にほんごへんかんてーぶる(必殺ゴリ押しろじっくw) ### WhiteBalance Dict ### WhiteBalance_TAGS={ #Common 'Auto' : '自動', #Nikon,Casio,FUJI,Canon 'Cloudy' : '曇り', #Nikon,FUJI,Canon 'Daylight' : '太陽光', #Nikon,FUJI,Casio 'Custom' : 'カスタム', #FUJI,Canon 'Tungsten' : '電球', #Casio,Canon 'Fluorescent' : '蛍光灯', #Nikon,Casio,Canon 'Shade' : '日陰', #Casio,Canon 'Incandescent': '電球', #Nikon,FUJI #NIKON 'Preset' : 'プリセット', 'Speed Light' : 'ストロボ', #Casio 'Manual' : 'マニュアル', #FUJIFILM 'DaylightColor-Fluorescent' : '昼光色蛍光灯', 'DaywhiteColor-Fluorescent' : '昼白色蛍光灯', 'White-Fluorescent' : '白色蛍光灯', #CANON 'Sunny' : '晴天', 'Flash' : 'ストロボ', 'B&H' : '白黒', 'K' : 'K', 'Fluoresent H' : '蛍光灯H', 'InWater' : '水中', } ### Flash Dict ### Flash_TAGS={ 'No' : '発光禁止', 'Fired' : '発光', 'Fill Fired' : '発光', 'Off' : '非発光', 'Auto Off' : '自動非発光', 'Auto Fired' : '自動発光', #上記以外はメドイのでやんない } ### FlashSetting Dict for Nikon ### # Asciiなのでやんない ### FlashMode Dict for CASIO,FUJI,CANON ### FlashMode_MAKER_TAGS={ #COMMON 'Auto' : '自動', 'On' : 'ON', 'Off' : 'OFF', 'Red Eye Reduction' : '赤目軽減', #CANON 'Flash Not Fired' : '非発光', 'Slow Synchro' : 'スローシンクロ', 'Auto + Red Eye Reduction' : '自動(赤目軽減)', 'On + Red Eye Reduction' : 'ON(赤目軽減)', 'external flash' : '外部フラッシュ' } ### FlashIntensity Dict for CASIO ### FlashIntensity_CASIO_TAGS={ 'Weak' : '弱', 'Normal' : '普通', 'Strong' : '強' } ### FlashDetails Dict for Canon ### FlashDetails_CANON_TAGS={ 'External E-TTL' : '外部E-TTL', 'Internal Flash' : '内蔵フラッシュ', 'FP Sync Used' : 'FPシンクロ使用', '2nd("Rear")-Curtain Sync Used' : '2nd("Rear")-Curtain Sync Used', 'FP Sync Enabled' : 'FPシンクロ可' } ### ExposureProgram Dict ### ExposureProgram_TAGS={ 'Unidentified' : '未定義', 'Manual' : 'マニュアル', 'Program Normal' : '通常プログラム', 'Aperture Priority' : '絞り優先', 'Shutter Priority' : 'シャッター速度優先', 'Program Creative' : '低速プログラム', 'Program Action' : '高速プログラム', 'Portrait Mode' : 'ポートレート', 'Landscape Mode' : '風景' } ### ExposureProgram(MakerNote) Dict for All ### ExposureProgram_MAKER_TAGS={ #COMMON 'Portrait' : 'ポートレート', 'Landscape' : '風景', #CASIO(RecordingMode) 'Single Shutter' : 'シングル', 'Panorama' : 'パノラマ', 'Night Scene' : '夜景', #FUJI(PictureMode) 'Auto' : '自動', 'Sports' : 'スポーツ', 'Night' : '夜景', 'Program AE' : 'プログラム', 'Aperture Priority AE' : '絞り優先', 'Shutter Priority AE' : 'シャッター速度優先', 'Manual Exposure' : 'マニュアル', #CANON(ExposureMode) 'Easy Shooting' : 'イメージセレクト', 'Program' : 'プログラム', 'Tv-priority' : 'シャッター速度優先', 'Av-priority' : '絞り優先', 'Manual' : 'マニュアル', 'A-DEP' : '自動被写界深度' } ### EasyShootingMode Dict for CANON ### EasyShootingMode_CANON_TAGS={ 'Full Auto' : 'フルオート', 'Manual' : 'マニュアル', 'Landscape' : '風景', 'Fast Shutter' : '高速シャッター', 'Slow Shutter' : 'スローシャッター', 'Night' : '夜景', 'B&W' : '白黒', 'Sepia' : 'セピア', 'Portrait' : 'ポートレート', 'Sports' : 'スポーツ', 'Macro/Close-Up' : 'マクロ', 'Pan Focus' : 'パンフォーカス', 'Prohibit Flash' : 'ストロボ発光禁止', 'Super Macro' : 'スーパーマクロ', 'Night Snap' : 'ナイトスナップ', 'Still Image' : 'スチルイメージ' } ### MeteringMode Dict (Add CANON) ### MeteringMode_TAGS={ 'Unidentified' : '未定義', 'Average' : '平均測光', 'CenterWeightedAverage' : '中央重点', 'Spot' : 'スポット', 'MultiSpot' : '多点スポット', 'MultiSegment' : 'マルチセグメント', 'Partial' : '部分測光', 'Other' : 'その他', #CANON 'Evaluative' : '評価測光', 'Partial' : '中央部部分測光', 'Center-weighted' : '中央部重点平均測光' } ### FocusMode Dict for All ### FocusMode_MAKER_TAGS={ #NIKON(Asciiなのでやんない) #CASIO 'Macro' : 'マクロ', 'Auto Focus' : 'AF', 'Manual Focus' : 'MF', 'Infinity' : '無限遠', #FUJI 'Auto' : 'AF', 'Manual' : 'MF', #CANON 'One-Shot' : 'ONE SHOT AF', 'AI Servo' : 'AI SERVO AF', 'AI Focus' : 'AI FOCUS AF', 'MF' : 'MF', 'Single' : '単体AF', 'Continuous' : '連続AF' } ### ContinuousDriveMode Dict for CANON ### ContinuousDriveMode_CANON_TAGS={ 'Single Or Timer' : '1コマ撮影', 'Continuous' : '連続撮影', 'Self Timer' : 'タイマ', 'SpeedPriContinuous' : '速度優先連続', 'SlowContinuous' : '低速連続', 'FastContinuous' : '高速連続' } # Initialize make = get_src_item( data, 'Image Make' ) # 機種名(Image Model) name = '機種名' set_tgt_item( new_data, name, get_src_item( data, 'Image Model' ) ) # 撮影日付(DateTime) name = '撮影日付' #tmp = get_src_item( data, 'Image DateTime' ) tmp = get_src_item( data, 'EXIF DateTimeOriginal' ) if tmp == 'None' : tmp = get_src_item( data, 'EXIF DateTime' ) set_tgt_item( new_data, name, tmp ) # シャッター速度(Tv) name = 'シャッター速度' tmp = get_src_item( data, 'EXIF ExposureTime' ) if tmp == 'None' : tmp = get_src_item( data, 'EXIF ShutterSpeedValue' ) if (tmp == 'None') and (make == 'Canon') : tmp = get_src_item( data, 'MakerNote ExposureTime' ) set_tgt_item( new_data, name, tmp ) # 絞り値(Av) name = '絞り値' tmp = get_src_item( data, 'EXIF FNumber' ) if tmp == 'None' : tmp = get_src_item( data, 'EXIF ApertureValue' ) if (tmp == 'None') and (make == 'Canon') : tmp = get_src_item( data, 'MakerNote ApertureValue' ) set_tgt_item( new_data, name, tmp ) # ISO(ISO) name = 'ISO' tmp = get_src_item( data, 'EXIF ISOSpeedRatings' ) if tmp == 'None' : if make in ('NIKON', 'NIKON CORPORATION') : tmp = get_src_item( data, 'MakerNote ISOSetting' ) if make == 'Canon': tmp = get_src_item( data, 'MakerNote ISO' ) set_tgt_item( new_data, name, tmp ) # 焦点距離(FocalLength) name = '焦点距離' set_tgt_item( new_data, name, get_src_item( data, 'EXIF FocalLength' ) ) # 露出補正値(ExposureBiasValue) name = '露出補正値' set_tgt_item( new_data, name, get_src_item( data, 'EXIF ExposureBiasValue' ) ) #ホワイトバランス(WhiteBalance) name = 'ホワイトバランス' tmp = get_src_item( data, 'MakerNote WhiteBalance' ) if (make == 'Canon') and (tmp == 'K') : tmp = "%s %s" % (get_src_item(data, 'MakerNote WBK'), tmp) set_tgt_item( new_data, name, tmp, WhiteBalance_TAGS ) #フラッシュ情報(Flash) name = 'フラッシュ' flash = data.get('EXIF Flash', 'None') set_tgt_item( new_data, name, flash, Flash_TAGS ) #機種別フラッシュ情報(MakerNote FlashInfo) if flash in ('Fired','Fill Fired','Auto Fired' ) : if make in ('NIKON', 'NIKON CORPORATION') : name = '発光設定' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashSetting' ) ) if make == 'Casio' : name = '発光モード' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashMode' ), FlashMode_MAKER_TAGS ) name = '発光強度' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashIntensity' ), FlashIntensity_CASIO_TAGS ) if make == 'FUJIFILM': name = '発光モード' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashMode' ), FlashMode_MAKER_TAGS ) name = '発光補正値' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashStrength' ) ) if make == 'Canon': name = '発光モード' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashMode' ), FlashMode_MAKER_TAGS ) name = 'フラッシュ詳細' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashDetails' ), FlashDetails_CANON_TAGS ) name = '発光補正値' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote FlashBias' ) ) # 露出制御モード(ExposureProgram) name = '露出制御モード' tmp = get_src_item( data, 'EXIF ExposureProgram' ) if tmp == 'None' : if make == 'Casio' : set_tgt_item( new_data, name, get_src_item( data, 'MakerNote RecordingMode' ), ExposureProgram_MAKER_TAGS ) if make == 'FUJIFILM': set_tgt_item( new_data, name, get_src_item( data, 'MakerNote PictureMode' ), ExposureProgram_MAKER_TAGS ) if make == 'Canon': tmp = get_src_item( data, 'MakerNote ExposureMode' ) if tmp == 'Easy Shooting' : mode = get_src_item( data, 'MakerNote EasyShootingMode' ) tmp = "%s(%s)" % (ExposureProgram_MAKER_TAGS.get(tmp, tmp), EasyShootingMode_CANON_TAGS.get(mode,mode) ) set_tgt_item( new_data, name, tmp ) else : set_tgt_item( new_data, name, tmp, ExposureProgram_MAKER_TAGS ) else : set_tgt_item( new_data, name, tmp, ExposureProgram_TAGS ) # 測光方式(MeteringMode) name = '測光方式' exiftmp = get_src_item( data, 'EXIF MeteringMode' ) if make == 'Canon': tmp = get_src_item( data, 'MakerNote MeteringMode' ) if tmp != 'None' : exiftmp = tmp set_tgt_item( new_data, name, exiftmp, MeteringMode_TAGS ) # AFモード(AF Mode) name = 'AFモード' tmp = 'None' if make in ('NIKON', 'NIKON CORPORATION') : tmp = get_src_item( data, 'MakerNote FocusMode' ) if make == 'Casio' : tmp = get_src_item( data, 'MakerNote FocusingMode' ) if make == 'FUJIFILM': tmp = get_src_item( data, 'MakerNote FocusMode' ) if make == 'Canon': tmp = get_src_item( data, 'MakerNote FocusMode' ) set_tgt_item( new_data, name, tmp, FocusMode_MAKER_TAGS ) # マクロモード(Macro Mode) name = 'マクロモード' tmp = 'None' if make[:7] == 'OLYMPUS' : tmp = get_src_item( data, 'MakerNote Macro' ) if make == 'Casio' : tmp = "AFモード参照" if make == 'FUJIFILM': tmp = get_src_item( data, 'MakerNote Macro' ) if make == 'Canon': tmp = get_src_item( data, 'MakerNote Macromode' ) set_tgt_item( new_data, name, tmp ) # ドライブモード(Drive Mode) Canon Only name = 'ドライブモード' set_tgt_item( new_data, name, get_src_item( data, 'MakerNote ContinuousDriveMode' ), ContinuousDriveMode_CANON_TAGS ) # 最小F値(MaxApertureValue) name = '最小F値' tmp = data.get('EXIF MaxApertureValue', 'None') if tmp != 'None' : new_data[name] = tmp # レンズ(LensInfo) name = 'レンズ' tmp_s = data.get('MakerNote ShortFocalLengthOfLensInFocalUnits','None') tmp_l = data.get('MakerNote LongFocalLengthOfLensInFocalUnits','None') if (tmp_s != 'None') and (tmp_l != 'None') : if tmp_s == tmp_l : new_data[name] = "%s(単焦点)" % (tmp_s) else : tmp_s = tmp_s.replace('mm','') new_data[name] = "%s-%s" % (tmp_s, tmp_l) #new_data.keys.sort() return new_data