diff --git a/src/yanlib.py b/src/yanlib.py index 6004c4f..8653d0b 100644 --- a/src/yanlib.py +++ b/src/yanlib.py @@ -21,9 +21,6 @@ # yandereBot, or manipulate hash files in some way. Typically instantiating a yandereBot object is unnecessary for this. import os -import datetime -import shutil -import contextlib # Requires properly formatted MD5 checksum lines. @@ -75,33 +72,34 @@ class HashObject: # Checking for the binary character when comparing hash string is usually overkill since the CoreUtils package reads # files in binary mode regardless of whether the -b switch is passed. # It is included here since it may be useful for some other applications besides the bot. -def is_matching_atter_binary(v_list, v_hash, v_atter): - atter_bin = "get_binary_char" +def is_matching_atter_binary(v_list, v_hash, callback): return next( (x for x in v_list if - getattr(v_hash, v_atter)() == getattr(x, v_atter)() and - getattr(v_hash, atter_bin)() == getattr(x, atter_bin)() + callback(v_hash) == callback(x) and + v_hash.get_binary_char() == x.get_binary_char() ), None) -def is_matching_atter(v_list, v_hash, v_atter): - return next((x for x in v_list if getattr(v_hash, v_atter)() == getattr(x, v_atter)()), None) +def is_matching_atter(v_list, v_hash, callback): + return next( + (x for x in v_list if + callback(v_hash) == callback(x) + ), None) - -def get_matching(v_list, v_hash, atter, match_bin=False): - return is_matching_atter(v_list, v_hash, atter) if not match_bin else is_matching_atter_binary(v_list, v_hash, atter) +def get_matching(v_list, v_hash, callback, match_bin=False): + return is_matching_atter(v_list, v_hash, callback) if not match_bin else is_matching_atter_binary(v_list, v_hash, callback) def get_matching_hash_in_list(v_list, v_hash, match_bin=False): - return get_matching(v_list, v_hash, "get_hash_string", match_bin) + return get_matching(v_list, v_hash, lambda x: x.get_hash_string(), match_bin) def get_matching_path_in_list(v_list, v_hash, match_bin=False): - return get_matching(v_list, v_hash, "get_hash_path", match_bin) + return get_matching(v_list, v_hash, lambda x: x.get_hash_path(), match_bin) def get_matching_full_string_in_list(v_list, v_hash, match_bin=False): - return get_matching(v_list, v_hash, "get_full_string", match_bin) + return get_matching(v_list, v_hash, lambda x: x.get_full_string(), match_bin) # ---------------------------- HASH LIST FUNCTIONS --------------------------------------------