示例#1
0
def test_validate_corrections() -> None:
    all_sets = mtg_builder.determine_gatherer_sets({'all_sets': True})
    assert all_sets
    empty_card_list: List[CardDescription] = []
    for set_info in all_sets:
        with mtg_storage.open_set_config_json(set_info[1], 'r') as f:
            blob = json.load(f)
            if blob.get('SET_CORRECTIONS'):
                mtg_corrections.apply_corrections(blob['SET_CORRECTIONS'],
                                                  empty_card_list)
示例#2
0
async def test_w17(event_loop: asyncio.AbstractEventLoop) -> None:
    """
    Very basic test.  Can the scraper scrape Gatherer?
    """
    w17 = mtg_builder.determine_gatherer_sets({'sets': ['W17'], 'all_sets': False})
    builder = mtg_builder.MTGJSON(w17, loop=event_loop)
    json = await builder.build_set(w17[0], 'en')
    assert json["block"] == 'Amonkhet'
    assert json["border"] == 'black'
    assert len(json['cards']) == 30
    assert json['code'] == 'W17'
示例#3
0
async def test_chk(event_loop: asyncio.AbstractEventLoop) -> None:
    """
    Scrape Champions of Kamigawa.  Make sure those Flip Cards work.
    """
    chk = mtg_builder.determine_gatherer_sets({'sets': ['CHK'], 'all_sets': False})
    builder = mtg_builder.MTGJSON(chk, loop=event_loop)
    json = await builder.build_set(chk[0], 'en')
    lavarunner = [c for c in json['cards'] if c['multiverseid'] == 78694][0]
    assert lavarunner['name'] == 'Akki Lavarunner'
    assert lavarunner['names'] == ["Akki Lavarunner", "Tok-Tok, Volcano Born"]
    assert lavarunner["number"] == "153a"
    toktok = [c for c in json['cards'] if c['multiverseid'] == 78694][1]
    assert toktok['name'] == 'Tok-Tok, Volcano Born'
    assert toktok['names'] == ["Akki Lavarunner", "Tok-Tok, Volcano Born"]
    assert toktok["number"] == "153b"
示例#4
0
async def test_emn(event_loop: asyncio.AbstractEventLoop) -> None:
    """
    Eldrich Moon is a messy set.
    """
    emn = mtg_builder.determine_gatherer_sets({
        'sets': ['EMN'],
        'all_sets': False
    })
    builder = mtg_builder.MTGJSON(emn, loop=event_loop)
    json = await builder.build_set(emn[0], 'en')
    chittering = [c for c in json['cards'] if c['name'] == "Chittering Host"]
    # assert len(chittering) == 1
    assert chittering[0]['names'] == [
        "Graf Rats", "Midnight Scavengers", "Chittering Host"
    ]
示例#5
0
async def test_isd(event_loop: asyncio.AbstractEventLoop) -> None:
    """
    Scrape Innistrad.  Make sure those DFCs work.
    """
    isd = mtg_builder.determine_gatherer_sets({'sets': ['ISD'], 'all_sets': False})
    builder = mtg_builder.MTGJSON(isd, loop=event_loop)
    json = await builder.build_set(isd[0], 'en')
    assert len(json['cards']) == 284
    delver = [c for c in json['cards'] if c['multiverseid'] == 226749][0]
    assert delver['name'] == 'Delver of Secrets'
    assert delver['names'] == ["Delver of Secrets", "Insectile Aberration"]
    assert delver["number"] == "51a"
    aberration = [c for c in json['cards'] if c['multiverseid'] == 226755][0]
    assert aberration['name'] == 'Insectile Aberration'
    assert aberration['names'] == ["Delver of Secrets", "Insectile Aberration"]
    assert aberration['number'] == '51b'
示例#6
0
async def test_inv(event_loop: asyncio.AbstractEventLoop) -> None:
    """
    Scrape Invasion.  Make sure those Split Cards work.
    """
    inv = mtg_builder.determine_gatherer_sets({
        'sets': ['INV'],
        'all_sets': False
    })
    builder = mtg_builder.MTGJSON(inv, loop=event_loop)
    json = await builder.build_set(inv[0], 'en')
    stand = [c for c in json['cards'] if c['multiverseid'] == 20573][0]
    assert stand['name'] == 'Stand'
    assert stand['names'] == ["Stand", "Deliver"]
    assert stand["number"] == "292a"
    assert stand["layout"] == 'split'
    deliver = [c for c in json['cards'] if c['multiverseid'] == 20573][1]
    assert deliver['name'] == 'Deliver'
    assert deliver['names'] == ["Stand", "Deliver"]
    assert deliver["number"] == "292b"
    assert deliver["layout"] == 'split'
示例#7
0
    cl_args = vars(arg_parser.parse_args())

    # Get version info and exit
    if cl_args['version']:
        print(mtg_global.VERSION_INFO)
        exit(0)

    # If only full out, just build from what's there and exit
    if (cl_args['sets'] is
            None) and (not cl_args['all_sets']) and cl_args['full_out']:
        mtg_builder.create_combined_outputs()
        exit(0)

    # Global of all sets to build
    SETS_TO_BUILD = mtg_builder.determine_gatherer_sets(cl_args)

    # Start the build process
    start_time = time.time()

    card_loop: asyncio.AbstractEventLoop = asyncio.get_event_loop()
    # card_loop.set_debug(enabled=True)
    card_session = aiohttp.ClientSession(
        loop=card_loop,
        conn_timeout=60,
        read_timeout=60,
        raise_for_status=True,
        connector=aiohttp.TCPConnector(limit=200))
    card_loop.run_until_complete(main(card_loop, card_session, cl_args))

    if cl_args['full_out']: