import cv2
from datetime import datetime, timedelta

def convert_date(date):
    
    return datetime.strptime(date, '%Y-%M-%d')

# def get_most_ads(number,one_day):
#     list_sorted=sorted(zip(one_day['frequency'].tolist(), one_day['add_name'].tolist()), reverse=True)
#     result=[]
    
#     #result.append(item[1] for item in list_sorted if item[0]>=number)
#     return ' '.join([item[1] for item in list_sorted if item[0]>=number])

def get_most_ads(number,one_day):
    list_sorted=sorted(zip(one_day['add_name'].tolist(), one_day['frequency'].tolist()), reverse=True)
    
    js={}
    #result.append(item[1] for item in list_sorted if item[0]>=number)
    result=[item for item in list_sorted if item[1]>=number]
    
    return dict(result)

def max_min(each_day):
    max_value=max(each_day['add_name'].tolist())
    min_value=min(each_day['add_name'].tolist())
    index_max=each_day['add_name'].tolist().index(max_value)
    index_min=each_day['add_name'].tolist().index(min_value)
    return max_value, each_day['day'].iloc[index_max] ,min_value, each_day['day'].iloc[index_min]

def compare_image(img1,img2):
    img1=cv2.imread(img1)
    img2=cv2.imread(img2)

    sift = cv2.xfeatures2d.SIFT_create()
    kp_1, desc_1 = sift.detectAndCompute(img1, None)
    kp_2, desc_2 = sift.detectAndCompute(img2, None)

    index_params = dict(algorithm=0, trees=5)
    search_params = dict()
    flann = cv2.FlannBasedMatcher(index_params, search_params)
    matches = flann.knnMatch(desc_1, desc_2, k=2)
    
    good_points = []
    ratio = 0.2
    for m, n in matches:
        if m.distance < ratio*n.distance:
            good_points.append(m)

    return len(good_points)