예제 #1
0
def main():
    """
    Main function
    """
    parser = argparse.ArgumentParser(description='Get the progression information for a character')
    parser.add_argument('usernames', metavar='USERNAME', type=str, nargs='+',
                        help='usernames to check')
    args = parser.parse_args()

    #API_KEY = os.environ['DESTINY_API_KEY'].strip()
    DESTINY.login()

    for username in args.usernames:
        person = Person(username=username)

        ## Get next faction to level up
        for character in person.getCharacters():
            for advisor_info in character.getAdvisors()\
                    ['activityAdvisors'].values():
                activity_advisor = ActivityAdvisor(advisor_info)
                pprint(activity_advisor)
                #pprint(activity_advisor.manifest)
                print

            print
    return 0
action_factions = [
    "faction_pvp_dead_orbit",
    "faction_pvp_future_war_cult",
    "faction_pvp_new_monarchy",
    #'faction_fotc_vanguard'
]

for username in args.usernames:
    p = Person(username=username)

    ## Get next faction to level up
    faction_info = {}
    vanguard_info = {}
    gunsmith_info = {}
    crucible_info = {}
    for c in p.getCharacters():
        progressions = c.getProgression()
        keys = progressions.keys()
        keys.sort()

        for k in keys:
            ## Skip unknown junk
            if k in action_factions:
                faction = Faction(k)
                label = "%s - %s" % (c, faction.human_readable_name)
                faction_info[label] = progressions[k]["pointsToNextLevel"]
            elif k == "faction_fotc_vanguard":
                vanguard_info[c] = progressions[k]["pointsToNextLevel"]
            elif k == "faction_pvp":
                crucible_info[c] = progressions[k]["pointsToNextLevel"]
            elif k == "r1_s4_factions_gunsmith":
예제 #3
0
def main():
    """
    Main function
    """
    utc = UTC()
    now = datetime.now(utc)
    parser = argparse.ArgumentParser(description='Get the progression information for a character')
    parser.add_argument('usernames', metavar='USERNAME', type=str, nargs='+',
                        help='usernames to check')
    parser.add_argument('--include-raids', '-r', help="Include Raids in listing",
                        action='store_true')
    parser.add_argument('--include-patrols', '-p', help="Include Patrols in listing",
                        action='store_true')
    parser.add_argument('--pvp', help="Only show PvP missions", action='store_true')
    parser.add_argument('--pve', help="Only show PvE missions", action='store_true')
    parser.add_argument('--class-filter', '-c', help="Only show this character class",
                        metavar="CLASS", choices=['Hunter', 'Warlock', 'Titan'])
    args = parser.parse_args()

    #API_KEY = os.environ['DESTINY_API_KEY'].strip()
    DESTINY.login()

    if not args.pvp and not args.pve:
        pv_display = 'all'
    elif args.pvp and args.pve:
        pv_display = 'all'
    elif args.pvp:
        pv_display = 'pvp'
    elif args.pve:
        pv_display = 'pve'
    else:
        sys.stderr.write("WTF, how did we get here?")
        sys.exit(2)

    if args.class_filter:
        class_filter = args.class_filter
    else:
        class_filter = None


    for username in args.usernames:
        person = Person(username=username)

        ## Get next faction to level up
        for character in person.getCharacters():
            if class_filter and (class_filter != character.classname):
                continue
            print character
            tasks = []


            ## TODO:  Handle: 'armsDay', 'events'
            for quest_info in character.getAdvisors()['quests']['quests']:
                quest = QuestItem(quest_info)
                task = Task(quest)
                tasks.append(task)

            for bucket in character.get_inventory_items():
                if bucket.manifest['bucketName'] != 'Bounties':
                    continue
                for bounty in bucket.inventory_items:
                    #print bounty.manifest['itemTypeName'], bounty.manifest['values']
                    task = Task(bounty, needs_pickup=None)
                    tasks.append(task)

            for vendor_info in character.getAdvisors()['vendorAdvisors'].values():
                ## Just skip if it's not bounties
                if 'pendingBounties' not in vendor_info:
                    continue
                for bounty_info in vendor_info['pendingBounties']['saleItems']:
                    inventory_item = InventoryItem(bounty_info['item'])
                    task = Task(inventory_item, needs_pickup=True)
                    tasks.append(task)

            for advisor_info in character.getAdvisors()['weeklyCrucible']:
                tasks.append(Task(ActivityAdvisor(advisor_info)))


            for advisor_info in character.getAdvisors()\
                    ['activityAdvisors'].values():
                activity_advisor = ActivityAdvisor(advisor_info)

                #pprint(activity_advisor.manifest)
                #pprint(activity_advisor['activity'].manifest['rewards'])

                ## Skip if we aren't looking at raids
                if activity_advisor['activity'].\
                        activity_type.manifest['activityTypeName'] == 'Raid':
                    if not args.include_raids:
                        continue

                ## Skip if we aren't looking at patrols
                if activity_advisor['activity'].\
                        activity_type.manifest['activityTypeName'] == 'Patrol':
                    if not args.include_patrols:
                        continue

                tasks.append(Task(activity_advisor))


            for task in tasks:
                if task.is_completed:
                    continue
                if not pv_display == 'all':
                    if pv_display == 'pvp' and task.pv_type.lower() != 'pvp':
                        continue
                    elif pv_display == 'pve' and task.pv_type.lower() != 'pve':
                        continue

                data = "%-4s %-14s %s: %s" % (
                    task.pv_type, "%s (%s)" % (task.task_type, task.reputation), task.name,
                    task.description.replace('\n', ' ').replace('\r', ''))
                if task.needs_pickup:
                    data = data + " (Needs Pickup)"
                terminal_width = get_terminal_width()
                data = data.encode('ascii', 'ignore')
                if len(data) > terminal_width:
                    print data[:terminal_width - 3], '..'
                else:
                    print data
    return 0
def main():
    """
    Main function
    """
    parser = argparse.ArgumentParser(description="Get the progression information for a character")
    parser.add_argument("usernames", metavar="USERNAME", type=str, nargs="+", help="usernames to check")
    args = parser.parse_args()

    # API_KEY = os.environ['DESTINY_API_KEY'].strip()
    DESTINY_CLAN_ID = os.environ["DESTINY_CLAN_ID"].strip()
    DESTINY = Destiny()
    DESTINY.login()

    remaining_warning = {"Glimmer": 3000, "Legendary Marks": 20, "Silver": None}

    material_names = ["Spinmetal", "Spirit Bloom", "Relic Iron", "Helium Filaments"]

    ammo_names = ["Heavy Ammo Synthesis", "Special Ammo Synthesis", "Ammo Synthesis"]

    from collections import Counter

    item_counts = Counter()
    for username in args.usernames:
        person = Person(username=username)
        for c in person.getCharacters():
            for bucket in c.get_inventory_items():
                item_counts += bucket.count_items()

        c = person.getCharacters()[0]
        c.get_character_complete()
        for curren in c.character_complete["inventory"]["currencies"]:
            c_obj = Currency(curren["itemHash"])
            remaining_credits = c_obj["maxStackSize"] - curren["value"]
            warning_level = remaining_warning.get(c_obj["itemName"], None)
            if not warning_level:
                continue

            if remaining_credits <= warning_level:
                print "%s is close to max level (%s away)" % (c_obj["itemName"], remaining_credits)

        for bucket in DESTINY.get_vault():

            if bucket["bucketName"] != "General":
                continue

            item_counts += bucket.count_items()

    ## Show stuff to buy here
    import operator

    sorted_counts = sorted(item_counts.items(), key=operator.itemgetter(1))
    print "Need to blow some glimmer?  Here are your ammo synth levels:"
    for material_name, material_count in sorted_counts:
        if material_name not in ammo_names:
            continue
        print "%-23s %-6s" % (material_name, material_count)
    print
    print "Need to blow some marks?  Here are the material totals across your account:"
    for material_name, material_count in sorted_counts:
        if material_name not in material_names:
            continue
        print "%-17s %-6s" % (material_name, material_count)
    return 0