반응형
Takeout 폴더 안에 있는 미디어 파일에 대한 정리를 하고 싶다. 아래 기준으로 처리하고 싶다. │
1. 새롭게 분류된 미디어 파일들은 Takeout 폴더 안의 '재분류'폴더에 저장되게 한다.
2. 미디어 파일명+'.supplemental.metadata.json' 파일이 있다면, 그 파일에 있는 json형식으로 저장된 사진촬영일시인 photoTakenTime 정보와 사진촬영 위치가 저장된 geoData를 미디어의 EXIF 정보에 업데이트를 한다.
3. 미디어 파일은 촬영일자 기준으로 'YYYYMMDD'형태의 폴더 안에 이동되게 한다. 촬영일자가 없는 미디어는 'UNKNOWN' 폴더 내에 보관한다.
4. 각각의 원본 미디어 파일은 분류된 폴더로 이동되도록 한다.
5. 분류된 각 화일의 화일명은 'YYYYMMDD_일련번호' 형태로 파일이 중복되지 않도록 저장된다.
6. 분류가 모두 마치고 난 뒤에는 각 폴더 내에 완전히 동일한 파일이 있다면 한 개 파일만 제외하고 파일명 뒤에 'DEL_'을 추가한다.
7. 동일 파일에 대한 분류를 마치고 난 후에는 각 폴더 내의 미디어 파일에 대해 유사도 90% 수준의 파일을 찾아서, 유사한 미디어 파일 중에서 가장 큰 미디어 파일만 제외하고, 나머지 유사한 파일의 파일명 끝에 'SIM'을 붙이도록 한다.
8. exif 정보 업데이트를 위해서, 네가 필요한 파이썬 프로그램을 만들어서 수행하게 해줘.
9. 유사도에 대한 판단을 하는 것도 파이썬 프로그램을 만들어서 수행되게 해줘.
[작업 목표]
/Users/igi/Downloads/Takeout 폴더 내의 미디어 파일들을 내용 및 메타데이터를 기반으로 분류하고 정리합니다.
[세부 정리 규칙]
1. 대상 폴더: 새롭게 분류된 미디어 파일들은 /Users/igi/Downloads/Takeout/재분류 폴더에 저장됩니다.
2. EXIF 정보 업데이트:
* 미디어 파일과 동일한 이름의 .json 파일(파일명.확장자.json 형태)이 존재할 경우,
해당 JSON 파일 내의 photoTakenTime (사진 촬영 일시) 및 geoData (사진 촬영 위치)
정보를 미디어 파일의 EXIF 정보에 업데이트합니다.
* 필수 라이브러리: 이 기능을 위해 piexif 라이브러리가 필요합니다. (pip install
piexif)
3. 날짜별 폴더 분류:
* 미디어 파일은 촬영 일자(JSON photoTakenTime > 기존 EXIF DateTimeOriginal >
파일 수정 시간 순서)를 기준으로 YYYYMMDD 형태의 폴더 안에 이동됩니다.
* 촬영 일자를 알 수 없는 미디어는 UNKNOWN 폴더 내에 보관됩니다.
4. 원본 파일 이동: 각 원본 미디어 파일은 분류된 YYYYMMDD 또는 UNKNOWN 폴더로
이동됩니다.
5. 파일명 변경: 분류된 각 파일의 파일명은 YYYYMMDD_일련번호.확장자 형태로 변경되어
파일 중복을 방지합니다.
6. 완전 동일 파일 처리:
* 각 날짜별 폴더 내에 완전히 동일한 파일(MD5 해시 기준)이 여러 개 있을 경우, 한
개의 파일만 제외하고 나머지 파일의 파일명 뒤에 _DEL 접미사를 추가합니다.
7. 유사 이미지 파일 처리 (이미지 파일에만 해당):
* 각 날짜별 폴더 내의 이미지 파일에 대해 유사도 90% 수준(지각 해싱의 해시 거리
기준)의 파일을 찾습니다.
* `_DEL` 접미사가 붙은 파일은 유사도 비교에서 제외합니다.
* 유사한 미디어 파일 그룹 내에서 가장 큰 미디어 파일은 파일명을 변경하지 않고
그대로 둡니다.
* 가장 큰 파일을 제외한 나머지 유사한 파일들은 기존 파일명 뒤에
_SIM_가장큰파일명(확장자제외).확장자 접미사를 추가합니다.
* 필수 라이브러리: 이 기능을 위해 imagehash 및 Pillow 라이브러리가 필요합니다.
(pip install imagehash Pillow)
[작업 목표]
'/Users/igi/Downloads/Takeout/Google 포토' 폴더 내의 미디어 파일들을 내용 및 메타데이터를 기반으로 분류하고 정리합니다.
[세부 정리 규칙]
1. 대상 폴더: 새롭게 분류된 미디어 파일들은 '/Users/igi/Downloads/Takeout/재분류' 폴더에 저장됩니다.
2. EXIF 정보 업데이트:
* 미디어 파일과 동일한 이름의 .json 파일(파일명.확장자.supplemental-metadata.json 형태)이 존재할 경우, 해당 JSON 파일 내의 photoTakenTime (사진 촬영 일시) 및 geoData (사진 촬영 위치) 정보를 미디어 파일의 EXIF 정보에 업데이트합니다.
* 필수 라이브러리: 이 기능을 위해 piexif 라이브러리가 필요합니다. (pip install piexif)
3. DB에 미디어 파일에 대한 정보를 추가한다.
* 미디어 파일이 원래 있던 절대경로와 실제 화일명, 파일크기, 미디어 형태
* 미디어 파일을 촬영한 일자(YYYYMMDD 형식)
* 미디어 파일이 촬영된 위치정보
* 미디어 파일이 다른 미디어 파일과 동일한 경우가 있을 경우 1을, 동일한 경우가 없을 경우에는 0이 저장되는 중복성 여부 필드
* 중복된 파일로 삭제가 될 대상 여부 필드
* 중복된 파일로 삭제가 될 대상 파일의 경우, 삭제되지 않고 남게 되는 미디어 파일의 이름
* 미디어 파일이 다른 미디어 파일과 유사한 경우가 있을 경우 1을, 유사한 경우가 없을 경우에는 0이 저장되는 유사도 여부 필드를 추가한다.
* 유사한 파일로 삭제가 될 대사 여부 필드
* 유사한 파일로 삭제가 될 대상 파일의 경우, 삭제되지 않고 남게 되는 미디어 파일의 이름
3. DB에 저장될 미디어 파일이 촬영된 일자 등록 기준:
* 미디어 파일은 촬영 일자(기존 EXIF DateTimeOriginal > JSON photoTakenTime 우선순위)를 기준으로 YYYYMMDD 형태의 DB에 기록된다.
* EXIF의 촬영 일시를 알 수 없는 미디어는 NULL로 등록한다.
4. 완전 동일 파일 처리:
* DB의 미디어 촬영 일자가 같은 파일 중에 완전히 동일한 파일(SHA1 해시 기준)이 여러 개 있을 경우, 한
개의 파일만 남기고 나머지는 삭제될 대상이 된다. 남게 되는 파일의 DB정보는 동일 미디어가 있다는 것을 기록한다. 하지만, 삭제될 예정인 다른 중복된 파일에 대해서는 DB에 중복된 대상이라고 기록하고 남게되는 파일명을 추가해서, 해당 DB의 레코드를 확인하면 삭제가 되는 파일과 동일한 내용을 보관하고 있는 파일이 무엇인지 알수 있도록 한다.
5. 유사 이미지 파일 처리 (이미지 파일에만 해당):
* DB의 이미지 촬영일자가 같은 이미지 파일에 대해 유사도 90% 수준(지각 해싱의 해시 거리 기준)의 파일을 찾습니다.
* 삭제대상인 미디어 파일은 유사도 비교에서 제외합니다.
* 유사한 미디어로 판단된 그룹의 모든 미디어 파일에는 유사도 여부 필드를 1로 설정한다.
* 유사한 미디어로 판단된 그룹내에서 가장 큰 미디어 파일에 대해서는 DB에 추가적인 정보를 업데이트하지는 않는다. 하지만, 그 그룹내의 다른 미디어 파일에 대해서는 DB에 유사한 파일로 삭제가 될 대상이며 그 그룹내에서 삭제안되는 파일이 무엇인지를 같이 저장하여 어떤 미디어 파일이 남게되는지를 알수 있게 한다.
6. DB에 등록된 내용을 웹에서 조회할 수 있도록 만든다.
* 전체 목록에서 삭제되는 미디어 파일은 제외한 상태로 화면에 내용이 표시되게 한다.
* 출력된 화면에는 미디어를 확인할 수 있게 썸네일을 추가한다.
* 만일, 동일한 파일이 존재할 경우에는 동일 그룹을 찾아서 동일 목록에 썸네일과 파일명을 울력한다. 중복된 미디어 파일이 여러건 있을 경우, 한 라인에 여러건이 표시되게 한다.
* 유사한 미디어 파일의 경우에도 중복 파일 처리하는 것과 비슷하게, 삭제될 미디어 썸네일을 같이 볼 수 있도록 한다.
반응형
'Jetson & 머신러닝' 카테고리의 다른 글
gemini 에서 github MCP연결하기 (4) | 2025.07.26 |
---|---|
바이브코딩(vibe coding)을 위한 gemini cli 설치 / 실행 방법 (초급용) (4) | 2025.07.26 |
ubuntu gui 원격접속 (x2go 설치) (0) | 2025.02.17 |
[3] YOLO기반의 신호등 신호 인식을 통한 신호변경 안내 및 앞 차 출발인식 시스템 구축(프로그래밍, 하드웨어 구성 포함) (0) | 2024.07.12 |
ComfyUI , manager 설치 / 실행(디퓨전.....) (0) | 2024.07.09 |