Sh4n3e
[Python] iPhone으로 찍은 사진의 Timestamp를 파일명으로 바꾸기 본문
중복된 사진을 제거했다. 하지만 뒤죽박죽 섞여있는 사진파일들... 게다가 서로다른 기기로 찍은 사진이 뒤섞여있었다.(아이폰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(0, 100): 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 |
'Programming > Python' 카테고리의 다른 글
[Python] 웹 크롤러(Web Crawler)를 제작해보자 (1) | 2018.03.13 |
---|---|
[Python] Unicode JSON을 Ascii 형태의 Dictionary로 변환 그리고 CSV로 저장하기 (0) | 2017.11.03 |
[Python] PIL을 이용한 exif정보를 통해 JPG파일의 이름을 타임스탬프로 변경하기 (0) | 2017.10.29 |
[Python] Urllib 사용법, Url 라이브러리 사용법 (0) | 2017.09.08 |
[Python] 이름만 다른 동일 파일 삭제하기 (0) | 2017.08.20 |
Comments