mirror of
https://github.com/vale46n1/immich_duplicate_finder.git
synced 2025-12-13 20:35:46 +01:00
57 lines
2.5 KiB
Python
57 lines
2.5 KiB
Python
from datetime import datetime
|
|
import streamlit as st
|
|
from datetime import datetime
|
|
from api import deleteAsset, updateAsset
|
|
from db import delete_duplicate_pair
|
|
|
|
def compare_and_color_data(value1, value2):
|
|
date1 = datetime.fromisoformat(value1.rstrip('Z'))
|
|
date2 = datetime.fromisoformat(value2.rstrip('Z'))
|
|
|
|
# Compare the datetime objects
|
|
if date1 > date2: # value1 is newer
|
|
return f"<span style='color: red;'>{value1}</span>"
|
|
elif date1 < date2: # value1 is older
|
|
return f"<span style='color: green;'>{value1}</span>"
|
|
else: # They are the same
|
|
return f"{value1}"
|
|
|
|
def compare_and_color(value1, value2):
|
|
if value1 > value2:
|
|
return f"<span style='color: green;'>{value1}</span>"
|
|
elif value1 < value2:
|
|
return f"<span style='color: red;'>{value1}</span>"
|
|
else:
|
|
return f"{value1}"
|
|
|
|
def display_asset_column(col, asset1_info, asset2_info, asset_id_1,asset_id_2, server_url, api_key):
|
|
details = f"""
|
|
- **File name:** {asset1_info[1]}
|
|
- **Photo with ID:** {asset_id_1}
|
|
- **Size:** {compare_and_color(asset1_info[0], asset2_info[0])}
|
|
- **Resolution:** {compare_and_color(asset1_info[2], asset2_info[2])}
|
|
- **Lens Model:** {asset1_info[3]}
|
|
- **Created At:** {compare_and_color_data(asset1_info[4], asset2_info[4])}
|
|
- **Original Path:** {asset1_info[5]}
|
|
- **Is Offline:** {'Yes' if asset1_info[6] else 'No'}
|
|
- **Is Trashed:** {'Yes' if asset1_info[7] else 'No'}
|
|
- **Is Favorite:** {'Yes' if asset1_info[8] else 'No'}
|
|
"""
|
|
with col:
|
|
st.markdown(details, unsafe_allow_html=True)
|
|
delete_button_key = f"delete-{asset_id_1}"
|
|
delete_button_label = f"Delete {asset_id_1}"
|
|
if st.button(delete_button_label, key=delete_button_key):
|
|
try:
|
|
if deleteAsset(server_url, asset_id_1, api_key):
|
|
st.success(f"Deleted photo {asset_id_1}")
|
|
st.session_state[f'deleted_photo_{asset_id_1}'] = True
|
|
st.session_state['show_faiss_duplicate'] = True
|
|
st.session_state['generate_db_duplicate'] = False
|
|
#remove from asset db
|
|
delete_duplicate_pair(asset_id_1,asset_id_2)
|
|
else:
|
|
st.error(f"Failed to delete photo {asset_id_1}")
|
|
except Exception as e:
|
|
st.error(f"An error occurred: {str(e)}")
|
|
print(f"Failed to delete photo {asset_id_1}: {str(e)}") |