클라에서 요청할때마다 영상이 동일하면 캐싱하고 아니면 업로드하는데
일단 이전 요청 동영상이랑 이후 요청 동영상이랑 동일한지 판별하려면 해싱후 하는방법이 있다.
근데 영상의 제목으로만 하면 당연히 같은 영상인데 제목만 같을 수 도 있으니 파일 자체 읽어 해싱을 한다.
def generate_file_hash(file_path):
"""파일의 SHA256 해시를 생성합니다."""
sha256_hash = hashlib.sha256()
with open(file_path, "rb") as f:
for byte_block in iter(lambda: f.read(4096), b""):
sha256_hash.update(byte_block)
return sha256_hash.hexdigest()
1. 파일 열기 (with open(file_path, "rb") as f)
- open 함수는 파일을 열고 파일 객체를 반환합니다.
- file_path는 파일의 경로입니다.
- "rb" 모드는 파일을 바이너리 읽기 모드로 열도록 지정합니다. 이는 텍스트가 아닌 바이너리 파일을 처리할 때 필요합니다.
- with 문을 사용하면 파일을 자동으로 닫아줍니다. 이는 파일 사용이 끝난 후 파일을 닫는 것을 보장합니다.
2. 파일 내용을 읽어 SHA-256 해시 업데이트 (for byte_block in iter(lambda: f.read(4096), b""))
- iter(lambda: f.read(4096), b"")는 파일을 4096 바이트씩 읽어들이는 반복자를 생성합니다.
- f.read(4096)는 파일에서 최대 4096 바이트를 읽습니다. 읽을 데이터가 더 이상 없으면 빈 문자열 또는 빈 바이트열을 반환합니다.
- iter 함수는 첫 번째 인자로 주어진 함수(lambda: f.read(4096))를 반복 호출하고, 두 번째 인자인 b""가 반환되면 반복을 종료합니다.
- lambda: f.read(4096)는 4096 바이트씩 파일을 읽는 익명 함수입니다.
- for byte_block in iter(lambda: f.read(4096), b"")는 파일을 4096 바이트씩 읽어 byte_block 변수에 할당하고 반복합니다.
- sha256_hash.update(byte_block)는 읽어들인 바이트 블록을 해시 객체에 추가하여 해시 값을 업데이트합니다.
3. 해시 값 반환 (return sha256_hash.hexdigest())
- sha256_hash.hexdigest()는 최종 해시 값을 16진수 문자열로 반환합니다.
'Gemini 작업' 카테고리의 다른 글
히스토리,컨택스트 캐싱 이용하면서 히스토리 적용 (0) | 2024.08.08 |
---|---|
이미지,동영상을 서버에 저장 안하고 바로 Gemini요청하기 (0) | 2024.07.24 |
Flask,Gemini 에러 or 호환 관련 (0) | 2024.07.19 |
Flask,Gemini (0) | 2024.07.18 |
파이썬 가상환경 (0) | 2024.07.18 |