Exemple #1
0
def insert_chars_from_guild(realm, guild_name, chars_to_scan):
    data = load_json_from_url(GUILD_API_URL.format(region=realm.region, realm=realm.name, guild_name=guild_name))

    # sometimes api returns error for a valid guild name
    try:
        members = data["members"]
    except KeyError:
        logging.exception("No data return for guild name: %s, realm: %s" % (guild_name, realm.name))
        return

    for member in members:
        name = member["character"]["name"]

        # sometimes there is a character without realm. Possibly because it was deleted/transferred/renamed recently
        realm_name = member["character"].get("realm")
        if realm_name is None:
            continue

        realm = get_realm(realm.region, realm.name)
        char = Character()
        char.name = name
        char.realm = realm
        char.retrieve_guild = False
        if not session.query(Character).filter(Character.name == char.name,
                                               Character.realm == char.realm).first() and char not in session:
            session.add(char)
            chars_to_scan.append(char)
    session.commit()
Exemple #2
0
def insert_chars_from_auc(realm):
    """
    Insert all player characters represented in auction house into database
    note: realm names in auction house dump are always localised, with spaces removed
    """
    auc_data = load_auction_data(realm)
    region = realm.region
    unique_auc_chars = set((lot["owner"], lot["ownerRealm"]) for lot in auc_data["auctions"]["auctions"])
    print("Unique chars currently on %s auction house: %d" % (realm.name, len(unique_auc_chars)))
    for name, realm_name_localised in unique_auc_chars:
        realm = get_realm(region, realm_name_localised)
        char = Character()
        char.name = name
        char.realm = realm
        char.retrieve_guild = True
        if not session.query(Character).filter(Character.name == char.name,
                                               Character.realm == char.realm).first():
            session.add(char)
    session.commit()