프로필 보기
hitomi 파일 목록 관리법 (윈도우+mihon)
이 코드로 저장된 이름을 기준으로 설명해보겠습니다

작품 파일이 저장된 폴더에서 데이터 가져옵니다

로드 선택

A열에 이름이 쫙 뜹니다

A열 전체 선택, 복사 후 다른 엑셀 파일 A열에 이런식으로 붙여넣기해주면 됩니다
B2셀에 들어가야 하는 수식은
=MID(A2, SEARCH("p", A2) + 1, 4)
C2셀에 들어가야 하는 수식은
=MID(A2, FIND("{", A2) + 1, FIND("}", A2) - FIND("{", A2) - 1)
그리고 B2, C2셀 클릭 한뒤 + 클릭하면 알아서 쭉 채워집니다
이런식으로 엑셀로 다운받은 작품 목록 관리하고 있습니다
그리고 mihon 앱 서재에 저장한 것만 따로 관리하고도 있는데(북마크한 작품 느낌?)

이런 백업 파일을 json 파일로 변환해 줘야 합니다
변환은
https://backup.mihon.tools/
이 사이트에서 변환해주면 됩니다

Download Backup에서 JSON 클릭하면 다운받아집니다.
이제 json 파일을 분석해서 서재에 저장된 lrr 항목만 추출해야 합니다
아래 코드를 활용하면 됩니다
import json
import re
import os
def extract_hitomi_numbers_from_categories(json_file_path):
"""
JSON 데이터에서 `categories`가 포함된 항목의 Hitomi.la URL에서 숫자를 추출.
:param json_file_path: JSON 파일 경로
:return: 중복 제거된 숫자 리스트
"""
try:
with open(json_file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
extracted_numbers = set() # 중복 제거를 위한 set
for manga in data.get("backupManga", []):
# `categories`가 있는 항목만 처리
if "categories" in manga:
for genre_item in manga.get("genre", []):
# `source:`로 시작하는 Hitomi.la URL 찾기
if isinstance(genre_item, str) and genre_item.startswith("source:"):
match = re.search(r"https://hitomi\.la/galleries/(\d+)\.html", genre_item)
if match:
extracted_numbers.add(match.group(1)) # 숫자만 추출하여 추가
return list(extracted_numbers) # 중복 제거된 숫자 리스트 반환
except (FileNotFoundError, json.JSONDecodeError) as e:
print(f"오류 발생: {e}")
return []
def find_matching_filenames(numbers, folder_path):
"""폴더 내 파일명에서 숫자와 비교해 일치하는 파일명을 추출하며 중복 제거 및 정확한 {숫자} 매칭."""
try:
matching_filenames = set() # 중복 제거를 위해 set 사용
for filename in os.listdir(folder_path):
# 파일명에서 {숫자} 패턴 추출
match = re.search(r'\{(\d+)\}', filename)
if match:
file_number = match.group(1)
# 정확히 {숫자} 매칭 확인
if f"{{{file_number}}}" in [f"{{{n}}}" for n in numbers]:
matching_filenames.add(filename)
return list(matching_filenames) # 최종적으로 리스트로 반환
except FileNotFoundError:
print("폴더를 찾을 수 없습니다.")
return []
def save_to_file(data, output_file_path):
"""결과를 파일로 저장합니다."""
try:
with open(output_file_path, 'w', encoding='utf-8') as output_file:
for line in data:
output_file.write(line + '\n')
print(f"결과가 {output_file_path}에 저장되었습니다.")
except Exception as e:
print(f"파일 저장 오류: {e}")
# 메인 실행 로직
def main():
json_file_path = r'D:\mihon\EditedBackup.json'
folder_path = r'D:\hitomi_download\zip'
filenames_output_path = r'D:\mihon\matching_filenames.txt'
# 1. JSON에서 숫자 추출
numbers = extract_hitomi_numbers_from_categories(json_file_path)
print("추출된 숫자:", numbers) # 디버깅 출력
# 2. 폴더에서 일치하는 파일명 찾기
matching_filenames = find_matching_filenames(numbers, folder_path)
print("일치하는 파일명:", matching_filenames) # 디버깅 출력
# 3. 결과 저장
save_to_file(matching_filenames, filenames_output_path)
print(f"저장된 파일명 개수: {len(matching_filenames)}")
if __name__ == '__main__':
main()
이제 코드실행하면 서재에 저장된 작품만 정확하게 matching_filenames.txt으로 파일명이 저장되었을 겁니다(읽은 기록(history)에 있는 작품은 제외)
그 파일명을 활용해서 다시 엑셀 파일로 저장, 관리하면 됩니다.
저는 이런식으로 관리하고 있습니다.
끝!





달소
서버중수
kmw_
댓글
댓글 쓰기