def random_cards_from_filter(filter): filter = '({}) ({})'.format(valid_set_filter(), filter) parsed_filter = urllib.parse.quote_plus(filter) url = 'http://magiccards.info/query?q={!s}&v=card&s=cname'.format(parsed_filter) if regex.page_contains_regex(url, 'Your\squery\sdid\snot\smatch\sany\scards'): raise StopIteration try: card_count = int(regex.first_match_from_page(url, '(?<=\s\s)\d*(?=\scards)')) except: card_count = 1 card_numbers_list = random_arrangement_of_numbers(card_count) for number in card_numbers_list: card_page_number = int(number / 20 + 1) card_number_on_page = number % 20 + 1 list_url = 'http://magiccards.info/query?q={!s}&s=cname&v=card&p={!s}'.format(parsed_filter, str(card_page_number)) cards_on_page = regex.all_matches_from_page(list_url, '(?<=info/scans/en/)[^/]*/\d*[ab]*') yield cards_on_page[card_number_on_page - 1]
def spoiler_page_html(set): matches = regex.all_matches_from_page(spoiler_page(set), 'cards/[^\s]*\.jpg') return matches