Sh4n3e

[Python] iPhone으로 찍은 사진의 Timestamp를 파일명으로 바꾸기 본문

Programming/Python

[Python] iPhone으로 찍은 사진의 Timestamp를 파일명으로 바꾸기

sh4n3e 2017. 8. 20. 18:38

중복된 사진을 제거했다. 하지만 뒤죽박죽 섞여있는 사진파일들... 게다가 서로다른 기기로 찍은 사진이 뒤섞여있었다.(아이폰6, 아이폰6s)


사진 파일 내부를 들여다 보니 JPG파일 안에 Timestamp가 박혀있다는 것을 확인할 수 있었다.

해당 파일을 좀더 구체적으로 분석하면 좋았겠지만, 귀찮은 관계로 그냥 대충 Parsing하여 원하는대로 파일의 이름을 파일에 박혀있는 Timestamp로 변경하였다.


프로그램의 로직은 아래와 같다.

1. 폴더내 대상 파일들의 리스트를 가져온다.

2. 파일 포인터를 일정부분 이후로 Jump시킨다. (file.seek())

3. 그 위치로부터 해당 핸드폰이 iPhone6인지 iPhone6s인지 구분한다.

3. 그리고 +25 byte 위치에 있는 Timestamp를 추출한다.

4. Timestamp로 파일 이름을 바꾼다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#Extract iphone 6 & iphone 6S timestamp
import os, sys
 
file_list = []
cnt = 0
 
def filelist(path):
    global file_list
    global cnt
 
    file_list = os.listdir(path)
    file_list.sort()
    cnt = len(file_list)
 
def getTimestamp(path):
    originpath = '/Users/leekeezz/Desktop/picture/plus'
    v1 = 152
    file = open(path, 'rb')
    for i in range(0100):
        file.seek(v1+i)
        buf = file.read(9)
        #print buf
        if buf == 'iPhone 6s':
            file.read(25)
            buf = file.read(19)
            file.close()
            try :
                os.rename(path, originpath+ '/' +buf + '.JPG')
            except os.error:
                print 'error %s'%path
            break
        elif buf == 'iPhone 6'+'\x00':
            file.read(25)
            buf = file.read(19)
            file.close()
            try :
                os.rename(path, originpath + '/' +buf + '.JPG')
            except os.error:
                print 'error %s'%path
            break
 
 
path = '/Users/leekeezz/Desktop/picture/plus'
filelist(path)
 
for i in file_list:
    forTimestamp = path + '/' + i
    print forTimestamp
    if forTimestamp == '/Users/leekeezz/Desktop/picture/plus/.DS_Store':
        continue
    getTimestamp(forTimestamp)
 
cs

 

Comments