def METHOD_NAME(self):
    """
    Run Medal Shop
    """
    # Base case; exit run if filter empty
    if not self.shop_filter:
        return
    # When called, expected to be in
    # correct Medal Shop interface
    logger.hr('Medal Shop', level=1)
    self.wait_until_medal_appear()
    # Execute buy operations
    MEDAL_SHOP_SCROLL.set_top(main=self)
    while 1:
        self.shop_buy()
        if MEDAL_SHOP_SCROLL.at_bottom(main=self):
            logger.info('Medal shop reach bottom, stop')
            break
        else:
            MEDAL_SHOP_SCROLL.next_page(main=self, page=0.66)
            del_cached_property(self, 'shop_grid')
            del_cached_property(self, 'shop_medal_items')
            continue