def main():
    for item in File.raw(
            "select sha256sum, count(id) total from file where sha256sum is not null and is_del = False group by sha256sum having total >= 2"
    ):
        sha256sum = item.sha256sum
        files = [
            file_obj
            for file_obj in File.filter(sha256sum=sha256sum, is_del=False)
        ]
        while len(files) >= 2:
            print(f"{files[0]} VS {files[1]}")
            keep_file, delete_file = keep_and_delete(files[0], files[1], rules)
            print(f"    delete: {delete_file.path}")
            print(f"      keep: {keep_file.path}")
            delete_file.is_del = True
            delete_file.save()
            os.unlink(delete_file.path)
            files.remove(delete_file)